bdsa-react-components 0.1.10 → 0.1.15
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.
- package/CHANGELOG.md +94 -13
- package/CURSOR_INTEGRATION.md +7 -2
- package/dist/auth/DsaAuthStore.d.ts +49 -0
- package/dist/auth/DsaAuthStore.d.ts.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/types.d.ts +38 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/useDsaAuth.d.ts +20 -0
- package/dist/auth/useDsaAuth.d.ts.map +1 -0
- package/dist/components/DsaAuthManager/DsaAuthManager.d.ts +23 -0
- package/dist/components/DsaAuthManager/DsaAuthManager.d.ts.map +1 -0
- package/dist/components/FolderBrowser/FolderBrowser.d.ts +4 -0
- package/dist/components/FolderBrowser/FolderBrowser.d.ts.map +1 -1
- package/dist/components/SlideViewer/SlideViewer.d.ts +6 -0
- package/dist/components/SlideViewer/SlideViewer.d.ts.map +1 -1
- package/dist/index.cjs +71 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25803 -11961
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/utils/itemUtils.d.ts +75 -0
- package/dist/utils/itemUtils.d.ts.map +1 -0
- package/dist/utils/patchOsdPaperjs.d.ts +11 -0
- package/dist/utils/patchOsdPaperjs.d.ts.map +1 -0
- package/package.json +8 -5
package/CHANGELOG.md
CHANGED
|
@@ -5,19 +5,100 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [0.1.
|
|
8
|
+
## [0.1.14] - 2025-11-05
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
11
|
+
- **Token Query String Support for SlideViewer**: Critical integration improvement
|
|
12
|
+
- Added `authToken` prop to SlideViewer for explicit token passing
|
|
13
|
+
- Added `tokenQueryParam` prop to enable token appending to all requests (DZI, tiles, annotations)
|
|
14
|
+
- Automatic token extraction from `apiHeaders` (Authorization or Girder-Token)
|
|
15
|
+
- Token automatically appended to DZI URLs, tile URLs, and annotation API calls
|
|
16
|
+
- Enables authentication for DSA servers that require `?token=...` query parameters
|
|
17
|
+
- **Large Image Detection Utility**: Simplifies DSA item filtering
|
|
18
|
+
- Added `hasLargeImage(item)` function to check for largeImage flag
|
|
19
|
+
- Checks both root level (`item.largeImage`) and metadata level (`item.meta.largeImage`)
|
|
20
|
+
- Handles boolean, string, and object flag types
|
|
21
|
+
- Added `filterLargeImages(items)` for easy array filtering
|
|
22
|
+
- Exported `Item` type for TypeScript users
|
|
23
|
+
- **Selection Persistence for FolderBrowser**: Improves development UX
|
|
24
|
+
- Added `persistSelection` prop to enable automatic selection persistence
|
|
25
|
+
- Added `persistSelectionKey` prop for custom localStorage keys
|
|
26
|
+
- Saves selected resource to localStorage with timestamp
|
|
27
|
+
- Restores selection on component mount
|
|
28
|
+
- Auto-expands selected collection/folder for visibility
|
|
29
|
+
- **Comprehensive Documentation**: CRITICAL_FEATURES.md with detailed usage examples
|
|
30
|
+
- Complete API documentation for all three features
|
|
31
|
+
- Migration guides from manual implementations
|
|
32
|
+
- Troubleshooting section
|
|
33
|
+
- Integration examples combining all features
|
|
34
|
+
- **Unit Tests**: Full test coverage for new utilities
|
|
35
|
+
- 16 tests for `hasLargeImage` and `filterLargeImages`
|
|
36
|
+
- Tests for all edge cases and data structure variations
|
|
23
37
|
|
|
38
|
+
### Changed
|
|
39
|
+
- Updated BACKPORT_IMPROVEMENTS.md to mark critical items as completed
|
|
40
|
+
- Bumped version to 0.1.14
|
|
41
|
+
|
|
42
|
+
## [0.1.13] - 2025-11-05
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
- **DsaAuthManager Component**: Complete authentication solution for DSA servers
|
|
46
|
+
- Login/logout UI with status indicators
|
|
47
|
+
- Persistent sessions using localStorage
|
|
48
|
+
- Token management with automatic validation
|
|
49
|
+
- Support for compact layout mode
|
|
50
|
+
- Optional server configuration in login modal
|
|
51
|
+
- **useDsaAuth Hook**: React hook for easy authentication integration
|
|
52
|
+
- Access to auth status and user information
|
|
53
|
+
- Methods for login, logout, token validation
|
|
54
|
+
- Helper methods for API requests (getAuthHeaders, getApiUrl)
|
|
55
|
+
- **DSA Authentication Store**: Singleton store for auth state management
|
|
56
|
+
- LocalStorage persistence
|
|
57
|
+
- Event subscription system for UI updates
|
|
58
|
+
- Token expiry tracking (30-day default)
|
|
59
|
+
- Connection testing utilities
|
|
60
|
+
- **TypeScript Types**: Complete type definitions for DSA authentication
|
|
61
|
+
- **Comprehensive Documentation**: DSA_AUTH_USAGE.md with examples and migration guide
|
|
62
|
+
- **Storybook Stories**: Interactive examples for all auth component variations
|
|
63
|
+
- **Unit Tests**: Full test coverage for authentication components
|
|
64
|
+
|
|
65
|
+
### Changed
|
|
66
|
+
- Bumped version to 0.1.13
|
|
67
|
+
|
|
68
|
+
## [0.1.12] - 2025-11-05
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
- Paper.js runtime patches for `_transformBounds` errors
|
|
72
|
+
- Moved `openseadragon`, `osd-paperjs-annotation`, and `paper` to peerDependencies
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
- Improved SlideViewer component cleanup and error handling
|
|
76
|
+
- Enhanced AnnotationManager state management to prevent infinite loops
|
|
77
|
+
|
|
78
|
+
### Fixed
|
|
79
|
+
- Fixed `_transformBounds` error in consuming applications
|
|
80
|
+
- Fixed race conditions in annotation state updates
|
|
81
|
+
- Fixed loading state not clearing properly in AnnotationManager
|
|
82
|
+
- Fixed annotation rendering issues when toggling visibility
|
|
83
|
+
|
|
84
|
+
## [0.1.11] - 2025-11-04
|
|
85
|
+
|
|
86
|
+
### Added
|
|
87
|
+
- SlideViewer component with OpenSeadragon integration
|
|
88
|
+
- AnnotationManager component for DSA annotations
|
|
89
|
+
- FolderBrowser component for navigating DSA resources
|
|
90
|
+
- Annotation caching system (Memory and IndexedDB)
|
|
91
|
+
- Button and Card components
|
|
92
|
+
|
|
93
|
+
### Changed
|
|
94
|
+
- Initial component library setup
|
|
95
|
+
- Added TypeScript support
|
|
96
|
+
- Configured Vite build system
|
|
97
|
+
- Set up Storybook for component documentation
|
|
98
|
+
|
|
99
|
+
## [0.1.0] - 2025-11-01
|
|
100
|
+
|
|
101
|
+
### Added
|
|
102
|
+
- Initial project setup
|
|
103
|
+
- Basic project structure
|
|
104
|
+
- Build configuration
|
package/CURSOR_INTEGRATION.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# bdsa-react-components - CURSOR Integration Guide
|
|
2
2
|
|
|
3
|
-
**Version:** 0.1.
|
|
3
|
+
**Version:** 0.1.15 | **Generated:** 2025-11-05T19:59:04.197Z
|
|
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.
|
|
@@ -42,7 +42,7 @@ npm run build
|
|
|
42
42
|
### Import
|
|
43
43
|
|
|
44
44
|
```tsx
|
|
45
|
-
import { AnnotationManager, Button, Card, FolderBrowser, SlideViewer } from 'bdsa-react-components'
|
|
45
|
+
import { AnnotationManager, Button, Card, DsaAuthManager, FolderBrowser, SlideViewer } from 'bdsa-react-components'
|
|
46
46
|
import 'bdsa-react-components/styles.css'
|
|
47
47
|
```
|
|
48
48
|
|
|
@@ -98,6 +98,10 @@ A flexible card component for the BDSA project
|
|
|
98
98
|
| `hoverable` | `boolean` | `false` | No | Whether the card is hoverable (shows hover effect) |
|
|
99
99
|
| `padding` | `'none' \| 'small' \| 'medium' \| 'large'` | `'medium'` | No | Padding size |
|
|
100
100
|
|
|
101
|
+
### DsaAuthManager
|
|
102
|
+
|
|
103
|
+
Callback when authentication status changes
|
|
104
|
+
|
|
101
105
|
### FolderBrowser
|
|
102
106
|
|
|
103
107
|
FolderBrowser component
|
|
@@ -155,6 +159,7 @@ import type {
|
|
|
155
159
|
Collection,
|
|
156
160
|
Folder,
|
|
157
161
|
Resource,
|
|
162
|
+
DsaAuthManagerProps,
|
|
158
163
|
} from 'bdsa-react-components'
|
|
159
164
|
```
|
|
160
165
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { DsaAuthConfig, DsaUserInfo, DsaAuthStatus, DsaAuthListener } from './types';
|
|
2
|
+
|
|
3
|
+
declare class DsaAuthStore {
|
|
4
|
+
private listeners;
|
|
5
|
+
private config;
|
|
6
|
+
private token;
|
|
7
|
+
private userInfo;
|
|
8
|
+
private lastLogin;
|
|
9
|
+
private tokenExpiry;
|
|
10
|
+
private isAuthenticated;
|
|
11
|
+
constructor();
|
|
12
|
+
subscribe(listener: DsaAuthListener): () => void;
|
|
13
|
+
private notify;
|
|
14
|
+
private loadConfig;
|
|
15
|
+
private loadToken;
|
|
16
|
+
private loadUserInfo;
|
|
17
|
+
private loadLastLogin;
|
|
18
|
+
private loadTokenExpiry;
|
|
19
|
+
private saveConfig;
|
|
20
|
+
private saveToken;
|
|
21
|
+
private saveUserInfo;
|
|
22
|
+
private saveLastLogin;
|
|
23
|
+
private saveTokenExpiry;
|
|
24
|
+
private validateAuthentication;
|
|
25
|
+
authenticate(username: string, password: string): Promise<{
|
|
26
|
+
success: boolean;
|
|
27
|
+
user?: DsaUserInfo;
|
|
28
|
+
error?: string;
|
|
29
|
+
}>;
|
|
30
|
+
logout(): void;
|
|
31
|
+
validateToken(): Promise<boolean>;
|
|
32
|
+
updateConfig(newConfig: Partial<DsaAuthConfig>): void;
|
|
33
|
+
setServerUrl(baseUrl: string): void;
|
|
34
|
+
getAuthHeaders(): Record<string, string>;
|
|
35
|
+
getApiUrl(endpoint: string): string;
|
|
36
|
+
isConfigured(): boolean;
|
|
37
|
+
isDataReady(): boolean;
|
|
38
|
+
getStatus(): DsaAuthStatus;
|
|
39
|
+
getConfig(): DsaAuthConfig;
|
|
40
|
+
getToken(): string;
|
|
41
|
+
testConnection(): Promise<{
|
|
42
|
+
success: boolean;
|
|
43
|
+
version?: any;
|
|
44
|
+
message: string;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
export declare const dsaAuthStore: DsaAuthStore;
|
|
48
|
+
export default dsaAuthStore;
|
|
49
|
+
//# sourceMappingURL=DsaAuthStore.d.ts.map
|
|
@@ -0,0 +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;IAKZ,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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DSA Authentication Module
|
|
3
|
+
* Exports authentication utilities, hooks, and types
|
|
4
|
+
*/
|
|
5
|
+
export { dsaAuthStore } from './DsaAuthStore';
|
|
6
|
+
export { useDsaAuth } from './useDsaAuth';
|
|
7
|
+
export type { DsaAuthConfig, DsaUserInfo, DsaAuthStatus, DsaAuthResponse, DsaAuthListener } from './types';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for DSA Authentication
|
|
3
|
+
*/
|
|
4
|
+
export interface DsaAuthConfig {
|
|
5
|
+
baseUrl: string;
|
|
6
|
+
resourceId?: string;
|
|
7
|
+
resourceType?: 'folder' | 'collection';
|
|
8
|
+
fetchStrategy?: 'unlimited' | 'paginate';
|
|
9
|
+
pageSize?: number;
|
|
10
|
+
metadataSyncTargetFolder?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface DsaUserInfo {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
email?: string;
|
|
16
|
+
login?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface DsaAuthStatus {
|
|
19
|
+
isAuthenticated: boolean;
|
|
20
|
+
isConfigured: boolean;
|
|
21
|
+
hasToken: boolean;
|
|
22
|
+
hasConfig: boolean;
|
|
23
|
+
user: DsaUserInfo | null;
|
|
24
|
+
serverUrl: string;
|
|
25
|
+
resourceId?: string;
|
|
26
|
+
resourceType?: 'folder' | 'collection';
|
|
27
|
+
lastLogin?: Date | null;
|
|
28
|
+
tokenExpiry?: Date | null;
|
|
29
|
+
}
|
|
30
|
+
export interface DsaAuthResponse {
|
|
31
|
+
success: boolean;
|
|
32
|
+
token?: string;
|
|
33
|
+
user?: DsaUserInfo;
|
|
34
|
+
error?: string;
|
|
35
|
+
message?: string;
|
|
36
|
+
}
|
|
37
|
+
export type DsaAuthListener = () => void;
|
|
38
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAA;IACtC,aAAa,CAAC,EAAE,WAAW,GAAG,UAAU,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAA;IACtC,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,IAAI,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DsaAuthStatus, DsaAuthConfig } from './types';
|
|
2
|
+
|
|
3
|
+
export interface UseDsaAuthReturn {
|
|
4
|
+
authStatus: DsaAuthStatus;
|
|
5
|
+
login: (username: string, password: string) => Promise<void>;
|
|
6
|
+
logout: () => void;
|
|
7
|
+
updateConfig: (config: Partial<DsaAuthConfig>) => void;
|
|
8
|
+
validateToken: () => Promise<boolean>;
|
|
9
|
+
testConnection: () => Promise<{
|
|
10
|
+
success: boolean;
|
|
11
|
+
version?: any;
|
|
12
|
+
message: string;
|
|
13
|
+
}>;
|
|
14
|
+
getAuthHeaders: () => Record<string, string>;
|
|
15
|
+
getApiUrl: (endpoint: string) => string;
|
|
16
|
+
getToken: () => string;
|
|
17
|
+
getConfig: () => DsaAuthConfig;
|
|
18
|
+
}
|
|
19
|
+
export declare function useDsaAuth(): UseDsaAuthReturn;
|
|
20
|
+
//# sourceMappingURL=useDsaAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDsaAuth.d.ts","sourceRoot":"","sources":["../../src/auth/useDsaAuth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,aAAa,CAAA;IACzB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAA;IACtD,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,cAAc,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnF,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC,QAAQ,EAAE,MAAM,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,aAAa,CAAA;CAC/B;AAED,wBAAgB,UAAU,IAAI,gBAAgB,CAiE7C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface DsaAuthManagerProps {
|
|
4
|
+
/**
|
|
5
|
+
* Callback when authentication status changes
|
|
6
|
+
*/
|
|
7
|
+
onAuthChange?: (isAuthenticated: boolean) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Show server URL configuration in login modal
|
|
10
|
+
*/
|
|
11
|
+
allowServerConfig?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Custom class name for the container
|
|
14
|
+
*/
|
|
15
|
+
className?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Show compact version (minimal UI)
|
|
18
|
+
*/
|
|
19
|
+
compact?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare const DsaAuthManager: React.FC<DsaAuthManagerProps>;
|
|
22
|
+
export default DsaAuthManager;
|
|
23
|
+
//# sourceMappingURL=DsaAuthManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DsaAuthManager.d.ts","sourceRoot":"","sources":["../../../src/components/DsaAuthManager/DsaAuthManager.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,sBAAsB,CAAA;AAE7B,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,KAAK,IAAI,CAAA;IACjD;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAmJxD,CAAA;AAwGD,eAAe,cAAc,CAAA"}
|
|
@@ -72,6 +72,10 @@ export interface FolderBrowserProps {
|
|
|
72
72
|
onItemSelect?: (item: Item) => void;
|
|
73
73
|
/** Custom render for items */
|
|
74
74
|
renderItem?: (item: Item, depth: number) => React.ReactNode;
|
|
75
|
+
/** If true, persists the selected resource to localStorage and restores it on mount. Default: false */
|
|
76
|
+
persistSelection?: boolean;
|
|
77
|
+
/** Custom key for localStorage persistence. Default: 'bdsa_folder_browser_selection' */
|
|
78
|
+
persistSelectionKey?: string;
|
|
75
79
|
}
|
|
76
80
|
/**
|
|
77
81
|
* FolderBrowser component for browsing DSA collections and folders.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FolderBrowser.d.ts","sourceRoot":"","sources":["../../../src/components/FolderBrowser/FolderBrowser.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"FolderBrowser.d.ts","sourceRoot":"","sources":["../../../src/components/FolderBrowser/FolderBrowser.tsx"],"names":[],"mappings":"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"}
|
|
@@ -119,6 +119,12 @@ export interface SlideViewerProps {
|
|
|
119
119
|
fetchFn?: (url: string, options?: RequestInit) => Promise<Response>;
|
|
120
120
|
/** Custom headers to add to all API requests. Merged with fetchFn headers if both are provided. */
|
|
121
121
|
apiHeaders?: HeadersInit;
|
|
122
|
+
/** Authentication token to use for requests. Can be extracted from apiHeaders automatically if not provided. */
|
|
123
|
+
authToken?: string;
|
|
124
|
+
/** If true, appends the authentication token as a query parameter (?token=...) to all requests (DZI, tiles, annotations).
|
|
125
|
+
* This is required for some DSA servers that validate tokens via query parameters instead of (or in addition to) headers.
|
|
126
|
+
* Default: false */
|
|
127
|
+
tokenQueryParam?: boolean;
|
|
122
128
|
/** Show annotation controls panel in the sidebar (default: false) */
|
|
123
129
|
showAnnotationControls?: boolean;
|
|
124
130
|
/** Default opacity for all annotations (0-1, default: 1) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlideViewer.d.ts","sourceRoot":"","sources":["../../../src/components/SlideViewer/SlideViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAGhF,OAAO,KAAK,EAAE,iBAAiB,EAAW,MAAM,SAAS,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,IAAI,mBAAmB,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"SlideViewer.d.ts","sourceRoot":"","sources":["../../../src/components/SlideViewer/SlideViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAGhF,OAAO,KAAK,EAAE,iBAAiB,EAAW,MAAM,SAAS,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,IAAI,mBAAmB,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAoCnG,OAAO,mBAAmB,CAAA;AAE1B,MAAM,WAAW,cAAc;IAC3B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;oFACgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAC9B,2CAA2C;IAC3C,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,cAAc,CAAC,EAAE,WAAW,GAAG,UAAU,CAAA;IACzC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAChC,iCAAiC;IACjC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qCAAqC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,sBAAsB;IACnC,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAA;IACX,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,wEAAwE;IACxE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;IACnM,uDAAuD;IACvD,IAAI,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACjC,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAC7C,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC7B,iDAAiD;IACjD,SAAS,EAAE,cAAc,CAAA;IACzB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CAAA;IACrD,qEAAqE;IACrE,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACnC,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oCAAoC;IACpC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACrD,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAC3D,2CAA2C;IAC3C,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;mFAC+E;IAC/E,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C;2EACuE;IACvE,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;oFACgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;wGACoG;IACpG,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IACnE,mGAAmG;IACnG,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB,gHAAgH;IAChH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;yBAEqB;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,qEAAqE;IACrE,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,4DAA4D;IAC5D,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,mIAAmI;IACnI,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3E,uHAAuH;IACvH,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5E,kGAAkG;IAClG,iBAAiB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D;;;;gHAI4G;IAC5G,eAAe,CAAC,EAAE;QACd,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;QACjF,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAClH,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QAC1E,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;QACtB,QAAQ,CAAC,IAAI,OAAO,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAC3F,GAAG,IAAI,CAAA;IACR,gIAAgI;IAChI,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;gGAE4F;IAC5F,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;;;4FAIwF;IACxF,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9E;AAwID;;;GAGG;AACH,eAAO,MAAM,WAAW,yFAk/CvB,CAAA"}
|