bdsa-react-components 0.1.25 → 0.2.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.
@@ -1,6 +1,6 @@
1
1
  # bdsa-react-components - CURSOR Integration Guide
2
2
 
3
- **Version:** 0.1.25 | **Generated:** 2026-01-10T22:31:44.133Z
3
+ **Version:** 0.2.0 | **Generated:** 2026-02-05T23:14:35.677Z
4
4
 
5
5
  > This document provides everything Cursor needs to integrate and use the bdsa-react-components library.
6
6
  > Copy this entire document into your project's .cursorrules or docs folder.
@@ -184,9 +184,9 @@ A slide viewer component that integrates OpenSeadragon with Paper.js annotations
184
184
 
185
185
  ### ThumbnailGrid
186
186
 
187
- Size presets for thumbnails
187
+ Basic thumbnail grid component that displays static thumbnail images. This is a lightweight alternative to FolderThumbnailBrowser that doesn't use OpenSeadragon.
188
188
 
189
- **Example:**
189
+ **Example (Girder folder):**
190
190
 
191
191
  ```tsx
192
192
  <ThumbnailGrid
@@ -200,16 +200,52 @@ Size presets for thumbnails
200
200
  />
201
201
  ```
202
202
 
203
+ **Example (list of image URLs – no DSA fetch):**
204
+
205
+ ```tsx
206
+ const imageItems = [
207
+ { id: '1', imageUrl: 'https://...', label: 'NFT', subtitle: 'slide_001.svs', category: 'NFT' },
208
+ { id: '2', imageUrl: 'https://...', label: 'Neuritic Plaque', category: 'Neuritic Plaque' },
209
+ ]
210
+ <ThumbnailGrid
211
+ imageItems={imageItems}
212
+ thumbnailSize="l"
213
+ itemsPerPage={12}
214
+ onThumbnailClick={(item) => console.log(item)}
215
+ />
216
+ ```
217
+
218
+ **Text under each thumbnail (caption):**
219
+
220
+ - **imageItems / roiItems:** Set `label` (primary text) and/or `subtitle` (secondary). If both are set, the grid shows `"label · subtitle"`. Omit both to show no caption.
221
+ - **Girder (folderId / imageIds / items):** Caption is the DSA item's `name`.
222
+
223
+ **Example (ROI documents with URL builder):**
224
+
225
+ ```tsx
226
+ import { ThumbnailGrid, buildDsaRegionThumbnailUrl } from 'bdsa-react-components'
227
+
228
+ const roiItems = [
229
+ { id: 'roi-1', sourceImageId: 'ITEM_ID', region: { left: 1000, top: 2000, width: 2000, height: 2000 }, label: 'ROI 1', category: 'Region' },
230
+ ]
231
+ <ThumbnailGrid
232
+ apiBaseUrl="http://dsa/api/v1"
233
+ roiItems={roiItems}
234
+ getRoiThumbnailUrl={(item) => buildDsaRegionThumbnailUrl(apiBaseUrl, String(item.sourceImageId), item.region, 256)}
235
+ thumbnailSize="l"
236
+ />
237
+ ```
238
+
203
239
  **Features:**
204
240
 
205
241
  - Lightweight thumbnail grid (static images, no OpenSeadragon)
206
- - Faster loading for simple thumbnail browsing
207
- - Automatic pagination based on container size
208
- - Size presets: 's' (120px), 'm' (180px), 'l' (240px), 'xl' (320px)
209
- - Thumbnail URLs include `?width={size}` for optimized loading
242
+ - Three data modes: `folderId`/`imageIds`/`items` (Girder fetch), `imageItems` (list of URLs), `roiItems` + `getRoiThumbnailUrl` (ROI documents)
243
+ - When using `imageItems` or `roiItems`, `apiBaseUrl` is optional. Caption per item via `label` and `subtitle`.
244
+ - Optional class/category filter dropdown when any item has `category`
245
+ - Automatic pagination; S/M/L/XL size controls in all modes
210
246
  - Authentication via `apiHeaders` with optional `tokenQueryParam`
211
247
 
212
- **API Endpoints:**
248
+ **API Endpoints (Girder mode only):**
213
249
 
214
250
  - `GET /item?folderId={id}` - Fetch items from folder
215
251
  - `GET /item/{id}/tiles/thumbnail?width={size}&token={token}` - Thumbnail image
@@ -242,6 +278,9 @@ import type {
242
278
  FolderThumbnailBrowserProps,
243
279
  ThumbnailViewerProps,
244
280
  ThumbnailGridProps,
281
+ ThumbnailGridImageItem,
282
+ ThumbnailGridROIItem,
283
+ DsaRegionBounds,
245
284
  Protocol,
246
285
  ProtocolType,
247
286
  ProtocolStorage,
@@ -1 +1 @@
1
- {"version":3,"file":"DsaAuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/DsaAuthProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAA8E,MAAM,OAAO,CAAA;AAElG,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEzD,MAAM,WAAW,mBAAmB;IAChC,oCAAoC;IACpC,UAAU,EAAE,aAAa,CAAA;IACzB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,kDAAkD;IAClD,SAAS,EAAE,OAAO,CAAA;IAClB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,mDAAmD;IACnD,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACxB,oCAAoC;IACpC,eAAe,EAAE,OAAO,CAAA;IACxB,iCAAiC;IACjC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,kDAAkD;IAClD,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/C;AAID,MAAM,WAAW,oBAAoB;IACjC,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC9C,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACpC,qCAAqC;IACrC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACtD,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,wFAAwF;IACxF,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uBAAuB;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmN1D,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,IAAI,mBAAmB,CAMhD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAG3C"}
1
+ {"version":3,"file":"DsaAuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/DsaAuthProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAA8E,MAAM,OAAO,CAAA;AAElG,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEzD,MAAM,WAAW,mBAAmB;IAChC,oCAAoC;IACpC,UAAU,EAAE,aAAa,CAAA;IACzB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,kDAAkD;IAClD,SAAS,EAAE,OAAO,CAAA;IAClB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,mDAAmD;IACnD,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACxB,oCAAoC;IACpC,eAAe,EAAE,OAAO,CAAA;IACxB,iCAAiC;IACjC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,kDAAkD;IAClD,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/C;AAID,MAAM,WAAW,oBAAoB;IACjC,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC9C,yCAAyC;IACzC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACpC,qCAAqC;IACrC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACtD,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,wFAAwF;IACxF,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uBAAuB;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuN1D,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,IAAI,mBAAmB,CAMhD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAG3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"DsaAuthStore.d.ts","sourceRoot":"","sources":["../../src/auth/DsaAuthStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAUzF,cAAM,YAAY;IAChB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,eAAe,CAAS;;IAYhC,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAKhD,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,sBAAsB;IAexB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0DzH,MAAM,IAAI,IAAI;IA6BR,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IA2BvC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAMrD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOnC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUxC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOnC,YAAY,IAAI,OAAO;IAIvB,WAAW,IAAI,OAAO;IAItB,SAAS,IAAI,aAAa;IAe1B,SAAS,IAAI,aAAa;IAI1B,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,UAAU,GAAE,MAAW,GAAG,IAAI;IAqBxE,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CA2BtF;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAA;AAE9C,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"DsaAuthStore.d.ts","sourceRoot":"","sources":["../../src/auth/DsaAuthStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAUzF,cAAM,YAAY;IAChB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,eAAe,CAAS;;IAYhC,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAKhD,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,sBAAsB;IAexB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0DzH,MAAM,IAAI,IAAI;IAgCR,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IA2BvC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAMrD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOnC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUxC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOnC,YAAY,IAAI,OAAO;IAIvB,WAAW,IAAI,OAAO;IAItB,SAAS,IAAI,aAAa;IAe1B,SAAS,IAAI,aAAa;IAI1B,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,UAAU,GAAE,MAAW,GAAG,IAAI;IAqBxE,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CA2BtF;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAA;AAE9C,eAAe,YAAY,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOverlayTileSources.d.ts","sourceRoot":"","sources":["../../../../src/components/SlideViewer/hooks/useOverlayTileSources.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAClC,kBAAkB,EAAE,iBAAiB,EAAE,EACvC,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,QAAQ,EAAE,WAAW,QAuYxB"}
1
+ {"version":3,"file":"useOverlayTileSources.d.ts","sourceRoot":"","sources":["../../../../src/components/SlideViewer/hooks/useOverlayTileSources.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,IAAI,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D;;GAEG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAClC,kBAAkB,EAAE,iBAAiB,EAAE,EACvC,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,QAAQ,EAAE,WAAW,QA6bxB"}
@@ -2,15 +2,50 @@ import { default as React } from 'react';
2
2
  import { Item } from '../../utils/itemUtils';
3
3
  import { ApiErrorHandler } from '../../utils/apiErrorHandling';
4
4
 
5
+ /** Item for URL-based grid: pass image URLs directly (e.g. DSA region crops). */
6
+ export interface ThumbnailGridImageItem {
7
+ id: string;
8
+ imageUrl: string;
9
+ /** Primary text shown under the thumbnail. */
10
+ label?: string;
11
+ /** Secondary text under the thumbnail; shown after label as "label · subtitle" when both set. */
12
+ subtitle?: string;
13
+ /** Optional category for filter dropdown (e.g. "NFT", "Neuritic Plaque") */
14
+ category?: string;
15
+ }
16
+ /**
17
+ * Region of interest (ROI) for thumbnail grid. Use with roiItems + getRoiThumbnailUrl.
18
+ * Your document can include any extra fields (e.g. sourceImageId, region bounds);
19
+ * getRoiThumbnailUrl converts each item to a thumbnail URL.
20
+ */
21
+ export interface ThumbnailGridROIItem {
22
+ id: string;
23
+ /** Primary text shown under the thumbnail. */
24
+ label?: string;
25
+ /** Secondary text under the thumbnail; shown after label as "label · subtitle" when both set. */
26
+ subtitle?: string;
27
+ /** Optional category for filter dropdown */
28
+ category?: string;
29
+ [key: string]: unknown;
30
+ }
5
31
  export interface ThumbnailGridProps {
32
+ /** List of image URLs to display (no fetch). When set, apiBaseUrl is optional. */
33
+ imageItems?: ThumbnailGridImageItem[];
34
+ /**
35
+ * List of ROI items (e.g. regions from an image). Requires getRoiThumbnailUrl to map each item to a thumbnail URL.
36
+ * Use when your data has a different document format (e.g. sourceImageId + region bounds).
37
+ */
38
+ roiItems?: ThumbnailGridROIItem[];
39
+ /** When using roiItems, this function returns the thumbnail URL for each ROI (e.g. DSA region endpoint or your backend). */
40
+ getRoiThumbnailUrl?: (item: ThumbnailGridROIItem) => string;
6
41
  /** DSA folder ID to fetch items from */
7
42
  folderId?: string;
8
43
  /** Array of specific image IDs to display */
9
44
  imageIds?: string[];
10
- /** Pre-loaded items array (takes precedence) */
45
+ /** Pre-loaded items array (takes precedence over folderId/imageIds) */
11
46
  items?: Item[];
12
- /** DSA API base URL (e.g., "http://bdsa.pathology.emory.edu:8080/api/v1") */
13
- apiBaseUrl: string;
47
+ /** DSA API base URL (e.g., "http://bdsa.pathology.emory.edu:8080/api/v1"). Optional when imageItems is provided. */
48
+ apiBaseUrl?: string;
14
49
  /** Backend API base URL for fetching items (optional, falls back to apiBaseUrl if not provided) */
15
50
  backendApiBaseUrl?: string;
16
51
  /** Headers for API requests (auth, etc.) */
@@ -41,8 +76,8 @@ export interface ThumbnailGridProps {
41
76
  onItemsLoaded?: (itemIds: string[]) => void;
42
77
  /** Function to determine dataset type */
43
78
  getDatasetType?: (itemId: string) => 'train' | 'val' | 'test' | null;
44
- /** Callback when thumbnail is clicked */
45
- onThumbnailClick?: (item: Item) => void;
79
+ /** Callback when thumbnail is clicked (Item | ThumbnailGridImageItem | ThumbnailGridROIItem depending on data source) */
80
+ onThumbnailClick?: (item: Item | ThumbnailGridImageItem | ThumbnailGridROIItem) => void;
46
81
  /**
47
82
  * Callback when an API error occurs.
48
83
  * Provides error details and a retry function for transient failures.
@@ -77,6 +112,30 @@ export interface ThumbnailGridProps {
77
112
  /** Custom CSS class */
78
113
  className?: string;
79
114
  }
115
+ /**
116
+ * Region of interest in pixel coordinates (e.g. for DSA region thumbnail API).
117
+ * Use with buildDsaRegionThumbnailUrl to build thumbnail URLs for ROI items.
118
+ */
119
+ export interface DsaRegionBounds {
120
+ /** Left edge (x) in pixels */
121
+ left: number;
122
+ /** Top edge (y) in pixels */
123
+ top: number;
124
+ /** Width in pixels */
125
+ width: number;
126
+ /** Height in pixels */
127
+ height: number;
128
+ }
129
+ /**
130
+ * Build a DSA large_image region thumbnail URL for a crop of a whole-slide image.
131
+ * Use this as getRoiThumbnailUrl when your ROI items have sourceImageId and region.
132
+ *
133
+ * @param apiBaseUrl - DSA API base (e.g. "http://host:8080/api/v1")
134
+ * @param itemId - DSA item (image) id
135
+ * @param region - Pixel bounds of the region
136
+ * @param outputSize - Output thumbnail width (height follows region aspect ratio if server supports it)
137
+ */
138
+ export declare function buildDsaRegionThumbnailUrl(apiBaseUrl: string, itemId: string, region: DsaRegionBounds, outputSize?: number): string;
80
139
  /**
81
140
  * Basic thumbnail grid component that displays static thumbnail images.
82
141
  * This is a lightweight alternative to FolderThumbnailBrowser that doesn't use OpenSeadragon.
@@ -1 +1 @@
1
- {"version":3,"file":"ThumbnailGrid.d.ts","sourceRoot":"","sources":["../../../src/components/ThumbnailGrid/ThumbnailGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAChF,OAAO,EAAgC,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE/E,OAAO,EAAkB,KAAK,eAAe,EAAiB,MAAM,8BAA8B,CAAA;AAClG,OAAO,qBAAqB,CAAA;AAE5B,MAAM,WAAW,kBAAkB;IAE/B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;IAGd,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAA;IAClB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,4CAA4C;IAC5C,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB,gHAAgH;IAChH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;yBAEqB;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAGnE,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAA;IACtC,mHAAmH;IACnH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAG3B,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gCAAgC;IAChC,gBAAgB,CAAC,EAAE;QACf,KAAK,EAAE,MAAM,EAAE,CAAA;QACf,GAAG,EAAE,MAAM,EAAE,CAAA;QACb,IAAI,EAAE,MAAM,EAAE,CAAA;KACjB,CAAA;IAGD,4CAA4C;IAC5C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAC3C,yCAAyC;IACzC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAA;IACpE,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAGvC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAYD;;;GAGG;AACH,eAAO,MAAM,aAAa,2FA+gBzB,CAAA"}
1
+ {"version":3,"file":"ThumbnailGrid.d.ts","sourceRoot":"","sources":["../../../src/components/ThumbnailGrid/ThumbnailGrid.tsx"],"names":[],"mappings":"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"}