med-viewer-sdk 0.1.13 → 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.
Files changed (79) hide show
  1. package/dist/core/Toolbar.d.ts +1 -1
  2. package/dist/med-viewer-sdk.mjs +89 -41
  3. package/dist/med-viewer-sdk.umd.js +1 -1
  4. package/package.json +3 -4
  5. package/src/adapters/vue/MedViewer.ts +0 -38
  6. package/src/adapters/vue/index.ts +0 -4
  7. package/src/assets/icons/button_grouphover.png +0 -0
  8. package/src/assets/icons/button_hover.png +0 -0
  9. package/src/assets/icons/button_pressed.png +0 -0
  10. package/src/assets/icons/button_rest.png +0 -0
  11. package/src/assets/icons/flip_grouphover.png +0 -0
  12. package/src/assets/icons/flip_hover.png +0 -0
  13. package/src/assets/icons/flip_pressed.png +0 -0
  14. package/src/assets/icons/flip_rest.png +0 -0
  15. package/src/assets/icons/fullpage_grouphover.png +0 -0
  16. package/src/assets/icons/fullpage_hover.png +0 -0
  17. package/src/assets/icons/fullpage_pressed.png +0 -0
  18. package/src/assets/icons/fullpage_rest.png +0 -0
  19. package/src/assets/icons/home_grouphover.png +0 -0
  20. package/src/assets/icons/home_hover.png +0 -0
  21. package/src/assets/icons/home_pressed.png +0 -0
  22. package/src/assets/icons/home_rest.png +0 -0
  23. package/src/assets/icons/next_grouphover.png +0 -0
  24. package/src/assets/icons/next_hover.png +0 -0
  25. package/src/assets/icons/next_pressed.png +0 -0
  26. package/src/assets/icons/next_rest.png +0 -0
  27. package/src/assets/icons/previous_grouphover.png +0 -0
  28. package/src/assets/icons/previous_hover.png +0 -0
  29. package/src/assets/icons/previous_pressed.png +0 -0
  30. package/src/assets/icons/previous_rest.png +0 -0
  31. package/src/assets/icons/rotateleft_grouphover.png +0 -0
  32. package/src/assets/icons/rotateleft_hover.png +0 -0
  33. package/src/assets/icons/rotateleft_pressed.png +0 -0
  34. package/src/assets/icons/rotateleft_rest.png +0 -0
  35. package/src/assets/icons/rotateright_grouphover.png +0 -0
  36. package/src/assets/icons/rotateright_hover.png +0 -0
  37. package/src/assets/icons/rotateright_pressed.png +0 -0
  38. package/src/assets/icons/rotateright_rest.png +0 -0
  39. package/src/assets/icons/selection_cancel_grouphover.png +0 -0
  40. package/src/assets/icons/selection_cancel_hover.png +0 -0
  41. package/src/assets/icons/selection_cancel_pressed.png +0 -0
  42. package/src/assets/icons/selection_cancel_rest.png +0 -0
  43. package/src/assets/icons/selection_confirm_grouphover.png +0 -0
  44. package/src/assets/icons/selection_confirm_hover.png +0 -0
  45. package/src/assets/icons/selection_confirm_pressed.png +0 -0
  46. package/src/assets/icons/selection_confirm_rest.png +0 -0
  47. package/src/assets/icons/selection_grouphover.png +0 -0
  48. package/src/assets/icons/selection_hover.png +0 -0
  49. package/src/assets/icons/selection_pressed.png +0 -0
  50. package/src/assets/icons/selection_rest.png +0 -0
  51. package/src/assets/icons/tool_anno.png +0 -0
  52. package/src/assets/icons/tool_color.png +0 -0
  53. package/src/assets/icons/tool_reset.png +0 -0
  54. package/src/assets/icons/tool_selection.png +0 -0
  55. package/src/assets/icons/zoomin_grouphover.png +0 -0
  56. package/src/assets/icons/zoomin_hover.png +0 -0
  57. package/src/assets/icons/zoomin_pressed.png +0 -0
  58. package/src/assets/icons/zoomin_rest.png +0 -0
  59. package/src/assets/icons/zoomout_grouphover.png +0 -0
  60. package/src/assets/icons/zoomout_hover.png +0 -0
  61. package/src/assets/icons/zoomout_pressed.png +0 -0
  62. package/src/assets/icons/zoomout_rest.png +0 -0
  63. package/src/core/AnnoAnnotator.ts +0 -94
  64. package/src/core/BaseAnnotator.ts +0 -43
  65. package/src/core/ColorAdjustPlugin.ts +0 -183
  66. package/src/core/Coords.ts +0 -9
  67. package/src/core/Engine.ts +0 -401
  68. package/src/core/Magnification.ts +0 -301
  69. package/src/core/Scalebar.ts +0 -88
  70. package/src/core/SelectionPlugin.ts +0 -243
  71. package/src/core/Toolbar.ts +0 -842
  72. package/src/i18n/i18n.ts +0 -104
  73. package/src/index.ts +0 -45
  74. package/src/plugins/ShapeLabelsFormatter.js +0 -512
  75. package/src/plugins/openseadragon-filtering.js +0 -211
  76. package/src/plugins/openseadragon-scalebar.js +0 -592
  77. package/src/plugins/openseadragon-selection.js +0 -657
  78. package/src/types/ShapeLabelsFormatter.d.ts +0 -12
  79. package/src/types/type.d.ts +0 -11
@@ -1,4 +1,4 @@
1
- import type { MedViewerEngine } from "./Engine";
1
+ import type { MedViewerEngine } from './Engine';
2
2
  export declare enum ToolbarPosition {
3
3
  TOP_LEFT = "TOP_LEFT",
4
4
  TOP_CENTER = "TOP_CENTER",
@@ -13556,9 +13556,9 @@ const dicts = {
13556
13556
  line: "线段",
13557
13557
  freehand: "手绘",
13558
13558
  reset: "重置",
13559
- annoSettings: "标注设置",
13559
+ annoSettings: "标注",
13560
13560
  colorAdjust: "颜色调整",
13561
- screenshot: "截图设置",
13561
+ screenshot: "截图",
13562
13562
  brightness: "亮度",
13563
13563
  contrast: "对比度",
13564
13564
  saturation: "饱和度",
@@ -13596,9 +13596,9 @@ const dicts = {
13596
13596
  line: "Line",
13597
13597
  freehand: "Freehand",
13598
13598
  reset: "Reset",
13599
- annoSettings: "Annotation Settings",
13599
+ annoSettings: "Annotation",
13600
13600
  colorAdjust: "Color Adjust",
13601
- screenshot: "Screenshot Settings",
13601
+ screenshot: "Screenshot",
13602
13602
  brightness: "Brightness",
13603
13603
  contrast: "Contrast",
13604
13604
  saturation: "Saturation",
@@ -15426,14 +15426,7 @@ const createAnnoDropdownContent = (engine, hide) => {
15426
15426
  colorSection.innerHTML = `<div class="med-toolbar-section-title">${t("toolbar.annoColor")}</div>`;
15427
15427
  const colorGrid = document.createElement("div");
15428
15428
  colorGrid.className = "med-color-grid";
15429
- const colors = [
15430
- "#ff0000",
15431
- "#00ff00",
15432
- "#0000ff",
15433
- "#ffff00",
15434
- "#00ffff",
15435
- "#ffffff"
15436
- ];
15429
+ const colors = ["#ff0000", "#00ff00", "#0000ff", "#ffff00", "#00ffff", "#ffffff"];
15437
15430
  colors.forEach((c2) => {
15438
15431
  const dot = document.createElement("div");
15439
15432
  dot.className = "med-color-item";
@@ -15584,24 +15577,16 @@ const createColorAdjustDropdownContent = (engine, hide) => {
15584
15577
  )
15585
15578
  );
15586
15579
  container.appendChild(
15587
- createSlider(
15588
- t("toolbar.hue"),
15589
- "hue-slider",
15590
- 0,
15591
- 360,
15592
- 1,
15593
- currentAdjustments.hue || 0,
15594
- (val) => {
15595
- var _a3;
15596
- (_a3 = engine.colorAdjust) == null ? void 0 : _a3.setAdjustments({
15597
- hue: val,
15598
- sepia: false,
15599
- greyscale: false
15600
- });
15601
- container.querySelector("#sepia-checkbox").checked = false;
15602
- container.querySelector("#greyscale-checkbox").checked = false;
15603
- }
15604
- )
15580
+ createSlider(t("toolbar.hue"), "hue-slider", 0, 360, 1, currentAdjustments.hue || 0, (val) => {
15581
+ var _a3;
15582
+ (_a3 = engine.colorAdjust) == null ? void 0 : _a3.setAdjustments({
15583
+ hue: val,
15584
+ sepia: false,
15585
+ greyscale: false
15586
+ });
15587
+ container.querySelector("#sepia-checkbox").checked = false;
15588
+ container.querySelector("#greyscale-checkbox").checked = false;
15589
+ })
15605
15590
  );
15606
15591
  container.appendChild(
15607
15592
  createSlider(
@@ -15758,9 +15743,7 @@ class MedToolbar {
15758
15743
  this.element.innerHTML = "";
15759
15744
  let buttonsToRender;
15760
15745
  if (this.options.buttons && this.options.buttons.length > 0) {
15761
- const defaultButtonMap = new Map(
15762
- DEFAULT_BUTTONS.map((btn) => [btn.id, btn])
15763
- );
15746
+ const defaultButtonMap = new Map(DEFAULT_BUTTONS.map((btn) => [btn.id, btn]));
15764
15747
  buttonsToRender = this.options.buttons.map((userBtn) => {
15765
15748
  const defaultBtn = defaultButtonMap.get(userBtn.id);
15766
15749
  return defaultBtn ? { ...defaultBtn, ...userBtn } : userBtn;
@@ -15795,16 +15778,19 @@ class MedToolbar {
15795
15778
  }
15796
15779
  };
15797
15780
  wrapper.appendChild(btn);
15781
+ if (btnConfig.label) {
15782
+ const tooltip = document.createElement("div");
15783
+ tooltip.className = "med-tooltip";
15784
+ tooltip.textContent = btnConfig.label;
15785
+ wrapper.appendChild(tooltip);
15786
+ }
15798
15787
  this.element.appendChild(wrapper);
15799
15788
  });
15800
15789
  }
15801
15790
  showDropdown(parent, config) {
15802
15791
  this.dropdownElement = document.createElement("div");
15803
15792
  this.dropdownElement.className = "med-toolbar-dropdown";
15804
- const content = config.dropdownContent(
15805
- this.engine,
15806
- () => this.closeDropdown()
15807
- );
15793
+ const content = config.dropdownContent(this.engine, () => this.closeDropdown());
15808
15794
  this.dropdownElement.appendChild(content);
15809
15795
  parent.appendChild(this.dropdownElement);
15810
15796
  this.adjustDropdownPosition();
@@ -15817,10 +15803,7 @@ class MedToolbar {
15817
15803
  this.closeDropdown();
15818
15804
  }
15819
15805
  };
15820
- setTimeout(
15821
- () => document.addEventListener("click", this.outsideClickHandler),
15822
- 0
15823
- );
15806
+ setTimeout(() => document.addEventListener("click", this.outsideClickHandler), 0);
15824
15807
  }
15825
15808
  adjustDropdownPosition() {
15826
15809
  if (!this.dropdownElement)
@@ -15970,6 +15953,71 @@ class MedToolbar {
15970
15953
  }
15971
15954
  .med-toolbar--MIDDLE_RIGHT .med-toolbar-dropdown.show { transform: translateX(0) !important; }
15972
15955
 
15956
+ /* Tooltip styles */
15957
+ .med-tooltip {
15958
+ position: absolute;
15959
+ padding: 6px 10px;
15960
+ background: rgba(0, 0, 0, 0.75);
15961
+ color: #fff;
15962
+ border-radius: 6px;
15963
+ font-size: 12px;
15964
+ white-space: nowrap;
15965
+ z-index: 102;
15966
+ opacity: 0;
15967
+ pointer-events: none;
15968
+ transition: opacity 0.2s ease, transform 0.2s ease;
15969
+ }
15970
+
15971
+ .med-toolbar-item-wrapper:hover .med-tooltip {
15972
+ opacity: 1;
15973
+ pointer-events: auto;
15974
+ }
15975
+
15976
+ /* Tooltip directions based on toolbar position */
15977
+
15978
+ /* Default: bottom tooltip (for top toolbars) */
15979
+ .med-toolbar-item-wrapper .med-tooltip {
15980
+ top: calc(100% + 12px); /* Position below the button */
15981
+ left: 50%;
15982
+ transform: translateX(-50%) translateY(0px);
15983
+ }
15984
+ .med-toolbar-item-wrapper:hover .med-tooltip {
15985
+ transform: translateX(-50%) translateY(0);
15986
+ }
15987
+
15988
+
15989
+ /* Top tooltip (for bottom toolbars) */
15990
+ [class*="med-toolbar--BOTTOM"] .med-toolbar-item-wrapper .med-tooltip {
15991
+ bottom: calc(100% + 12px); /* Position above the button */
15992
+ top: auto;
15993
+ left: 50%;
15994
+ transform: translateX(-50%) translateY(0px);
15995
+ }
15996
+ [class*="med-toolbar--BOTTOM"] .med-toolbar-item-wrapper:hover .med-tooltip {
15997
+ transform: translateX(-50%) translateY(0);
15998
+ }
15999
+
16000
+ /* Right tooltip (for middle-left toolbars) */
16001
+ [class*="med-toolbar--MIDDLE_LEFT"] .med-toolbar-item-wrapper .med-tooltip {
16002
+ left: calc(100% + 12px); /* Position to the right of the button */
16003
+ top: 50%;
16004
+ transform: translateY(-50%) translateX(0px);
16005
+ }
16006
+ [class*="med-toolbar--MIDDLE_LEFT"] .med-toolbar-item-wrapper:hover .med-tooltip {
16007
+ transform: translateY(-50%) translateX(0);
16008
+ }
16009
+
16010
+ /* Left tooltip (for middle-right toolbars) */
16011
+ [class*="med-toolbar--MIDDLE_RIGHT"] .med-toolbar-item-wrapper .med-tooltip {
16012
+ right: calc(100% + 12px); /* Position to the left of the button */
16013
+ top: 50%;
16014
+ left: auto;
16015
+ transform: translateY(-50%) translateX(0px);
16016
+ }
16017
+ [class*="med-toolbar--MIDDLE_RIGHT"] .med-toolbar-item-wrapper:hover .med-tooltip {
16018
+ transform: translateY(-50%) translateX(0);
16019
+ }
16020
+
15973
16021
  /* 内容样式 */
15974
16022
  .med-toolbar-section-title { font-size: 11px; color: rgba(255,255,255,0.4); margin-bottom: 10px; letter-spacing: 1px; }
15975
16023
  .med-color-grid { display: flex; gap: 10px; margin-bottom: 20px; }