Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 1x 80x 56x 24x 24x 24x 24x 24x 33x 33x 33x 33x 2x 2x 24x 22x 2x | import { state, ToolGroupManager } from '../../store';
import ToolModes from '../../enums/ToolModes';
const { Active } = ToolModes;
/**
* @function customCallbackHandler This is used as a generic event handler for tool events
* on viewports. It:
*
* - Finds an "active" tool with:
* - A matching `handlerType`
* - A matching `customFunction` on its tool instance
*
* Then calls that custom function with raised event.
*
* @param handlerType - 'Mouse' | 'Touch' | 'MouseWheel'
* @param customFunction - Function name that's expected to live on implementing
* (and event handling) active tool ex. 'doubleClickCallback'
* @param evt
*/
export default function customCallbackHandler(
handlerType: string,
customFunction: string,
evt
) {
if (state.isInteractingWithTool) {
return false;
}
const { renderingEngineId, viewportId } = evt.detail;
const toolGroup = ToolGroupManager.getToolGroupForViewport(
viewportId,
renderingEngineId
);
Iif (!toolGroup) {
return false;
}
// TODO: Filter tools by interaction type?
/**
* Iterate tool group tools until we find a tool that is:
* - active
* - has the custom callback function
*
*/
let activeTool;
const toolGroupToolNames = Object.keys(toolGroup.toolOptions);
for (let j = 0; j < toolGroupToolNames.length; j++) {
const toolName = toolGroupToolNames[j];
const tool = toolGroup.toolOptions[toolName];
// TODO: Should be getter
const toolInstance = toolGroup.getToolInstance(toolName);
if (
// TODO: Should be enum?
tool.mode === Active &&
// TODO: Should be implements interface?
// Weird that we need concrete instance. Other options to filter / get callback?
typeof toolInstance[customFunction] === 'function'
) {
activeTool = toolGroup.getToolInstance(toolName);
break;
}
}
if (!activeTool) {
return;
}
activeTool[customFunction](evt);
}
|