copper3d 3.4.0 → 3.4.1

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.
@@ -88,6 +88,15 @@ export declare class EventRouter {
88
88
  isCtrlHeld(): boolean;
89
89
  isLeftButtonDown(): boolean;
90
90
  isRightButtonDown(): boolean;
91
+ /**
92
+ * Whether the user is currently performing a slice-drag (left-button held
93
+ * in idle mode with a non-sphere tool). In this state the mouse wheel is
94
+ * suppressed so that slice switching via drag and slice/zoom via wheel
95
+ * cannot fight each other. Draw / contrast / crosshair set `mode` away
96
+ * from 'idle', and sphere-family tools use left-drag for their own
97
+ * purposes, so both are correctly excluded.
98
+ */
99
+ isDragSliceActive(): boolean;
91
100
  /**
92
101
  * Update keyboard settings.
93
102
  */
@@ -212,6 +212,19 @@ export class EventRouter {
212
212
  isRightButtonDown() {
213
213
  return this.state.rightButtonDown;
214
214
  }
215
+ /**
216
+ * Whether the user is currently performing a slice-drag (left-button held
217
+ * in idle mode with a non-sphere tool). In this state the mouse wheel is
218
+ * suppressed so that slice switching via drag and slice/zoom via wheel
219
+ * cannot fight each other. Draw / contrast / crosshair set `mode` away
220
+ * from 'idle', and sphere-family tools use left-drag for their own
221
+ * purposes, so both are correctly excluded.
222
+ */
223
+ isDragSliceActive() {
224
+ return (this.state.leftButtonDown &&
225
+ this.mode === 'idle' &&
226
+ !SPHERE_TOOLS.has(this.guiTool));
227
+ }
215
228
  // ========================================
216
229
  // Configuration
217
230
  // ========================================
@@ -379,7 +392,15 @@ export class EventRouter {
379
392
  }
380
393
  }
381
394
  handleWheel(ev) {
382
- // Route to external handler
395
+ // Mutual exclusion: slice-drag wins over wheel. While the left button
396
+ // is held in a slice-drag context, swallow wheel events so the image
397
+ // cannot scroll/zoom at the same time the user is dragging slices.
398
+ // Re-checked on every event, so pressing the left button mid-scroll
399
+ // flips us into drag mode on the very next wheel tick.
400
+ if (this.isDragSliceActive()) {
401
+ ev.preventDefault();
402
+ return;
403
+ }
383
404
  if (this.wheelHandler) {
384
405
  this.wheelHandler(ev);
385
406
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EventRouter.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/eventRouter/EventRouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventRouter.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/eventRouter/EventRouter.ts"],"names":[],"mappings":"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"}
@@ -74038,6 +74038,19 @@ class EventRouter {
74038
74038
  isRightButtonDown() {
74039
74039
  return this.state.rightButtonDown;
74040
74040
  }
74041
+ /**
74042
+ * Whether the user is currently performing a slice-drag (left-button held
74043
+ * in idle mode with a non-sphere tool). In this state the mouse wheel is
74044
+ * suppressed so that slice switching via drag and slice/zoom via wheel
74045
+ * cannot fight each other. Draw / contrast / crosshair set `mode` away
74046
+ * from 'idle', and sphere-family tools use left-drag for their own
74047
+ * purposes, so both are correctly excluded.
74048
+ */
74049
+ isDragSliceActive() {
74050
+ return (this.state.leftButtonDown &&
74051
+ this.mode === 'idle' &&
74052
+ !SPHERE_TOOLS.has(this.guiTool));
74053
+ }
74041
74054
  // ========================================
74042
74055
  // Configuration
74043
74056
  // ========================================
@@ -74205,7 +74218,15 @@ class EventRouter {
74205
74218
  }
74206
74219
  }
74207
74220
  handleWheel(ev) {
74208
- // Route to external handler
74221
+ // Mutual exclusion: slice-drag wins over wheel. While the left button
74222
+ // is held in a slice-drag context, swallow wheel events so the image
74223
+ // cannot scroll/zoom at the same time the user is dragging slices.
74224
+ // Re-checked on every event, so pressing the left button mid-scroll
74225
+ // flips us into drag mode on the very next wheel tick.
74226
+ if (this.isDragSliceActive()) {
74227
+ ev.preventDefault();
74228
+ return;
74229
+ }
74209
74230
  if (this.wheelHandler) {
74210
74231
  this.wheelHandler(ev);
74211
74232
  }
@@ -79284,7 +79305,7 @@ function evaluateElement(element, weights) {
79284
79305
  }
79285
79306
 
79286
79307
  // import * as kiwrious from "copper3d_plugin_heart_k";
79287
- const REVISION = "v3.4.0-beta";
79308
+ const REVISION = "v3.4.1-beta";
79288
79309
  console.log(`%cCopper3D Visualisation %cBeta:${REVISION}`, "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
79289
79310
 
79290
79311
  export { CHANNEL_COLORS, CHANNEL_HEX_COLORS, CameraViewPoint, Copper3dTrackballControls, GaussianSmoother, MeshNodeTool, NrrdTools, REVISION, addBoxHelper, addLabelToScene, configKiwriousHeart, convert3DPostoScreenPos, convertScreenPosto3DPos, copperMScene, copperMSceneRenderer, copperRenderer, copperRendererOnDemond, copperScene, copperSceneOnDemond, createTexture2D_NRRD, fullScreenListenner, kiwrious, loading, removeGuiFolderChilden, rgbaToCss, rgbaToHex, setHDRFilePath, throttle };
@@ -74046,6 +74046,19 @@ void main() {
74046
74046
  isRightButtonDown() {
74047
74047
  return this.state.rightButtonDown;
74048
74048
  }
74049
+ /**
74050
+ * Whether the user is currently performing a slice-drag (left-button held
74051
+ * in idle mode with a non-sphere tool). In this state the mouse wheel is
74052
+ * suppressed so that slice switching via drag and slice/zoom via wheel
74053
+ * cannot fight each other. Draw / contrast / crosshair set `mode` away
74054
+ * from 'idle', and sphere-family tools use left-drag for their own
74055
+ * purposes, so both are correctly excluded.
74056
+ */
74057
+ isDragSliceActive() {
74058
+ return (this.state.leftButtonDown &&
74059
+ this.mode === 'idle' &&
74060
+ !SPHERE_TOOLS.has(this.guiTool));
74061
+ }
74049
74062
  // ========================================
74050
74063
  // Configuration
74051
74064
  // ========================================
@@ -74213,7 +74226,15 @@ void main() {
74213
74226
  }
74214
74227
  }
74215
74228
  handleWheel(ev) {
74216
- // Route to external handler
74229
+ // Mutual exclusion: slice-drag wins over wheel. While the left button
74230
+ // is held in a slice-drag context, swallow wheel events so the image
74231
+ // cannot scroll/zoom at the same time the user is dragging slices.
74232
+ // Re-checked on every event, so pressing the left button mid-scroll
74233
+ // flips us into drag mode on the very next wheel tick.
74234
+ if (this.isDragSliceActive()) {
74235
+ ev.preventDefault();
74236
+ return;
74237
+ }
74217
74238
  if (this.wheelHandler) {
74218
74239
  this.wheelHandler(ev);
74219
74240
  }
@@ -79292,7 +79313,7 @@ void main() {
79292
79313
  }
79293
79314
 
79294
79315
  // import * as kiwrious from "copper3d_plugin_heart_k";
79295
- const REVISION = "v3.4.0-beta";
79316
+ const REVISION = "v3.4.1-beta";
79296
79317
  console.log(`%cCopper3D Visualisation %cBeta:${REVISION}`, "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
79297
79318
 
79298
79319
  exports.CHANNEL_COLORS = CHANNEL_COLORS;
package/dist/index.d.ts CHANGED
@@ -25,6 +25,6 @@ import type { ToolMode, IAnnotationCallbacks } from "./Utils/segmentation/core/t
25
25
  import { CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss } from "./Utils/segmentation/core/index";
26
26
  import type { LayerId, ChannelValue } from "./Utils/segmentation/core/index";
27
27
  import "./css/style.css";
28
- export declare const REVISION = "v3.4.0-beta";
28
+ export declare const REVISION = "v3.4.1-beta";
29
29
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, NrrdTools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, removeGuiFolderChilden, CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss, GaussianSmoother, };
30
30
  export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates, NrrdState, GuiState, IGuiMeta, ToolMode, IAnnotationCallbacks, LayerId, ChannelValue, };
package/dist/index.js CHANGED
@@ -21,7 +21,7 @@ import { MeshNodeTool } from "./Utils/MeshNodeTool";
21
21
  import { removeGuiFolderChilden } from "./Utils/segmentation/coreTools/gui";
22
22
  import { CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss } from "./Utils/segmentation/core/index";
23
23
  import "./css/style.css";
24
- export const REVISION = "v3.4.0-beta";
24
+ export const REVISION = "v3.4.1-beta";
25
25
  console.log(`%cCopper3D Visualisation %cBeta:${REVISION}`, "padding: 3px;color:white; background:#023047", "padding: 3px;color:white; background:#f50a25");
26
26
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, NrrdTools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, removeGuiFolderChilden, CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss, GaussianSmoother, };
27
27
  //# sourceMappingURL=index.js.map
@@ -88,6 +88,15 @@ export declare class EventRouter {
88
88
  isCtrlHeld(): boolean;
89
89
  isLeftButtonDown(): boolean;
90
90
  isRightButtonDown(): boolean;
91
+ /**
92
+ * Whether the user is currently performing a slice-drag (left-button held
93
+ * in idle mode with a non-sphere tool). In this state the mouse wheel is
94
+ * suppressed so that slice switching via drag and slice/zoom via wheel
95
+ * cannot fight each other. Draw / contrast / crosshair set `mode` away
96
+ * from 'idle', and sphere-family tools use left-drag for their own
97
+ * purposes, so both are correctly excluded.
98
+ */
99
+ isDragSliceActive(): boolean;
91
100
  /**
92
101
  * Update keyboard settings.
93
102
  */
@@ -25,6 +25,6 @@ import type { ToolMode, IAnnotationCallbacks } from "./Utils/segmentation/core/t
25
25
  import { CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss } from "./Utils/segmentation/core/index";
26
26
  import type { LayerId, ChannelValue } from "./Utils/segmentation/core/index";
27
27
  import "./css/style.css";
28
- export declare const REVISION = "v3.4.0-beta";
28
+ export declare const REVISION = "v3.4.1-beta";
29
29
  export { copperRenderer, copperRendererOnDemond, copperMSceneRenderer, setHDRFilePath, addLabelToScene, convert3DPostoScreenPos, convertScreenPosto3DPos, addBoxHelper, fullScreenListenner, configKiwriousHeart, copperScene, copperSceneOnDemond, copperMScene, CameraViewPoint, kiwrious, NrrdTools, loading, Copper3dTrackballControls, createTexture2D_NRRD, MeshNodeTool, throttle, removeGuiFolderChilden, CHANNEL_COLORS, CHANNEL_HEX_COLORS, rgbaToHex, rgbaToCss, GaussianSmoother, };
30
30
  export type { positionType, screenPosType, optsType, nrrdMeshesType, nrrdSliceType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, loadingBarType, IPaintImage, exportPaintImageType, IOptVTKLoader, ICommXYZ, IGUIStates, IGuiParameterSettings, INrrdStates, NrrdState, GuiState, IGuiMeta, ToolMode, IAnnotationCallbacks, LayerId, ChannelValue, };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "copper3d",
3
3
  "description": "A 3d visualisation package base on threejs provides multiple scenes and Nrrd image load funtion.",
4
- "version": "3.4.0",
4
+ "version": "3.4.1",
5
5
  "main": "dist/bundle.umd.js",
6
6
  "moudle": "dist/bundle.esm.js",
7
7
  "types": "dist/types/index.d.ts",