bdsa-react-components 0.1.21 → 0.1.25

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 (74) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/CURSOR_INTEGRATION.md +25 -3
  3. package/INTEGRATION.md +0 -0
  4. package/README.md +0 -0
  5. package/dist/auth/DsaAuthProvider.d.ts +92 -0
  6. package/dist/auth/DsaAuthProvider.d.ts.map +1 -0
  7. package/dist/auth/DsaAuthStore.d.ts +5 -0
  8. package/dist/auth/DsaAuthStore.d.ts.map +1 -1
  9. package/dist/auth/index.d.ts +3 -1
  10. package/dist/auth/index.d.ts.map +1 -1
  11. package/dist/auth/types.d.ts +43 -0
  12. package/dist/auth/types.d.ts.map +1 -1
  13. package/dist/bdsa-schema.json +896 -0
  14. package/dist/components/DsaAuthManager/DsaAuthManager.d.ts +49 -4
  15. package/dist/components/DsaAuthManager/DsaAuthManager.d.ts.map +1 -1
  16. package/dist/components/DsaErrorBoundary/DsaErrorBoundary.d.ts +73 -0
  17. package/dist/components/DsaErrorBoundary/DsaErrorBoundary.d.ts.map +1 -0
  18. package/dist/components/DsaErrorBoundary/index.d.ts +3 -0
  19. package/dist/components/DsaErrorBoundary/index.d.ts.map +1 -0
  20. package/dist/components/FolderBrowser/FolderBrowser.d.ts.map +1 -1
  21. package/dist/components/FolderBrowser/FolderBrowser.types.d.ts +139 -2
  22. package/dist/components/FolderBrowser/FolderBrowser.types.d.ts.map +1 -1
  23. package/dist/components/FolderBrowser/useFolderBrowserDataFetching.d.ts +2 -0
  24. package/dist/components/FolderBrowser/useFolderBrowserDataFetching.d.ts.map +1 -1
  25. package/dist/components/FolderThumbnailBrowser/FolderThumbnailBrowser.d.ts +30 -0
  26. package/dist/components/FolderThumbnailBrowser/FolderThumbnailBrowser.d.ts.map +1 -1
  27. package/dist/components/ProtocolManager/ProtocolCard.d.ts +8 -0
  28. package/dist/components/ProtocolManager/ProtocolCard.d.ts.map +1 -0
  29. package/dist/components/ProtocolManager/ProtocolContext.d.ts +46 -0
  30. package/dist/components/ProtocolManager/ProtocolContext.d.ts.map +1 -0
  31. package/dist/components/ProtocolManager/ProtocolList.d.ts +8 -0
  32. package/dist/components/ProtocolManager/ProtocolList.d.ts.map +1 -0
  33. package/dist/components/ProtocolManager/ProtocolManager.d.ts +38 -0
  34. package/dist/components/ProtocolManager/ProtocolManager.d.ts.map +1 -0
  35. package/dist/components/ProtocolManager/ProtocolManager.types.d.ts +139 -0
  36. package/dist/components/ProtocolManager/ProtocolManager.types.d.ts.map +1 -0
  37. package/dist/components/ProtocolManager/ProtocolModal.d.ts +10 -0
  38. package/dist/components/ProtocolManager/ProtocolModal.d.ts.map +1 -0
  39. package/dist/components/ProtocolManager/ProtocolsTab.d.ts +10 -0
  40. package/dist/components/ProtocolManager/ProtocolsTab.d.ts.map +1 -0
  41. package/dist/components/ProtocolManager/adapters/DsaSyncAdapter.d.ts +76 -0
  42. package/dist/components/ProtocolManager/adapters/DsaSyncAdapter.d.ts.map +1 -0
  43. package/dist/components/ProtocolManager/storage/protocolStorage.d.ts +39 -0
  44. package/dist/components/ProtocolManager/storage/protocolStorage.d.ts.map +1 -0
  45. package/dist/components/ProtocolManager/testData.d.ts +23 -0
  46. package/dist/components/ProtocolManager/testData.d.ts.map +1 -0
  47. package/dist/components/ProtocolManager/utils/schemaValidator.d.ts +99 -0
  48. package/dist/components/ProtocolManager/utils/schemaValidator.d.ts.map +1 -0
  49. package/dist/components/SlideViewer/SlideViewer.d.ts +1 -1
  50. package/dist/components/SlideViewer/SlideViewer.d.ts.map +1 -1
  51. package/dist/components/SlideViewer/SlideViewer.types.d.ts +254 -21
  52. package/dist/components/SlideViewer/SlideViewer.types.d.ts.map +1 -1
  53. package/dist/components/SlideViewer/hooks/index.d.ts +2 -0
  54. package/dist/components/SlideViewer/hooks/index.d.ts.map +1 -1
  55. package/dist/components/SlideViewer/hooks/useAnnotationFetching.d.ts +2 -1
  56. package/dist/components/SlideViewer/hooks/useAnnotationFetching.d.ts.map +1 -1
  57. package/dist/components/SlideViewer/hooks/useOverlayTileSources.d.ts +9 -0
  58. package/dist/components/SlideViewer/hooks/useOverlayTileSources.d.ts.map +1 -0
  59. package/dist/components/SlideViewer/hooks/useViewportChange.d.ts +14 -0
  60. package/dist/components/SlideViewer/hooks/useViewportChange.d.ts.map +1 -0
  61. package/dist/components/ThumbnailGrid/ThumbnailGrid.d.ts +30 -0
  62. package/dist/components/ThumbnailGrid/ThumbnailGrid.d.ts.map +1 -1
  63. package/dist/index.cjs +55 -41
  64. package/dist/index.cjs.map +1 -1
  65. package/dist/index.d.ts +15 -1
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +19916 -17906
  68. package/dist/index.js.map +1 -1
  69. package/dist/style.css +1 -1
  70. package/dist/utils/apiErrorHandling.d.ts +44 -0
  71. package/dist/utils/apiErrorHandling.d.ts.map +1 -0
  72. package/dist/utils/patchOsdPaperjs.d.ts.map +1 -1
  73. package/package.json +3 -3
  74. package/patches/osd-paperjs-annotation+0.4.14.patch +0 -0
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Protocol Manager Types
3
+ *
4
+ * Type definitions for protocol management components
5
+ */
6
+ export type ProtocolType = 'stain' | 'region';
7
+ export interface Protocol {
8
+ id: string;
9
+ type: ProtocolType;
10
+ name: string;
11
+ description?: string;
12
+ _isDefault?: boolean;
13
+ _localModified?: boolean;
14
+ _remoteVersion?: string;
15
+ stainType?: string;
16
+ antibody?: string;
17
+ technique?: string;
18
+ phosphoSpecific?: string;
19
+ dilution?: string;
20
+ vendor?: string;
21
+ chromogen?: string;
22
+ regionType?: string;
23
+ landmarks?: string[];
24
+ hemisphere?: string;
25
+ sliceOrientation?: string;
26
+ sliceThickness?: number;
27
+ damage?: string[];
28
+ [key: string]: unknown;
29
+ }
30
+ export interface ProtocolStorage {
31
+ load(): Promise<Protocol[]>;
32
+ save(protocols: Protocol[]): Promise<void>;
33
+ clear(): Promise<void>;
34
+ }
35
+ export interface DsaSyncAdapter {
36
+ checkAvailability(): Promise<{
37
+ isAvailable: boolean;
38
+ reason?: string;
39
+ }>;
40
+ pullProtocols(): Promise<{
41
+ success: boolean;
42
+ pulled?: {
43
+ stainProtocols: number;
44
+ regionProtocols: number;
45
+ };
46
+ error?: string;
47
+ }>;
48
+ pushProtocols(stainProtocols: Protocol[], regionProtocols: Protocol[]): Promise<{
49
+ success: boolean;
50
+ pushed?: {
51
+ stainProtocols: number;
52
+ regionProtocols: number;
53
+ };
54
+ error?: string;
55
+ }>;
56
+ getSyncStatus(): Promise<{
57
+ lastSync: string | null;
58
+ hasLocalChanges: boolean;
59
+ }>;
60
+ }
61
+ export interface SchemaValidator {
62
+ loaded?: boolean;
63
+ loadSchemas(schemaUrl?: string, schemaData?: unknown): Promise<boolean>;
64
+ getStainTypeOptions(): Array<{
65
+ value: string;
66
+ label: string;
67
+ }>;
68
+ getAntibodyOptions(stainType: string): string[];
69
+ getTechniqueOptions(stainType: string): string[];
70
+ getPhosphoSpecificOptions(stainType: string): string[];
71
+ getDilutionPattern?(stainType: string): string | null;
72
+ getVendorPattern?(stainType: string): string | null;
73
+ getRegionTypeOptions(): Array<{
74
+ value: string;
75
+ label: string;
76
+ }>;
77
+ getLandmarkOptions(regionType: string): string[];
78
+ getHemisphereOptions(): string[];
79
+ getSliceOrientationOptions(): string[];
80
+ validateStainProtocol(data: Partial<Protocol>): Record<string, string>;
81
+ validateRegionProtocol(data: Partial<Protocol>): Record<string, string>;
82
+ }
83
+ export interface ProtocolContextValue {
84
+ protocols: Protocol[];
85
+ loading: boolean;
86
+ error: string | null;
87
+ addProtocol: (protocol: Protocol) => void;
88
+ updateProtocol: (protocol: Protocol) => void;
89
+ deleteProtocol: (id: string) => void;
90
+ clearAllProtocols: () => Promise<void>;
91
+ getProtocolsByType: (type: ProtocolType) => Protocol[];
92
+ getProtocolById: (id: string) => Protocol | undefined;
93
+ stainProtocols: Protocol[];
94
+ regionProtocols: Protocol[];
95
+ }
96
+ export interface ProtocolProviderProps {
97
+ children: React.ReactNode;
98
+ storage?: ProtocolStorage;
99
+ }
100
+ export interface ProtocolCardProps {
101
+ protocol: Protocol;
102
+ onEdit?: (protocol: Protocol) => void;
103
+ onDelete?: (protocol: Protocol) => void;
104
+ readOnly?: boolean;
105
+ showSync?: boolean;
106
+ }
107
+ export interface ProtocolListProps {
108
+ protocols?: Protocol[];
109
+ type?: ProtocolType;
110
+ onAdd?: () => void;
111
+ onEdit?: (protocol: Protocol) => void;
112
+ onDelete?: (protocol: Protocol) => void;
113
+ readOnly?: boolean;
114
+ showSync?: boolean;
115
+ title?: string;
116
+ description?: string;
117
+ }
118
+ export interface ProtocolModalProps {
119
+ protocol: Protocol | null;
120
+ type: ProtocolType;
121
+ onSave: (formData: Partial<Protocol>) => Promise<void>;
122
+ onClose: () => void;
123
+ schemaValidator: SchemaValidator;
124
+ }
125
+ export interface ProtocolsTabProps {
126
+ dsaSyncAdapter?: DsaSyncAdapter | null;
127
+ schemaValidator: SchemaValidator;
128
+ title?: string;
129
+ description?: string;
130
+ showDsaSync?: boolean | null;
131
+ onProtocolChange?: (data: {
132
+ stainProtocols: Protocol[];
133
+ regionProtocols: Protocol[];
134
+ total: number;
135
+ }) => void;
136
+ customProtocolList?: React.ComponentType<ProtocolListProps>;
137
+ customProtocolModal?: React.ComponentType<ProtocolModalProps>;
138
+ }
139
+ //# sourceMappingURL=ProtocolManager.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolManager.types.d.ts","sourceRoot":"","sources":["../../../src/components/ProtocolManager/ProtocolManager.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ProtocolModalProps } from './ProtocolManager.types';
2
+
3
+ /**
4
+ * ProtocolModal Component
5
+ *
6
+ * A modal for creating and editing protocol data with schema-driven validation.
7
+ */
8
+ export declare function ProtocolModal({ protocol, type, onSave, onClose, schemaValidator, }: ProtocolModalProps): import("react/jsx-runtime").JSX.Element;
9
+ export default ProtocolModal;
10
+ //# sourceMappingURL=ProtocolModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolModal.d.ts","sourceRoot":"","sources":["../../../src/components/ProtocolManager/ProtocolModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAY,MAAM,yBAAyB,CAAC;AAC5E,OAAO,qBAAqB,CAAC;AAmB7B;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC1B,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,OAAO,EACP,eAAe,GAClB,EAAE,kBAAkB,2CAqgBpB;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { ProtocolsTabProps } from './ProtocolManager.types';
2
+
3
+ /**
4
+ * ProtocolsTab - Main component for managing stain and region protocols
5
+ */
6
+ export declare function ProtocolsTab({ dsaSyncAdapter, schemaValidator, // Required - must be provided to load options from BDSA schema
7
+ title, description, showDsaSync, // null = auto-detect from adapter
8
+ onProtocolChange, customProtocolList, customProtocolModal, }: ProtocolsTabProps): import("react/jsx-runtime").JSX.Element;
9
+ export default ProtocolsTab;
10
+ //# sourceMappingURL=ProtocolsTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolsTab.d.ts","sourceRoot":"","sources":["../../../src/components/ProtocolManager/ProtocolsTab.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AAC3F,OAAO,oBAAoB,CAAC;AAE5B;;GAEG;AACH,wBAAgB,YAAY,CAAC,EACzB,cAAqB,EACrB,eAAe,EAAE,+DAA+D;AAChF,KAAmB,EACnB,WAA4E,EAC5E,WAAkB,EAAE,kCAAkC;AACtD,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACtB,EAAE,iBAAiB,2CAgVnB;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { Protocol, DsaSyncAdapter as IDsaSyncAdapter } from '../ProtocolManager.types';
2
+
3
+ export declare class DsaSyncAdapter implements IDsaSyncAdapter {
4
+ /**
5
+ * Check if DSA sync is available (authenticated and configured)
6
+ * @returns {Promise<{isAvailable: boolean, reason?: string}>}
7
+ */
8
+ checkAvailability(): Promise<{
9
+ isAvailable: boolean;
10
+ reason?: string;
11
+ }>;
12
+ /**
13
+ * Pull protocols from DSA server
14
+ * @returns {Promise<{success: boolean, pulled?: {stainProtocols: number, regionProtocols: number}, error?: string}>}
15
+ */
16
+ pullProtocols(): Promise<{
17
+ success: boolean;
18
+ pulled?: {
19
+ stainProtocols: number;
20
+ regionProtocols: number;
21
+ };
22
+ error?: string;
23
+ }>;
24
+ /**
25
+ * Push protocols to DSA server
26
+ * @param {Protocol[]} _stainProtocols - Array of stain protocol objects
27
+ * @param {Protocol[]} _regionProtocols - Array of region protocol objects
28
+ * @returns {Promise<{success: boolean, pushed?: {stainProtocols: number, regionProtocols: number}, error?: string}>}
29
+ */
30
+ pushProtocols(_stainProtocols: Protocol[], _regionProtocols: Protocol[]): Promise<{
31
+ success: boolean;
32
+ pushed?: {
33
+ stainProtocols: number;
34
+ regionProtocols: number;
35
+ };
36
+ error?: string;
37
+ }>;
38
+ /**
39
+ * Get sync status information
40
+ * @returns {Promise<{lastSync: string|null, hasLocalChanges: boolean}>}
41
+ */
42
+ getSyncStatus(): Promise<{
43
+ lastSync: string | null;
44
+ hasLocalChanges: boolean;
45
+ }>;
46
+ }
47
+ /**
48
+ * No-op adapter for applications that don't need DSA sync
49
+ */
50
+ export declare class NoOpDsaSyncAdapter extends DsaSyncAdapter {
51
+ checkAvailability(): Promise<{
52
+ isAvailable: boolean;
53
+ reason?: string;
54
+ }>;
55
+ pullProtocols(): Promise<{
56
+ success: boolean;
57
+ pulled?: {
58
+ stainProtocols: number;
59
+ regionProtocols: number;
60
+ };
61
+ error?: string;
62
+ }>;
63
+ pushProtocols(): Promise<{
64
+ success: boolean;
65
+ pushed?: {
66
+ stainProtocols: number;
67
+ regionProtocols: number;
68
+ };
69
+ error?: string;
70
+ }>;
71
+ getSyncStatus(): Promise<{
72
+ lastSync: string | null;
73
+ hasLocalChanges: boolean;
74
+ }>;
75
+ }
76
+ //# sourceMappingURL=DsaSyncAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DsaSyncAdapter.d.ts","sourceRoot":"","sources":["../../../../src/components/ProtocolManager/adapters/DsaSyncAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE5F,qBAAa,cAAe,YAAW,eAAe;IAClD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAI7E;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC;QAC3B,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE;YAAE,cAAc,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAIF;;;;;OAKG;IACG,aAAa,CACf,eAAe,EAAE,QAAQ,EAAE,EAC3B,gBAAgB,EAAE,QAAQ,EAAE,GAC7B,OAAO,CAAC;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE;YAAE,cAAc,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAIF;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC;QAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,eAAe,EAAE,OAAO,CAAC;KAC5B,CAAC;CAGL;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;IAC5C,iBAAiB,IAAI,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIvE,aAAa,IAAI,OAAO,CAAC;QAC3B,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE;YAAE,cAAc,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAII,aAAa,IAAI,OAAO,CAAC;QAC3B,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE;YAAE,cAAc,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAII,aAAa,IAAI,OAAO,CAAC;QAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,eAAe,EAAE,OAAO,CAAC;KAC5B,CAAC;CAGL"}
@@ -0,0 +1,39 @@
1
+ import { Protocol, ProtocolStorage } from '../ProtocolManager.types';
2
+
3
+ /**
4
+ * Generate a unique ID for a protocol
5
+ */
6
+ export declare const generateProtocolId: () => string;
7
+ /**
8
+ * LocalStorage implementation of protocol storage
9
+ */
10
+ export declare class LocalStorageProtocolStorage implements ProtocolStorage {
11
+ /**
12
+ * Load all protocols from storage
13
+ * @returns {Promise<Protocol[]>} Array of protocol objects
14
+ */
15
+ load(): Promise<Protocol[]>;
16
+ /**
17
+ * Save all protocols to storage
18
+ * @param {Protocol[]} protocols - Array of protocol objects
19
+ */
20
+ save(protocols: Protocol[]): Promise<void>;
21
+ /**
22
+ * Clear all protocols from storage
23
+ */
24
+ clear(): Promise<void>;
25
+ }
26
+ /**
27
+ * In-memory implementation (useful for testing)
28
+ */
29
+ export declare class InMemoryProtocolStorage implements ProtocolStorage {
30
+ private protocols;
31
+ load(): Promise<Protocol[]>;
32
+ save(protocols: Protocol[]): Promise<void>;
33
+ clear(): Promise<void>;
34
+ }
35
+ /**
36
+ * Default storage instance
37
+ */
38
+ export declare const defaultStorage: LocalStorageProtocolStorage;
39
+ //# sourceMappingURL=protocolStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocolStorage.d.ts","sourceRoot":"","sources":["../../../../src/components/ProtocolManager/storage/protocolStorage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI1E;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAIrC,CAAC;AAEF;;GAEG;AACH,qBAAa,2BAA4B,YAAW,eAAe;IAC/D;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAUjC;;;OAGG;IACG,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B;AAED;;GAEG;AACH,qBAAa,uBAAwB,YAAW,eAAe;IAC3D,OAAO,CAAC,SAAS,CAAkB;IAE7B,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI3B,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,6BAAoC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Protocol } from './ProtocolManager.types';
2
+
3
+ /**
4
+ * Sample stain protocols
5
+ */
6
+ export declare const sampleStainProtocols: Protocol[];
7
+ /**
8
+ * Sample region protocols
9
+ */
10
+ export declare const sampleRegionProtocols: Protocol[];
11
+ /**
12
+ * All sample protocols (stain + region)
13
+ */
14
+ export declare const sampleProtocols: Protocol[];
15
+ /**
16
+ * Minimal test protocols for quick testing
17
+ */
18
+ export declare const minimalTestProtocols: Protocol[];
19
+ /**
20
+ * Helper function to create a protocol with auto-generated ID
21
+ */
22
+ export declare function createTestProtocol(overrides: Partial<Protocol>): Protocol;
23
+ //# sourceMappingURL=testData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testData.d.ts","sourceRoot":"","sources":["../../../src/components/ProtocolManager/testData.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,EAuG1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EAmE3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,EAGrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,EAoB1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAWzE"}
@@ -0,0 +1,99 @@
1
+ import { Protocol, SchemaValidator as ISchemaValidator } from '../ProtocolManager.types';
2
+
3
+ interface BDSASchema {
4
+ properties?: {
5
+ stainIDs?: {
6
+ items?: {
7
+ properties?: Record<string, StainTypeDefinition>;
8
+ };
9
+ };
10
+ regionIDs?: {
11
+ properties?: RegionSchemaDefinition;
12
+ };
13
+ };
14
+ }
15
+ interface StainTypeDefinition {
16
+ title?: string;
17
+ properties?: {
18
+ antibody?: {
19
+ enum?: string[];
20
+ };
21
+ technique?: {
22
+ enum?: string[];
23
+ };
24
+ 'phospho-specific'?: {
25
+ enum?: string[];
26
+ };
27
+ dilution?: {
28
+ pattern?: string;
29
+ };
30
+ vendor?: {
31
+ pattern?: string;
32
+ };
33
+ };
34
+ required?: string[];
35
+ }
36
+ interface RegionSchemaDefinition {
37
+ regions?: {
38
+ properties?: Record<string, RegionTypeDefinition>;
39
+ };
40
+ hemisphere?: {
41
+ enum?: string[];
42
+ };
43
+ sliceOrientation?: {
44
+ enum?: string[];
45
+ };
46
+ damage?: {
47
+ items?: {
48
+ enum?: string[];
49
+ };
50
+ };
51
+ }
52
+ interface RegionTypeDefinition {
53
+ title?: string;
54
+ items?: {
55
+ enum?: string[];
56
+ };
57
+ }
58
+ export declare class SchemaValidator implements ISchemaValidator {
59
+ private schema;
60
+ private stainSchema;
61
+ private regionSchema;
62
+ loaded: boolean;
63
+ /**
64
+ * Load schemas from a URL or use provided schema object
65
+ * @param schemaUrl - URL to fetch schema from (e.g., '/bdsa-schema.json')
66
+ * @param schemaData - Optional schema data object (if already loaded)
67
+ */
68
+ loadSchemas(schemaUrl?: string, schemaData?: BDSASchema): Promise<boolean>;
69
+ getStainTypeOptions(): Array<{
70
+ value: string;
71
+ label: string;
72
+ }>;
73
+ getStainTypeDefinition(stainType: string): StainTypeDefinition | null;
74
+ getStainTypeProperties(stainType: string): Record<string, unknown>;
75
+ getStainTypeRequiredFields(stainType: string): string[];
76
+ getAntibodyOptions(stainType: string): string[];
77
+ getTechniqueOptions(stainType: string): string[];
78
+ getPhosphoSpecificOptions(stainType: string): string[];
79
+ getDilutionPattern(stainType: string): string | null;
80
+ getVendorPattern(stainType: string): string | null;
81
+ getRegionTypeOptions(): Array<{
82
+ value: string;
83
+ label: string;
84
+ }>;
85
+ getRegionTypeDefinition(regionType: string): RegionTypeDefinition | null;
86
+ getLandmarkOptions(regionType: string): string[];
87
+ getHemisphereOptions(): string[];
88
+ getSliceOrientationOptions(): string[];
89
+ getDamageOptions(): string[];
90
+ validateStainProtocol(data: Partial<Protocol>): Record<string, string>;
91
+ validateRegionProtocol(data: Partial<Protocol>): Record<string, string>;
92
+ isLoaded(): boolean;
93
+ getSchema(): BDSASchema | null;
94
+ getStainSchema(): Record<string, StainTypeDefinition> | null;
95
+ getRegionSchema(): RegionSchemaDefinition | null;
96
+ }
97
+ export declare function createSchemaValidator(): SchemaValidator;
98
+ export {};
99
+ //# sourceMappingURL=schemaValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaValidator.d.ts","sourceRoot":"","sources":["../../../../src/components/ProtocolManager/utils/schemaValidator.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { default as React } from 'react';
2
2
  import { SlideViewerProps } from './SlideViewer.types';
3
3
 
4
- export type { SlideImageInfo, AnnotationFeature, AnnotationInfoProperty, AnnotationInfoConfig, SlideViewerProps } from './SlideViewer.types';
4
+ export type { SlideImageInfo, AnnotationFeature, AnnotationInfoProperty, AnnotationInfoConfig, SlideViewerProps, ViewportBounds, OverlayTileSource } from './SlideViewer.types';
5
5
  /**
6
6
  * A slide viewer component that integrates OpenSeadragon with Paper.js annotations
7
7
  * for viewing Digital Slide Archive images with annotation overlays.
@@ -1 +1 @@
1
- {"version":3,"file":"SlideViewer.d.ts","sourceRoot":"","sources":["../../../src/components/SlideViewer/SlideViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAOhF,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,qBAAqB,CAAA;AAO9E,OAAO,mBAAmB,CAAA;AAG1B,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE5I;;;GAGG;AACH,eAAO,MAAM,WAAW,yFA4xBvB,CAAA"}
1
+ {"version":3,"file":"SlideViewer.d.ts","sourceRoot":"","sources":["../../../src/components/SlideViewer/SlideViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAOhF,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,qBAAqB,CAAA;AAO9E,OAAO,mBAAmB,CAAA;AAG1B,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE/K;;;GAGG;AACH,eAAO,MAAM,WAAW,yFA21BvB,CAAA"}