UNPKG

@kitware/vtk.js

Version:

Visualization Toolkit for the Web

56 lines (48 loc) 1.34 kB
import globalThisShim from 'globalthis'; const vtkGlobal = globalThisShim(); // returns native globalThis if compliant const factoryMapping = { vtkObject: () => null }; function vtk(obj) { if (obj === null || obj === undefined) { return obj; } if (obj.isA) { return obj; } if (!obj.vtkClass) { if (vtkGlobal.console && vtkGlobal.console.error) { vtkGlobal.console.error('Invalid VTK object'); } return null; } const constructor = factoryMapping[obj.vtkClass]; if (!constructor) { if (vtkGlobal.console && vtkGlobal.console.error) { vtkGlobal.console.error(`No vtk class found for Object of type ${obj.vtkClass}`); } return null; } // Shallow copy object const model = { ...obj }; // Convert into vtkObject any nested key Object.keys(model).forEach(keyName => { if (model[keyName] && typeof model[keyName] === 'object' && model[keyName].vtkClass) { model[keyName] = vtk(model[keyName]); } }); // Return the root const newInst = constructor(model); if (newInst && newInst.modified) { newInst.modified(); } return newInst; } function register(vtkClassName, constructor) { factoryMapping[vtkClassName] = constructor; } // Nest register method under the vtk function vtk.register = register; export { vtk as default, vtkGlobal };