UNPKG

react-vtk-js

Version:

React based declarative vtk.js visualization pipeline

2 lines (1 loc) 4.76 kB
import e from"../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js";import t from"../node_modules/@babel/runtime/helpers/esm/classCallCheck.js";import i from"../node_modules/@babel/runtime/helpers/esm/createClass.js";import r from"../node_modules/@babel/runtime/helpers/esm/inherits.js";import o from"../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js";import a from"../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js";import n,{Component as s}from"react";import l from"prop-types";import{ViewContext as p,RepresentationContext as c,DownstreamContext as u}from"./View.js";import m from"../node_modules/@kitware/vtk.js/Rendering/Core/ImageSlice.js";import d from"../node_modules/@kitware/vtk.js/Rendering/Core/ImageMapper.js";import h from"../node_modules/@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps.js";import f from"../node_modules/@kitware/vtk.js/Rendering/Core/ColorTransferFunction.js";import y from"../node_modules/@kitware/vtk.js/Common/DataModel/PiecewiseFunction.js";function b(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var i,r=a(e);if(t){var n=a(this).constructor;i=Reflect.construct(r,arguments,n)}else i=r.apply(this,arguments);return o(this,i)}}var v=function(o){r(l,s);var a=b(l);function l(e){var i;return t(this,l),(i=a.call(this,e)).validData=!1,i.currentVisibility=!0,i.lookupTable=f.newInstance(),i.piecewiseFunction=y.newInstance(),i.actor=m.newInstance({visibility:!1}),i.mapper=d.newInstance(),i.actor.setMapper(i.mapper),i}return i(l,[{key:"render",value:function(){var e=this;return n.createElement(p.Consumer,null,(function(t){return e.view||(t.renderer.addActor(e.actor),e.view=t),n.createElement(c.Provider,{value:e},n.createElement(u.Provider,{value:e.mapper},n.createElement("div",{key:e.props.id,id:e.props.id},e.props.children)))}))}},{key:"componentDidMount",value:function(){this.update(this.props)}},{key:"componentDidUpdate",value:function(e,t,i){this.update(this.props,e)}},{key:"componentWillUnmount",value:function(){this.view&&this.view.renderer&&this.view.renderer.removeActor(this.actor),this.actor.delete(),this.actor=null,this.mapper.delete(),this.mapper=null}},{key:"update",value:function(t,i){var r,o=t.actor,a=t.property,n=t.mapper,s=t.colorMapPreset,l=t.colorDataRange,p=t.iSlice,c=t.jSlice,u=t.kSlice,m=t.xSlice,d=t.ySlice,f=t.zSlice;if(!o||i&&o===i.actor||this.actor.set(o),!a||i&&a===i.property||this.actor.getProperty().set(a),!n||i&&n===i.mapper||this.mapper.set(n),s&&(!i||s!==i.colorMapPreset)){var y,b=h.getPresetByName(s);this.lookupTable.applyColorMap(b),(y=this.lookupTable).setMappingRange.apply(y,e(l)),this.lookupTable.updateRange()}!l||i&&l===i.colorDataRange||("string"==typeof l?i?this.dataChanged():(this.lookupTable.setMappingRange(0,1),this.lookupTable.updateRange(),this.piecewiseFunction.setNodes([{x:0,y:0,midpoint:.5,sharpness:0},{x:1,y:1,midpoint:.5,sharpness:0}])):((r=this.lookupTable).setMappingRange.apply(r,e(l)),this.lookupTable.updateRange(),this.piecewiseFunction.setNodes([{x:l[0],y:0,midpoint:.5,sharpness:0},{x:l[1],y:1,midpoint:.5,sharpness:0}])));null==p||i&&p===i.iSlice||this.mapper.setISlice(p),null==c||i&&c===i.jSlice||this.mapper.setJSlice(c),null==u||i&&u===i.kSlice||this.mapper.setKSlice(u),null==m||i&&m===i.xSlice||this.mapper.setXSlice(m),null==d||i&&d===i.ySlice||this.mapper.setYSlice(d),null==f||i&&f===i.zSlice||this.mapper.setZSlice(f),o&&void 0!==o.visibility&&(this.currentVisibility=o.visibility,this.actor.setVisibility(this.currentVisibility&&this.validData)),this.dataChanged()}},{key:"dataAvailable",value:function(){this.validData||(this.validData=!0,this.actor.setVisibility(this.currentVisibility),this.dataChanged())}},{key:"dataChanged",value:function(){if("auto"===this.props.colorDataRange){this.mapper.update();var t,i=this.mapper.getInputData(),r=i&&i.getPointData().getScalars(),o=r&&r.getRange();if(o)(t=this.lookupTable).setMappingRange.apply(t,e(o)),this.lookupTable.updateRange(),this.piecewiseFunction.setNodes([{x:o[0],y:0,midpoint:.5,sharpness:0},{x:o[1],y:1,midpoint:.5,sharpness:0}]);this.view&&this.view.renderView()}}}]),l}();v.defaultProps={colorMapPreset:"erdc_rainbow_bright",colorDataRange:"auto"},v.propTypes={id:l.string,mapper:l.object,actor:l.object,property:l.object,colorMapPreset:l.string,colorDataRange:l.oneOfType([l.arrayOf(l.number),l.string]),iSlice:l.number,jSlice:l.number,kSlice:l.number,xSlice:l.number,ySlice:l.number,zSlice:l.number,children:l.oneOfType([l.arrayOf(l.node),l.node])};export{v as default};