diff --git a/packages/file-types/spatial-zarr/package.json b/packages/file-types/spatial-zarr/package.json index b39fd69a18..c11a4557bf 100644 --- a/packages/file-types/spatial-zarr/package.json +++ b/packages/file-types/spatial-zarr/package.json @@ -26,25 +26,27 @@ "dist-tsc" ], "scripts": { - "bundle": "pnpm exec vite build -c ../../../scripts/vite.config.mjs", + "bundle": "pnpm exec vite build -c ../../../scripts/vite.config2.mjs", "test": "pnpm exec vitest --run" }, "dependencies": { "@vitessce/abstract": "workspace:*", "@vitessce/error": "workspace:*", - "@vitessce/gl": "workspace:*", "@vitessce/spatial-utils": "workspace:*", "@vitessce/image-utils": "workspace:*", "@vitessce/zarr": "workspace:*", "@vitessce/config": "workspace:*", "@vitessce/globals": "workspace:*", + "@math.gl/core": "catalog:", "d3-array": "catalog:", "lodash-es": "catalog:", - "zarrita": "catalog:", "apache-arrow": "catalog:", "parquet-wasm": "catalog:", "ol": "^10.2.1" }, + "peerDependencies": { + "zarrita": "catalog:" + }, "devDependencies": { "@vitessce/types": "workspace:*", "@zarrita/storage": "catalog:" diff --git a/packages/file-types/spatial-zarr/src/ome-loaders/OmeZarrAsObsSegmentationsLoader.js b/packages/file-types/spatial-zarr/src/ome-loaders/OmeZarrAsObsSegmentationsLoader.js index 02f814dfca..b829249b50 100644 --- a/packages/file-types/spatial-zarr/src/ome-loaders/OmeZarrAsObsSegmentationsLoader.js +++ b/packages/file-types/spatial-zarr/src/ome-loaders/OmeZarrAsObsSegmentationsLoader.js @@ -1,8 +1,8 @@ import { CoordinationLevel as CL } from '@vitessce/config'; import { LoaderResult } from '@vitessce/abstract'; -import { GLSL_COLORMAP_DEFAULT } from '@vitessce/gl'; -import OmeZarrLoader from './OmeZarrLoader.js'; +import OmeZarrLoader from './OmeZarrLoader.js'; +const GLSL_COLORMAP_DEFAULT = 'plasma'; export default class OmeZarrAsObsSegmentationsLoader extends OmeZarrLoader { async load() { const { obsTypesFromChannelNames } = this.options || {}; diff --git a/packages/file-types/spatial-zarr/src/spatialdata-loaders/SpatialDataObsSegmentationsLoader.js b/packages/file-types/spatial-zarr/src/spatialdata-loaders/SpatialDataObsSegmentationsLoader.js index 14a1550c77..b3517211f5 100644 --- a/packages/file-types/spatial-zarr/src/spatialdata-loaders/SpatialDataObsSegmentationsLoader.js +++ b/packages/file-types/spatial-zarr/src/spatialdata-loaders/SpatialDataObsSegmentationsLoader.js @@ -5,12 +5,12 @@ import { CoordinationLevel as CL } from '@vitessce/config'; import { coordinateTransformationsToMatrixForSpatialData, } from '@vitessce/spatial-utils'; -import { GLSL_COLORMAP_DEFAULT, math } from '@vitessce/gl'; +import { Vector2 } from '@math.gl/core'; import { OLD_SHAPES_DEFAULT_AXES, OLD_SHAPES_DEFAULT_COORDINATE_TRANSFORMATIONS, } from './old-defaults.js'; - +const GLSL_COLORMAP_DEFAULT = 'plasma'; function getGeometryPath(path) { return `${path}/geometry`; } @@ -63,7 +63,7 @@ export default class SpatialDataObsSegmentationsLoader extends AbstractTwoStepLo // Apply transformation matrix to the coordinates const transformedCoords = polygons.map(polygon => polygon.map((coord) => { - const transformed = new math.Vector2(coord[0], coord[1]) + const transformed = new Vector2(coord[0], coord[1]) .transformAsPoint(modelMatrix); return [transformed[0], transformed[1]]; })); diff --git a/packages/file-types/spatial-zarr/src/spatialdata-loaders/SpatialDataObsSpotsLoader.js b/packages/file-types/spatial-zarr/src/spatialdata-loaders/SpatialDataObsSpotsLoader.js index 2517c9d61c..b5212911ff 100644 --- a/packages/file-types/spatial-zarr/src/spatialdata-loaders/SpatialDataObsSpotsLoader.js +++ b/packages/file-types/spatial-zarr/src/spatialdata-loaders/SpatialDataObsSpotsLoader.js @@ -6,7 +6,7 @@ import { CoordinationLevel as CL } from '@vitessce/config'; import { coordinateTransformationsToMatrixForSpatialData, } from '@vitessce/spatial-utils'; -import { math } from '@vitessce/gl'; +import { Vector2 } from '@math.gl/core'; import { OLD_SHAPES_DEFAULT_AXES, OLD_SHAPES_DEFAULT_COORDINATE_TRANSFORMATIONS, @@ -86,7 +86,7 @@ export default class SpatialDataObsSpotsLoader extends AbstractTwoStepLoader { for (let i = 0; i < this.locations.shape[1]; i++) { const xCoord = this.locations.data[0][i]; const yCoord = this.locations.data[1][i]; - const transformed = new math.Vector2(xCoord, yCoord) + const transformed = new Vector2(xCoord, yCoord) .transformAsPoint(modelMatrix); // eslint-disable-next-line prefer-destructuring this.locations.data[0][i] = transformed[0]; diff --git a/packages/file-types/zarr/package.json b/packages/file-types/zarr/package.json index 12d9f9ba9f..55e29e9115 100644 --- a/packages/file-types/zarr/package.json +++ b/packages/file-types/zarr/package.json @@ -26,7 +26,7 @@ "dist-tsc" ], "scripts": { - "bundle": "pnpm exec vite build -c ../../../scripts/vite.config.mjs", + "bundle": "pnpm exec vite build -c ../../../scripts/vite.config2.mjs", "test": "pnpm exec vitest --run" }, "dependencies": { @@ -41,11 +41,13 @@ "@vitessce/globals": "workspace:*", "d3-array": "catalog:", "lodash-es": "catalog:", - "zarrita": "catalog:", "apache-arrow": "catalog:", "parquet-wasm": "catalog:", "ol": "^10.2.1" }, + "peerDependencies": { + "zarrita": "catalog:" + }, "devDependencies": { "@vitessce/types": "workspace:*" } diff --git a/packages/file-types/zarr/src/json-fixtures/README.md b/packages/file-types/zarr/src/json-fixtures/README.md deleted file mode 100644 index d82976f4f5..0000000000 --- a/packages/file-types/zarr/src/json-fixtures/README.md +++ /dev/null @@ -1,28 +0,0 @@ -From the root of the repository: -```sh -# anndata-0.7 -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.7/anndata-csc.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.7/anndata-csc.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.7/anndata-csr.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.7/anndata-csr.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.7/anndata-dense.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.7/anndata-dense.json - -# anndata-0.8 -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.8/anndata-csc.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.8/anndata-csc.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.8/anndata-csr.adata.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.8/anndata-csr.adata.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.8/anndata-dense.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.8/anndata-dense.json - -# anndata-0.9 -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.9/anndata-csc.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.9/anndata-csc.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.9/anndata-csr.adata.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.9/anndata-csr.adata.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.9/anndata-dense.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.9/anndata-dense.json - -# anndata-0.10 -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.10/anndata-csc.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.10/anndata-csc.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.10/anndata-csr.adata.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.10/anndata-csr.adata.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/anndata-0.10/anndata-dense.zarr packages/file-types/zarr/src/json-fixtures/anndata-0.10/anndata-dense.json - -# mudata-0.2 -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/mudata-0.2/mudata-csc.zarr packages/file-types/zarr/src/json-fixtures/mudata-0.2/mudata-csc.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/mudata-0.2/mudata-csr.zarr packages/file-types/zarr/src/json-fixtures/mudata-0.2/mudata-csr.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/mudata-0.2/mudata-dense.zarr packages/file-types/zarr/src/json-fixtures/mudata-0.2/mudata-dense.json -node scripts/directory-to-memory-store.mjs packages/file-types/zarr/fixtures/mudata-0.2/mudata-dense-updated.zarr packages/file-types/zarr/src/json-fixtures/mudata-0.2/mudata-dense-updated.json -``` \ No newline at end of file diff --git a/packages/utils/image-utils/package.json b/packages/utils/image-utils/package.json index a98ad5a822..1180fa4e54 100644 --- a/packages/utils/image-utils/package.json +++ b/packages/utils/image-utils/package.json @@ -34,7 +34,8 @@ "@vitessce/spatial-utils": "workspace:*", "@vitessce/utils": "workspace:*", "@vitessce/globals": "workspace:*", - "@hms-dbmi/viv": "catalog:" + "@vivjs/loaders": "^0.16.0", + "quickselect": "^2.0.0" }, "devDependencies": { "vite": "catalog:", diff --git a/packages/utils/image-utils/src/ome-tiff-types.ts b/packages/utils/image-utils/src/ome-tiff-types.ts index cbcf5ef743..87e29b55f9 100644 --- a/packages/utils/image-utils/src/ome-tiff-types.ts +++ b/packages/utils/image-utils/src/ome-tiff-types.ts @@ -1,4 +1,4 @@ -import type { TiffPixelSource } from '@hms-dbmi/viv'; +import type { TiffPixelSource } from '@vivjs/loaders'; type DimensionOrder = 'XYZCT' | 'XYZTC' diff --git a/packages/utils/image-utils/src/ome-zarr-types.ts b/packages/utils/image-utils/src/ome-zarr-types.ts index 02ef4179d8..eafce1c412 100644 --- a/packages/utils/image-utils/src/ome-zarr-types.ts +++ b/packages/utils/image-utils/src/ome-zarr-types.ts @@ -1,4 +1,4 @@ -import type { ZarrPixelSource } from '@hms-dbmi/viv'; +import type { ZarrPixelSource } from '@vivjs/loaders'; type Channel = { channelsVisible: boolean; diff --git a/packages/utils/spatial-utils/package.json b/packages/utils/spatial-utils/package.json index a0c6b92307..4453df7549 100644 --- a/packages/utils/spatial-utils/package.json +++ b/packages/utils/spatial-utils/package.json @@ -26,18 +26,21 @@ "dist-tsc" ], "scripts": { - "bundle": "pnpm exec vite build -c ../../../scripts/vite.config.mjs", + "bundle": "pnpm exec vite build -c ../../../scripts/vite.config2.mjs", "test": "pnpm exec vitest --run" }, + "peerDependencies": { + "zarrita": "catalog:" + }, "dependencies": { - "@vitessce/gl": "workspace:*", + "@vivjs/loaders": "^0.16.0", + "quickselect": "^2.0.0", "@vitessce/utils": "workspace:*", "@vitessce/zarr-utils": "workspace:*", "@vitessce/constants-internal": "workspace:*", "@vitessce/globals": "workspace:*", "@vitessce/error": "workspace:*", "lodash-es": "catalog:", - "zarrita": "catalog:", "math.gl": "catalog:", "mathjs": "catalog:", "internmap": "catalog:" diff --git a/packages/utils/spatial-utils/src/constants.js b/packages/utils/spatial-utils/src/constants.js index 22adb8e101..c62def278f 100644 --- a/packages/utils/spatial-utils/src/constants.js +++ b/packages/utils/spatial-utils/src/constants.js @@ -1,10 +1,36 @@ -import { viv } from '@vitessce/gl'; +export const DTYPE_VALUES = { + Uint8: { + max: 2 ** 8 - 1, + }, + Uint16: { + max: 2 ** 16 - 1, + }, + Uint32: { + max: 2 ** 32 - 1, + }, + Float32: { + max: 3.4 * 10 ** 38, + }, + Int8: { + max: 2 ** (8 - 1) - 1, + }, + Int16: { + max: 2 ** (16 - 1) - 1, + }, + Int32: { + max: 2 ** (32 - 1) - 1, + }, + // Cast Float64 as 32 bit float point so it can be rendered. + Float64: { + max: 3.4 * 10 ** 38, + } +}; function getDomains() { const domains = {}; const needMin = ['Int8', 'Int16', 'Int32']; - Object.keys(viv.DTYPE_VALUES).forEach((dtype) => { - const { max } = viv.DTYPE_VALUES[dtype]; + Object.keys(DTYPE_VALUES).forEach((dtype) => { + const { max } = DTYPE_VALUES[dtype]; const min = needMin.includes(dtype) ? -(max + 1) : 0; domains[dtype] = [min, max]; }); diff --git a/packages/utils/spatial-utils/src/layer-controller.js b/packages/utils/spatial-utils/src/layer-controller.js index 31fff5da61..606491ddc5 100644 --- a/packages/utils/spatial-utils/src/layer-controller.js +++ b/packages/utils/spatial-utils/src/layer-controller.js @@ -1,4 +1,4 @@ -import { viv } from '@vitessce/gl'; +import { getChannelStats } from '@vivjs/loaders'; import { Matrix4 } from 'math.gl'; // Returns an rgb string for display, and changes the color (arr) @@ -31,7 +31,7 @@ async function getSingleSelectionStats2D({ loader, selection }) { const data = Array.isArray(loader) ? loader[loader.length - 1] : loader; const filteredSelection = filterSelection(loader, selection); const raster = await data.getRaster({ selection: filteredSelection }); - const selectionStats = viv.getChannelStats(raster.data); + const selectionStats = getChannelStats(raster.data); const { domain, contrastLimits: slider } = selectionStats; return { domain, slider }; } @@ -50,9 +50,9 @@ async function getSingleSelectionStats3D({ loader, selection }) { const rasterTop = await lowResSource.getRaster({ selection: { ...filteredSelection, z: Math.max(0, sizeZ - 1) }, }); - const stats0 = viv.getChannelStats(raster0.data); - const statsMid = viv.getChannelStats(rasterMid.data); - const statsTop = viv.getChannelStats(rasterTop.data); + const stats0 = getChannelStats(raster0.data); + const statsMid = getChannelStats(rasterMid.data); + const statsTop = getChannelStats(rasterTop.data); return { domain: [ Math.min(stats0.domain[0], statsMid.domain[0], statsTop.domain[0]), diff --git a/packages/utils/spatial-utils/src/load-ome-zarr.js b/packages/utils/spatial-utils/src/load-ome-zarr.js index 6fc3965558..3f11daf03b 100644 --- a/packages/utils/spatial-utils/src/load-ome-zarr.js +++ b/packages/utils/spatial-utils/src/load-ome-zarr.js @@ -1,4 +1,4 @@ -import { viv } from '@vitessce/gl'; +import { ZarrPixelSource } from '@vivjs/loaders'; import { open as zarrOpen } from 'zarrita'; import { createZarrArrayAdapter } from '@vitessce/zarr-utils'; import { ZarrNodeNotFoundError } from '@vitessce/error'; @@ -68,7 +68,7 @@ async function loadMultiscales(root) { }; } -export class ZarritaPixelSource extends viv.ZarrPixelSource { +export class ZarritaPixelSource extends ZarrPixelSource { constructor(arr, labels, tileSize) { super(arr, labels, tileSize); // We prevent reading chunks directly, since Zarrita does not diff --git a/packages/utils/zarr-utils/package.json b/packages/utils/zarr-utils/package.json index fe56db9bd5..94898de19c 100644 --- a/packages/utils/zarr-utils/package.json +++ b/packages/utils/zarr-utils/package.json @@ -26,15 +26,15 @@ "dist-tsc" ], "scripts": { - "bundle": "pnpm exec vite build -c ../../../scripts/vite.config.mjs", + "bundle": "pnpm exec vite build -c ../../../scripts/vite.config2.mjs", "test": "pnpm exec vitest --run" }, "dependencies": { - "zarrita": "catalog:", "@zarrita/storage": "catalog:", "@vitessce/globals": "workspace:*" }, "devDependencies": { - "unzipit": "^1.4.3" + "unzipit": "^1.4.3", + "zarrita": "catalog:" } } diff --git a/packages/utils/zarr-utils/vite.config.mjs b/packages/utils/zarr-utils/vite.config.mjs new file mode 100644 index 0000000000..87eedd8538 --- /dev/null +++ b/packages/utils/zarr-utils/vite.config.mjs @@ -0,0 +1,30 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import { serveTestFixtures, svgLoaderForNeuroglancerIcons } from '../../vite.config.mjs'; + + +export default defineConfig({ + base: './', + plugins: [ + react({ + jsxRuntime: 'classic', + }), + serveTestFixtures(), + svgLoaderForNeuroglancerIcons(), + ], + define: { + // References: + // - https://github.com/smnhgn/vite-plugin-package-version/blob/master/src/index.ts#L10 + // - https://stackoverflow.com/a/70524430 + 'import.meta.env.PACKAGE_VERSION': JSON.stringify(process.env.npm_package_version), + }, + server: { + fs: { + // Without this, Vite blocks data-URI query parameters, + // such as http://localhost:3000/?url=data:,{} + strict: false, + }, + }, +}); + + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b9a5e8a1e..a747db2c02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -731,6 +731,9 @@ importers: packages/file-types/spatial-zarr: dependencies: + '@math.gl/core': + specifier: 'catalog:' + version: 3.6.3 '@vitessce/abstract': specifier: workspace:* version: link:../abstract @@ -740,9 +743,6 @@ importers: '@vitessce/error': specifier: workspace:* version: link:../../error - '@vitessce/gl': - specifier: workspace:* - version: link:../../gl '@vitessce/globals': specifier: workspace:* version: link:../../globals @@ -1484,9 +1484,6 @@ importers: packages/utils/image-utils: dependencies: - '@hms-dbmi/viv': - specifier: 'catalog:' - version: 0.16.0(@deck.gl/core@8.8.27)(@deck.gl/geo-layers@8.8.27(@deck.gl/core@8.8.27)(@deck.gl/extensions@8.8.27(@deck.gl/core@8.8.27)(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(gl-matrix@3.4.3))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/mesh-layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/webgl@8.5.21))(@loaders.gl/core@3.2.10)(@loaders.gl/gltf@3.2.10)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/shadertools@8.5.21)(@luma.gl/webgl@8.5.21))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/react@8.8.27(@deck.gl/core@8.8.27)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/webgl@8.5.21)(react@19.1.0) '@vitessce/globals': specifier: workspace:* version: link:../../globals @@ -1499,6 +1496,12 @@ importers: '@vitessce/utils': specifier: workspace:* version: link:../other-utils + '@vivjs/loaders': + specifier: ^0.16.0 + version: 0.16.0 + quickselect: + specifier: ^2.0.0 + version: 2.0.0 devDependencies: vite: specifier: 'catalog:' @@ -1575,9 +1578,6 @@ importers: '@vitessce/error': specifier: workspace:* version: link:../../error - '@vitessce/gl': - specifier: workspace:* - version: link:../../gl '@vitessce/globals': specifier: workspace:* version: link:../../globals @@ -1587,6 +1587,9 @@ importers: '@vitessce/zarr-utils': specifier: workspace:* version: link:../zarr-utils + '@vivjs/loaders': + specifier: ^0.16.0 + version: 0.16.0 internmap: specifier: 'catalog:' version: 2.0.3 @@ -1599,6 +1602,9 @@ importers: mathjs: specifier: 'catalog:' version: 9.5.2 + quickselect: + specifier: ^2.0.0 + version: 2.0.0 zarrita: specifier: 'catalog:' version: 0.5.4 @@ -1611,13 +1617,13 @@ importers: '@zarrita/storage': specifier: 'catalog:' version: 0.1.3 - zarrita: - specifier: 'catalog:' - version: 0.5.4 devDependencies: unzipit: specifier: ^1.4.3 version: 1.4.3 + zarrita: + specifier: 'catalog:' + version: 0.5.4 packages/vega: dependencies: @@ -18028,13 +18034,6 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@deck.gl/react@8.8.27(@deck.gl/core@8.8.27)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@deck.gl/core': 8.8.27 - '@types/react': 19.1.6 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - '@discoveryjs/json-ext@0.5.7': {} '@docsearch/css@3.9.0': {} @@ -19248,26 +19247,6 @@ snapshots: - '@luma.gl/webgl' - react - '@hms-dbmi/viv@0.16.0(@deck.gl/core@8.8.27)(@deck.gl/geo-layers@8.8.27(@deck.gl/core@8.8.27)(@deck.gl/extensions@8.8.27(@deck.gl/core@8.8.27)(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(gl-matrix@3.4.3))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/mesh-layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/webgl@8.5.21))(@loaders.gl/core@3.2.10)(@loaders.gl/gltf@3.2.10)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/shadertools@8.5.21)(@luma.gl/webgl@8.5.21))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/react@8.8.27(@deck.gl/core@8.8.27)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/webgl@8.5.21)(react@19.1.0)': - dependencies: - '@vivjs/constants': 0.16.0 - '@vivjs/extensions': 0.16.0(@deck.gl/core@8.8.27) - '@vivjs/layers': 0.16.0(@deck.gl/core@8.8.27)(@deck.gl/geo-layers@8.8.27(@deck.gl/core@8.8.27)(@deck.gl/extensions@8.8.27(@deck.gl/core@8.8.27)(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(gl-matrix@3.4.3))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/mesh-layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/webgl@8.5.21))(@loaders.gl/core@3.2.10)(@loaders.gl/gltf@3.2.10)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/shadertools@8.5.21)(@luma.gl/webgl@8.5.21))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/webgl@8.5.21) - '@vivjs/loaders': 0.16.0 - '@vivjs/types': 0.16.0 - '@vivjs/viewers': 0.16.0(@deck.gl/core@8.8.27)(@deck.gl/geo-layers@8.8.27(@deck.gl/core@8.8.27)(@deck.gl/extensions@8.8.27(@deck.gl/core@8.8.27)(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(gl-matrix@3.4.3))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/mesh-layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/webgl@8.5.21))(@loaders.gl/core@3.2.10)(@loaders.gl/gltf@3.2.10)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/shadertools@8.5.21)(@luma.gl/webgl@8.5.21))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/react@8.8.27(@deck.gl/core@8.8.27)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/webgl@8.5.21)(react@19.1.0) - '@vivjs/views': 0.16.0(@deck.gl/core@8.8.27)(@deck.gl/geo-layers@8.8.27(@deck.gl/core@8.8.27)(@deck.gl/extensions@8.8.27(@deck.gl/core@8.8.27)(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(gl-matrix@3.4.3))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/mesh-layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/webgl@8.5.21))(@loaders.gl/core@3.2.10)(@loaders.gl/gltf@3.2.10)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/shadertools@8.5.21)(@luma.gl/webgl@8.5.21))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/webgl@8.5.21) - transitivePeerDependencies: - - '@deck.gl/core' - - '@deck.gl/geo-layers' - - '@deck.gl/layers' - - '@deck.gl/react' - - '@luma.gl/constants' - - '@luma.gl/core' - - '@luma.gl/engine' - - '@luma.gl/webgl' - - react - '@humanwhocodes/config-array@0.10.7': dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -22907,23 +22886,6 @@ snapshots: - '@luma.gl/engine' - '@luma.gl/webgl' - '@vivjs/viewers@0.16.0(@deck.gl/core@8.8.27)(@deck.gl/geo-layers@8.8.27(@deck.gl/core@8.8.27)(@deck.gl/extensions@8.8.27(@deck.gl/core@8.8.27)(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(gl-matrix@3.4.3))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/mesh-layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/webgl@8.5.21))(@loaders.gl/core@3.2.10)(@loaders.gl/gltf@3.2.10)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/shadertools@8.5.21)(@luma.gl/webgl@8.5.21))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/react@8.8.27(@deck.gl/core@8.8.27)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/webgl@8.5.21)(react@19.1.0)': - dependencies: - '@deck.gl/react': 8.8.27(@deck.gl/core@8.8.27)(@types/react@19.1.6)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@vivjs/constants': 0.16.0 - '@vivjs/extensions': 0.16.0(@deck.gl/core@8.8.27) - '@vivjs/views': 0.16.0(@deck.gl/core@8.8.27)(@deck.gl/geo-layers@8.8.27(@deck.gl/core@8.8.27)(@deck.gl/extensions@8.8.27(@deck.gl/core@8.8.27)(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(gl-matrix@3.4.3))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/mesh-layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/webgl@8.5.21))(@loaders.gl/core@3.2.10)(@loaders.gl/gltf@3.2.10)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/shadertools@8.5.21)(@luma.gl/webgl@8.5.21))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/webgl@8.5.21) - fast-deep-equal: 3.1.3 - react: 19.1.0 - transitivePeerDependencies: - - '@deck.gl/core' - - '@deck.gl/geo-layers' - - '@deck.gl/layers' - - '@luma.gl/constants' - - '@luma.gl/core' - - '@luma.gl/engine' - - '@luma.gl/webgl' - '@vivjs/views@0.16.0(@deck.gl/core@8.8.27)(@deck.gl/geo-layers@8.8.27(@deck.gl/core@8.8.27)(@deck.gl/extensions@8.8.27(@deck.gl/core@8.8.27)(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(gl-matrix@3.4.3))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@deck.gl/mesh-layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/webgl@8.5.21))(@loaders.gl/core@3.2.10)(@loaders.gl/gltf@3.2.10)(@loaders.gl/images@3.2.10)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/gltools@8.5.21)(@luma.gl/shadertools@8.5.21)(@luma.gl/webgl@8.5.21))(@deck.gl/layers@8.8.27(@deck.gl/core@8.8.27)(@loaders.gl/core@3.2.10)(@luma.gl/core@8.5.21))(@luma.gl/constants@8.5.21)(@luma.gl/core@8.5.21)(@luma.gl/engine@8.5.21)(@luma.gl/webgl@8.5.21)': dependencies: '@deck.gl/core': 8.8.27 diff --git a/scripts/vite.config2.mjs b/scripts/vite.config2.mjs new file mode 100644 index 0000000000..fee75625c2 --- /dev/null +++ b/scripts/vite.config2.mjs @@ -0,0 +1,60 @@ +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; +import { resolve, basename } from 'path'; +import { existsSync } from 'fs'; +import { svgLoaderForNeuroglancerIcons } from '../vite.config.mjs'; + + +const cwd = process.cwd(); + +// Need to make vit-s external for dependents (but vit-s is not dependent on itself), +// otherwise there will be issues with Zustand stores. +const moreExternals = basename(cwd) === 'vit-s' ? [] : ['@vitessce/vit-s']; + +// For bundling "sub-packages". +export default defineConfig({ + root: cwd, + build: { + emptyOutDir: true, + minify: false, + sourcemap: false, + lib: { + entry: existsSync(resolve(cwd, 'src/index.ts')) ? resolve(cwd, 'src/index.ts') : resolve(cwd, 'src/index.js'), + // The file extension used by Vite depends on whether the package.json contains "type": "module". + // Reference: https://github.com/vitejs/vite/blob/1ee0014caa7ecf91ac147dca3801820020a4b8a0/docs/guide/build.md?plain=1#L212 + fileName: 'index', + formats: ['es'], + }, + rollupOptions: { + // 👇 'zarrita' has been added here to exclude it from the bundle. + external: ['react', 'react-dom', 'zarrita', ...moreExternals], + // output.globals required for UMD builds + // (e.g., no longer used since only generating ESM build) + /* + output: { + globals: { + react: 'React', + 'react-dom': 'ReactDOM', + zarrita: 'Zarrita', // Add its global name if you use UMD/IIFE formats later + }, + }, + */ + }, + }, + define: { + 'process.env.NODE_ENV': `"${process.env.APP_ENV}"`, + }, + plugins: [ + react({ + jsxRuntime: 'classic' + }), + svgLoaderForNeuroglancerIcons(), + ], + // To enable .js files that contain JSX to be imported. + // Reference: https://github.com/vitest-dev/vitest/issues/1564 + esbuild: { + loader: 'tsx', + include: /src\/.*\.[tj]sx?$/, + exclude: [], + }, +}); \ No newline at end of file