awv3
Version:
⚡ AWV3 embedded CAD
45 lines (41 loc) • 1.38 kB
JavaScript
import DragHandler from './drag';
import DrawHandler from './draw';
import AngleHandler from './angle';
import FilletHandler from './fillet';
import DuplicateHandler from './duplicate';
import TrimHandler from './trim';
function getHandlerClass(name) {
switch (name) {
case 'drag':
return DragHandler;
case 'point':
case 'line':
case 'arccenter':
case 'arcmiddle':
case 'arctangent':
case 'circle':
return DrawHandler;
case 'angle':
return AngleHandler;
case 'fillet':
return FilletHandler;
case 'duplicate':
return DuplicateHandler;
case 'trim':
return TrimHandler;
}
}
// destroy oldHandler (if needed) and return the new handler
export default function Handler(sketcher, name, oldHandler) {
const oldClass = getHandlerClass(oldHandler && oldHandler.name), newClass = getHandlerClass(name);
let handler = oldHandler;
if (oldClass !== newClass) {
oldHandler && oldHandler.destroy();
handler = new newClass(sketcher, name);
handler.addInteractions();
}
if (newClass === DrawHandler) handler.switchMode(name);
return handler;
}
// Support hot reloading
if (module.hot) module.hot.accept(['./drag', './draw', './angle', './fillet', './duplicate', './trim']);