med-viewer-sdk 0.1.19 → 0.1.20
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/dist/core/AnnoAnnotator.d.ts +5 -4
- package/dist/core/ColorAdjustPlugin.d.ts +2 -2
- package/dist/core/Engine.d.ts +12 -1
- package/dist/core/Magnification.d.ts +16 -0
- package/dist/core/SelectionPlugin.d.ts +4 -0
- package/dist/core/Toolbar.d.ts +16 -0
- package/dist/med-viewer-sdk.mjs +113 -11
- package/dist/med-viewer-sdk.umd.js +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { MedViewerEngine } from
|
|
3
|
-
import { BaseAnnotator } from
|
|
1
|
+
import 'annotorious-openseadragon-ld/dist/annotorious.min.css';
|
|
2
|
+
import { MedViewerEngine } from './Engine';
|
|
3
|
+
import { BaseAnnotator } from './BaseAnnotator';
|
|
4
4
|
export declare class AnnoAnnotator extends BaseAnnotator {
|
|
5
5
|
anno: any;
|
|
6
6
|
constructor(engine: MedViewerEngine, config?: any);
|
|
7
7
|
setEnabled(enabled: boolean): void;
|
|
8
|
-
setTool(tool:
|
|
8
|
+
setTool(tool: 'rect' | 'polygon' | 'line' | 'point' | 'circle' | 'ellipse' | 'freehand' | null, color?: string): void;
|
|
9
|
+
setLocale(locale: string): void;
|
|
9
10
|
getAnnotations(): any[];
|
|
10
11
|
setAnnotations(data: any[]): void;
|
|
11
12
|
clear(): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import 'openseadragon-filtering';
|
|
2
2
|
export interface ColorAdjustments {
|
|
3
3
|
brightness?: number;
|
|
4
4
|
contrast?: number;
|
|
@@ -12,7 +12,7 @@ export interface ColorAdjustments {
|
|
|
12
12
|
export interface ColorAdjustOptions {
|
|
13
13
|
adjustments?: ColorAdjustments;
|
|
14
14
|
debounceMs?: number;
|
|
15
|
-
loadMode?:
|
|
15
|
+
loadMode?: 'async' | 'sync';
|
|
16
16
|
}
|
|
17
17
|
export declare class ColorAdjustPlugin {
|
|
18
18
|
private viewer;
|
package/dist/core/Engine.d.ts
CHANGED
|
@@ -7,6 +7,12 @@ import { ScalebarPlugin, type ScalebarOptions } from './Scalebar';
|
|
|
7
7
|
import { SelectionPlugin, type SelectionOptions } from './SelectionPlugin';
|
|
8
8
|
import { MedToolbar, type ToolbarOptions } from './Toolbar';
|
|
9
9
|
import { Locale } from '../i18n/i18n';
|
|
10
|
+
export interface AnnotoriousOptions {
|
|
11
|
+
onCreateAnnotation?: (annotation: any) => void;
|
|
12
|
+
onUpdateAnnotation?: (annotation: any, previous: any) => void;
|
|
13
|
+
onDeleteAnnotation?: (annotation: any) => void;
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}
|
|
10
16
|
/**
|
|
11
17
|
* 引擎配置接口
|
|
12
18
|
*/
|
|
@@ -14,7 +20,7 @@ export interface MedEngineOptions {
|
|
|
14
20
|
osdOptions: OpenSeadragonType.Options;
|
|
15
21
|
locale?: Locale;
|
|
16
22
|
plugins?: {
|
|
17
|
-
annotorious?: boolean |
|
|
23
|
+
annotorious?: boolean | AnnotoriousOptions;
|
|
18
24
|
toolbar?: boolean | ToolbarOptions;
|
|
19
25
|
colorAdjust?: boolean | ColorAdjustOptions;
|
|
20
26
|
selection?: boolean | SelectionOptions;
|
|
@@ -90,4 +96,9 @@ export declare class MedViewerEngine {
|
|
|
90
96
|
* 销毁引擎与所有插件
|
|
91
97
|
*/
|
|
92
98
|
destroy(): void;
|
|
99
|
+
/**
|
|
100
|
+
* 动态设置语言
|
|
101
|
+
* @param locale 语言标识,如 'en' 或 'zh-CN'
|
|
102
|
+
*/
|
|
103
|
+
setLocale(locale: Locale): void;
|
|
93
104
|
}
|
|
@@ -32,6 +32,22 @@ export declare class MagnificationPlugin {
|
|
|
32
32
|
getMagnification(): number;
|
|
33
33
|
private setMagnification;
|
|
34
34
|
private fitToScreen;
|
|
35
|
+
/**
|
|
36
|
+
* 显示放大镜控件
|
|
37
|
+
*/
|
|
38
|
+
show(): void;
|
|
39
|
+
/**
|
|
40
|
+
* 隐藏放大镜控件
|
|
41
|
+
*/
|
|
42
|
+
hide(): void;
|
|
43
|
+
/**
|
|
44
|
+
* 切换放大镜控件的可见性
|
|
45
|
+
*/
|
|
46
|
+
toggle(): void;
|
|
47
|
+
/**
|
|
48
|
+
* 检查放大镜控件是否可见
|
|
49
|
+
*/
|
|
50
|
+
isVisible(): boolean;
|
|
35
51
|
refresh(): void;
|
|
36
52
|
destroy(): void;
|
|
37
53
|
private injectStyles;
|
|
@@ -65,6 +65,10 @@ export declare class SelectionPlugin {
|
|
|
65
65
|
private selection;
|
|
66
66
|
private options;
|
|
67
67
|
constructor(viewer: OpenSeadragon.Viewer, options?: SelectionOptions);
|
|
68
|
+
/**
|
|
69
|
+
* 更新语言环境,刷新工具提示
|
|
70
|
+
*/
|
|
71
|
+
updateLocale(): void;
|
|
68
72
|
private init;
|
|
69
73
|
private setupSelection;
|
|
70
74
|
/**
|
package/dist/core/Toolbar.d.ts
CHANGED
|
@@ -30,6 +30,22 @@ export declare class MedToolbar {
|
|
|
30
30
|
private dropdownElement;
|
|
31
31
|
private outsideClickHandler;
|
|
32
32
|
constructor(engine: MedViewerEngine, options?: ToolbarOptions);
|
|
33
|
+
/**
|
|
34
|
+
* 显示工具栏
|
|
35
|
+
*/
|
|
36
|
+
show(): void;
|
|
37
|
+
/**
|
|
38
|
+
* 隐藏工具栏
|
|
39
|
+
*/
|
|
40
|
+
hide(): void;
|
|
41
|
+
/**
|
|
42
|
+
* 切换工具栏的可见性
|
|
43
|
+
*/
|
|
44
|
+
toggle(): void;
|
|
45
|
+
/**
|
|
46
|
+
* 检查工具栏是否可见
|
|
47
|
+
*/
|
|
48
|
+
isVisible(): boolean;
|
|
33
49
|
destroy(): void;
|
|
34
50
|
private render;
|
|
35
51
|
private showDropdown;
|
package/dist/med-viewer-sdk.mjs
CHANGED
|
@@ -12552,7 +12552,7 @@ class AnnoAnnotator extends BaseAnnotator {
|
|
|
12552
12552
|
// 可以在此配置样式、偏好等
|
|
12553
12553
|
});
|
|
12554
12554
|
this.injectStyles();
|
|
12555
|
-
this.initEvents();
|
|
12555
|
+
this.initEvents(config);
|
|
12556
12556
|
}
|
|
12557
12557
|
setEnabled(enabled) {
|
|
12558
12558
|
this.anno.setDrawingEnabled(enabled);
|
|
@@ -12565,6 +12565,12 @@ class AnnoAnnotator extends BaseAnnotator {
|
|
|
12565
12565
|
this.setEnabled(true);
|
|
12566
12566
|
}
|
|
12567
12567
|
}
|
|
12568
|
+
setLocale(locale) {
|
|
12569
|
+
var _a2;
|
|
12570
|
+
if ((_a2 = this.anno) == null ? void 0 : _a2.setLocale) {
|
|
12571
|
+
this.anno.setLocale(locale);
|
|
12572
|
+
}
|
|
12573
|
+
}
|
|
12568
12574
|
getAnnotations() {
|
|
12569
12575
|
return this.anno.getAnnotations();
|
|
12570
12576
|
}
|
|
@@ -12577,10 +12583,22 @@ class AnnoAnnotator extends BaseAnnotator {
|
|
|
12577
12583
|
destroy() {
|
|
12578
12584
|
this.anno.destroy();
|
|
12579
12585
|
}
|
|
12580
|
-
initEvents() {
|
|
12581
|
-
|
|
12582
|
-
|
|
12583
|
-
|
|
12586
|
+
initEvents(config) {
|
|
12587
|
+
if (config.onCreateAnnotation) {
|
|
12588
|
+
this.anno.on("createAnnotation", (annotation) => {
|
|
12589
|
+
config.onCreateAnnotation(annotation);
|
|
12590
|
+
});
|
|
12591
|
+
}
|
|
12592
|
+
if (config.onUpdateAnnotation) {
|
|
12593
|
+
this.anno.on("updateAnnotation", (annotation, previous) => {
|
|
12594
|
+
config.onUpdateAnnotation(annotation, previous);
|
|
12595
|
+
});
|
|
12596
|
+
}
|
|
12597
|
+
if (config.onDeleteAnnotation) {
|
|
12598
|
+
this.anno.on("deleteAnnotation", (annotation) => {
|
|
12599
|
+
config.onDeleteAnnotation(annotation);
|
|
12600
|
+
});
|
|
12601
|
+
}
|
|
12584
12602
|
}
|
|
12585
12603
|
injectStyles() {
|
|
12586
12604
|
const styleId = "med-anno-v2-7-17-overrides";
|
|
@@ -14176,8 +14194,12 @@ class MagnificationPlugin {
|
|
|
14176
14194
|
return currentZoom * baseMag;
|
|
14177
14195
|
}
|
|
14178
14196
|
// 修改 setMagnification 方法
|
|
14179
|
-
async setMagnification(mag) {
|
|
14197
|
+
async setMagnification(mag, target = null) {
|
|
14180
14198
|
var _a2, _b2;
|
|
14199
|
+
let point = this.viewer.viewport.getCenter();
|
|
14200
|
+
if (target) {
|
|
14201
|
+
point = this.viewer.viewport.imageToViewportCoordinates(target.x, target.y);
|
|
14202
|
+
}
|
|
14181
14203
|
if (this.options.type === "LD") {
|
|
14182
14204
|
const tiledImage = this.viewer.world.getItemAt(0);
|
|
14183
14205
|
if (!this.magnificationDisplay || !tiledImage)
|
|
@@ -14189,7 +14211,7 @@ class MagnificationPlugin {
|
|
|
14189
14211
|
this.viewer.viewport.getZoom();
|
|
14190
14212
|
const conversionFactor = 20 * 11e-4 * pixelsPerMeter / width;
|
|
14191
14213
|
const targetZoom = mag / conversionFactor;
|
|
14192
|
-
await this.viewer.viewport.zoomTo(targetZoom,
|
|
14214
|
+
await this.viewer.viewport.zoomTo(targetZoom, point, false);
|
|
14193
14215
|
this.updateMagnificationDisplay();
|
|
14194
14216
|
} else {
|
|
14195
14217
|
const tiledImage = this.viewer.world.getItemAt(0);
|
|
@@ -14198,7 +14220,7 @@ class MagnificationPlugin {
|
|
|
14198
14220
|
const baseMag = ((_b2 = this.viewer.source) == null ? void 0 : _b2.max_magnification) || 40;
|
|
14199
14221
|
const targetImageZoom = mag / baseMag;
|
|
14200
14222
|
const targetViewportZoom = this.viewer.viewport.imageToViewportZoom(targetImageZoom);
|
|
14201
|
-
await this.viewer.viewport.zoomTo(targetViewportZoom,
|
|
14223
|
+
await this.viewer.viewport.zoomTo(targetViewportZoom, point, false);
|
|
14202
14224
|
this.updateMagnificationDisplay();
|
|
14203
14225
|
}
|
|
14204
14226
|
}
|
|
@@ -14207,6 +14229,36 @@ class MagnificationPlugin {
|
|
|
14207
14229
|
this.viewer.viewport.fitHorizontally(true);
|
|
14208
14230
|
this.viewer.viewport.goHome();
|
|
14209
14231
|
}
|
|
14232
|
+
/**
|
|
14233
|
+
* 显示放大镜控件
|
|
14234
|
+
*/
|
|
14235
|
+
show() {
|
|
14236
|
+
if (this.magnificationElement) {
|
|
14237
|
+
this.magnificationElement.style.display = "flex";
|
|
14238
|
+
}
|
|
14239
|
+
}
|
|
14240
|
+
/**
|
|
14241
|
+
* 隐藏放大镜控件
|
|
14242
|
+
*/
|
|
14243
|
+
hide() {
|
|
14244
|
+
if (this.magnificationElement) {
|
|
14245
|
+
this.magnificationElement.style.display = "none";
|
|
14246
|
+
}
|
|
14247
|
+
}
|
|
14248
|
+
/**
|
|
14249
|
+
* 切换放大镜控件的可见性
|
|
14250
|
+
*/
|
|
14251
|
+
toggle() {
|
|
14252
|
+
if (this.magnificationElement) {
|
|
14253
|
+
this.magnificationElement.style.display = this.magnificationElement.style.display === "none" ? "flex" : "none";
|
|
14254
|
+
}
|
|
14255
|
+
}
|
|
14256
|
+
/**
|
|
14257
|
+
* 检查放大镜控件是否可见
|
|
14258
|
+
*/
|
|
14259
|
+
isVisible() {
|
|
14260
|
+
return this.magnificationElement ? this.magnificationElement.style.display !== "none" : false;
|
|
14261
|
+
}
|
|
14210
14262
|
refresh() {
|
|
14211
14263
|
this.updateMagnificationDisplay();
|
|
14212
14264
|
}
|
|
@@ -15232,9 +15284,11 @@ const selectionCancelRest = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAA
|
|
|
15232
15284
|
const selectionCancelGroup = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAiCAYAAADVhWD8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODIyQUM5QkUyMDFBMkEwRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRjQ1MzBFODczRjMxMUU1OEFDRDgxN0E3MzVCRjJGOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjQ1MzBFNzczRjMxMUU1OEFDRDgxN0E3MzVCRjJGOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDg4MDExNzQwNzIwNjgxMTgyMkFGQkMyQkQyOEFDNzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDc4MDExNzQwNzIwNjgxMTgyMkFDOUJFMjAxQTJBMEYiLz4gPC9yZGY6RGVzY3Jp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";
|
|
15233
15285
|
const selectionCancelHover = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAiCAYAAADVhWD8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODIyQUM5QkUyMDFBMkEwRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMUM1QzMyODczRjExMUU1OEFDRDgxN0E3MzVCRjJGOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMUM1QzMyNzczRjExMUU1OEFDRDgxN0E3MzVCRjJGOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDY4MDExNzQwNzIwNjgxMTgyMkFGQkMyQkQyOEFDNzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDc4MDExNzQwNzIwNjgxMTgyMkFDOUJFMjAxQTJBMEYiLz4gPC9yZGY6RGVzY3Jp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";
|
|
15234
15286
|
const selectionCancelDown = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAiCAYAAADVhWD8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODIyQUM5QkUyMDFBMkEwRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERkFFQjU3NzczRjExMUU1OEFDRDgxN0E3MzVCRjJGOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERkFFQjU3NjczRjExMUU1OEFDRDgxN0E3MzVCRjJGOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDY4MDExNzQwNzIwNjgxMTgyMkFGQkMyQkQyOEFDNzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDc4MDExNzQwNzIwNjgxMTgyMkFDOUJFMjAxQTJBMEYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5hnk7XAAAJVElEQVR42qRYe2xUWRk/j3vunfe0nXZaaKdleJaHPApEcEU2LqxGEiOJMWgCIZoY/4E1EDcxEdGsfxhJNCJL+GPFx0rYrEvCogZQHhLWFdYFul1YYPraQqedttPOszNz5z6O3xnuLbfDQLLhZr6cOed895zf+V7n+y7mnKPneTA81WP8KYuKYSeZpjnTejwehD8LGGtje3PsILtvL8YdVOmXy2VeDcBuBdXX1yPpM4IQRICo1dr/sQOMIBPIcLayLFfmMpkMtwE4qbLPsyRTA4RkERO0ZcsW77Zt25rg1ETXdXzhwoX05cuX8xYAHUizSLfItAHH4/FZoKLR6NPBOIA4QSg7d+4M7d+///ORSKTTUAtt8f579dw6WVNkftogbPTu3bu9hw4dunnp0qUUDKsOmgUqFovNAFq2bFltMA4g1AIh7969O7Rv374XGzzy1o/f+9fqiYHe5ux40muUDY5NDO+YiCoS9jY2TDdGFySia1746P5Q/L0jR4787+LFixOwRgGoBFS2AAnp8Zs3b1YArVu37jEY28IppdVAlHPnzq1fv7Zrx42/v7VhuLt7XjY+ScvpaQNrOmcARcKIY1gGE/gxSljQS1ytDWZw6dIH8za+/P6p0+/+8+DBg7dgrWkLlOoEdOXKFb558+bHBqxpmm1ITtUocKpNC9pbv3Xxjd98ZezjWKA4ljFcuqm1MGYEFJfppgRRcAohS3EYTdeJOlnCpalhmhtPzeudHG/csullhbz2mufAgQPXHd5ne505PT3NZxlwLpdDgUDAlooA4jp+/PiyL39p0/ffP3HsG6M37nt4umiEqKSHmWz6KDNlQjgjeGZ1bgIqw+CaoWNV1UjB1LBWLytk7SLVu+Grp//w5om/nThx4g6wZi0pqZaBV4x6RjKqqiKHeoS3KMuXL//CjTNvbh3rjvlIpqjNVWS9JaCYAT+waATzMgUAlkwqZzIRkzmRJYKVvGTKWc6LkwVV747JZbe8taurawjADDsM2en+nNhgSqWS/VeMsZMnT27IDn6ybazn3hw0NW3MZcycWy8j71Ki/AlpgeJi7pYaKUMuRrksS9gtS6xJYsVO5P6jxAN8CXEzP5EUQpCcyBreWF9jRCps3rVr12pY3y8kbx2aODeuPOCqzoAmt7e3rx/7pHu1OpoyQgSbISZxfyMl70wSV3xaIW/0YVdpvi6zOk6wjLFo1YWG/PuBR/OnsrJLDoFBEUwIBFvanzTC6fjKJUuWLIb1vUBusY8jgGJS7dXCXvbs2dOWjw+sKYwkgu6SZoYkhrwKIxKjdOcL2JwT9oCCfegvA25FW6gp3ojORCv6JvUhMb9zIzepQimRKcEUjCunmsHRhK+FlJaA+uc6wEi2UZMqIBUvggC0ODc2FOVTeV4Hwz6ZYuaViFHg2Duumz/8Wt4MhxRkEC96+2EdG2s1ZdGKvhgX896kaXKdYeaHE4ClGxwkOJLjc3Aegm00YqnJBlNTMhU1wT3SnBl+4C/E+riUSSEFwCghN6EeDy4mvdyVkIwfbElyv9tAeZWit283ENGKvhgX84JP8CthNyGKRPTCNC4PxbknN+FVFKVOOIgFxFbTExdlRTpwz/ioCorPTCItm8GZyZgpSdGKKAE+1yYkFFrrM1eF+8m3X701EzdO/moNlz/1mMkbea5ldc7BT8CeyHTfkKFNlcDw6rCHl1yGYbiqgOCngcH5fJ6HqIn9Xo49ENGY3wAIE4+kyHFFuvcTZfTK4f5Zucwrv7yD39q7ADWiPMTkMhCHnSiSgzr4P0R3P6hK0hEEOVTjxkek1iWZSqWK1Kuo/iZGPM1w5YQ5pYpGJLdOXCFMkmGZ7vhtHx2fKoONyOivh7sqreiLcTEv+AQ/llQiN5rUBet4WhgxfFTLZrNarX2rwVQiYSKRmNAYS/vnuJA3jIinycBUKYoTorGQjHccfUDGUxoKN8jo3O9W8a3zJS7aZgEIxsW84BP8hBWRu1HH3mZE/BEFJzUzDYfNO4OdnYTVAmPevn17IFGgg65IHZb94El1iEhejbhbJPKT01OPgRxdhVr1NMreG0KtWhqdfX0VsgEJPsEvuctwcSLiDlLsW1CH/30/NQiHTVrXgOHIcZ4AIyb0a9euJWKjpR5tbjTtDvoAENhhkGPJo+PjP+5AX+yqQ+ePrkARI4mKI3Gs55O4OBrHon/29RWVecEn+MV74v1Agw/nmlvT714bGQQ1JR2phJ3fzALjTBfV/v7+ng9G2QeuhRGI+DJiPgziUVEjSaF//GIOaidJpGXGwKBUxAK80op+B4yLecEn+MV7HllGwc429OfrqQ+TyeSII7dRndKRaqipki5evXq1m9IXL2/4zqLlK3mqTTMT4EQGMkpJxEE13DQQdekAwpGDYxUZxTFkQswxdR3ECRdnSUL+xjDq90SGD5+6fmtqamoAmPMWIDslna2m7du3OyUjRFgaGhq6deid5PmJtpUpn6cJMUOCOGMgTEsAREOST7g93HYBVGlFX4yLeYi5Ff6grwnlostT3zx46zyo5wGsm7HA2FnfjGRmwFi+b9uNYCoODg72xfqGLu09NnYm3tI17g92IKUI9Y1GRWqKCCSFGGRrU6UP42JeBr5gsB0lWj43/tKPbp55ODLZC2nKp7Bu2gJTtCRj2htLVWC4hRRb+iwMDAx8CHP6tleTD3+9d9HXty4ML3VNDLNyKoV0XITr2HgkXxFtDYoY9yAZoj2PtGlne+m97/78P9cyucI9iOox4Jq0JONMrGz3fpzpQeKDIEyjnp4eZ/4rwrZH5B+QG4eg0NoYbfOv+tn3FqzpiuBImOWDqFSs2A+m8IrLg4YL7snuB9rIT4/d+ejOQGbQAWLKkkrOYcB6TTCdnZ2VHLi3t9dZojDrQhPXvU+AIoSE3G73CmhbRf+ldQ2hcD1TElMl9fx/JybhQHlYJwX00AKQs9LMnEM9ahWQ2WA6OjpmCqqRkZHqCoFZgNyWpGxygY3UixbWMazNdEedVHBQsVap4iiBH4Npbm6eVW6m0+nqcpZZ+YfiINkap47y1rBsoVxVwJVrRN1ZRdsMmGAw+ERRDnlxrfLWBsYclWZ1ra1XlbdGdXlbDWQWGJfLNQuIk6q+OJAaxT+pulLMquL/mSCeAAPeMvM14FkfJJ7xSeSJ27/GJ5JnP47TP++Dn3eB/wswAJT1A7Jy8nfmAAAAAElFTkSuQmCC";
|
|
15235
|
-
|
|
15236
|
-
OpenSeadragon.setString("Tooltips.
|
|
15237
|
-
OpenSeadragon.setString("Tooltips.
|
|
15287
|
+
function updateOsdTooltips() {
|
|
15288
|
+
OpenSeadragon.setString("Tooltips.SelectionToggle", t("selection.toggle"));
|
|
15289
|
+
OpenSeadragon.setString("Tooltips.SelectionConfirm", t("selection.confirm"));
|
|
15290
|
+
OpenSeadragon.setString("Tooltips.SelectionCancel", t("selection.cancel"));
|
|
15291
|
+
}
|
|
15238
15292
|
class SelectionPlugin {
|
|
15239
15293
|
constructor(viewer, options = {}) {
|
|
15240
15294
|
__publicField(this, "viewer");
|
|
@@ -15300,6 +15354,13 @@ class SelectionPlugin {
|
|
|
15300
15354
|
...options
|
|
15301
15355
|
};
|
|
15302
15356
|
this.init();
|
|
15357
|
+
updateOsdTooltips();
|
|
15358
|
+
}
|
|
15359
|
+
/**
|
|
15360
|
+
* 更新语言环境,刷新工具提示
|
|
15361
|
+
*/
|
|
15362
|
+
updateLocale() {
|
|
15363
|
+
updateOsdTooltips();
|
|
15303
15364
|
}
|
|
15304
15365
|
init() {
|
|
15305
15366
|
this.viewer.addOnceHandler("open", () => {
|
|
@@ -15717,6 +15778,30 @@ class MedToolbar {
|
|
|
15717
15778
|
this.render();
|
|
15718
15779
|
this.mount();
|
|
15719
15780
|
}
|
|
15781
|
+
/**
|
|
15782
|
+
* 显示工具栏
|
|
15783
|
+
*/
|
|
15784
|
+
show() {
|
|
15785
|
+
this.element.style.display = "flex";
|
|
15786
|
+
}
|
|
15787
|
+
/**
|
|
15788
|
+
* 隐藏工具栏
|
|
15789
|
+
*/
|
|
15790
|
+
hide() {
|
|
15791
|
+
this.element.style.display = "none";
|
|
15792
|
+
}
|
|
15793
|
+
/**
|
|
15794
|
+
* 切换工具栏的可见性
|
|
15795
|
+
*/
|
|
15796
|
+
toggle() {
|
|
15797
|
+
this.element.style.display = this.element.style.display === "none" ? "flex" : "none";
|
|
15798
|
+
}
|
|
15799
|
+
/**
|
|
15800
|
+
* 检查工具栏是否可见
|
|
15801
|
+
*/
|
|
15802
|
+
isVisible() {
|
|
15803
|
+
return this.element.style.display !== "none";
|
|
15804
|
+
}
|
|
15720
15805
|
destroy() {
|
|
15721
15806
|
this.closeDropdown(true);
|
|
15722
15807
|
this.element.remove();
|
|
@@ -16382,6 +16467,23 @@ class MedViewerEngine {
|
|
|
16382
16467
|
(_e2 = this.colorAdjust) == null ? void 0 : _e2.destroy();
|
|
16383
16468
|
this.viewer.destroy();
|
|
16384
16469
|
}
|
|
16470
|
+
/**
|
|
16471
|
+
* 动态设置语言
|
|
16472
|
+
* @param locale 语言标识,如 'en' 或 'zh-CN'
|
|
16473
|
+
*/
|
|
16474
|
+
setLocale(locale) {
|
|
16475
|
+
setLocale(locale);
|
|
16476
|
+
this.options.locale = locale;
|
|
16477
|
+
if (this.anno) {
|
|
16478
|
+
this.anno.setLocale(locale);
|
|
16479
|
+
}
|
|
16480
|
+
if (this.selection) {
|
|
16481
|
+
this.selection.updateLocale();
|
|
16482
|
+
}
|
|
16483
|
+
if (this.toolbar)
|
|
16484
|
+
;
|
|
16485
|
+
console.log(`[MedEngine] Locale changed to ${locale}`);
|
|
16486
|
+
}
|
|
16385
16487
|
}
|
|
16386
16488
|
if (typeof window !== "undefined") {
|
|
16387
16489
|
window.MedViewerSDK = {
|