text: export function setup( vz,m ) {
    vz.register_feature_set( m )
  }
  
  import { VTKLoader } from "./threejs-extract/VTKLoader.js";
  
  export function parse_vtk_points( env ) {
  
    env.onvalue("input",(text) => {
       var loader = new VTKLoader();
       var df = loader.parse( text );
       //console.log("parse_vtk: df=",df );
       env.setParam("output",df);
    })
    
  }
  
  // попытки сделать рисование структуры типа vtk
  // признано плохой идеей
  export function render_vtk_points( env, opts ) {
     env.feature("points");
  
     env.onvalue("input",(data) => {
        env.setParam("positions",data.XYZ);
        //env.setParam("colors",objdata.colors);
     });
  }
  
  // признано бм норм идеей но не нужно по факту пока -
  // точки по умолчанию читат XYZ как раз
  export function points_vtk_input ( env, opts ) {
  
     env.host.onvalue("input",(data) => {
        env.host.setParam("positions",data.XYZ);
        //env.setParam("colors",objdata.colors);
     });  
  }
  
  // преобразует структуру vtkpoints - колонку XYZ заменяет на три колонки X Y Z
  import * as DF from    "../../../df/df.js";
  export function vtk_points_to_normalized_df( env ) {
    env.host.onvalue("input",(data) => {
        if (!(data || data.XYZ))
          return env.host.setParam( "output",[]);
  
        var df = DF.create_from_df( data );
        let count = Math.floor( data.XYZ.length / 3 );
        let ax=new Float32Array( count );
        let ay=new Float32Array( count );
        let az=new Float32Array( count );
        for (let i=0,j=0; i<count; i++,j+=3) {
          ax[i] = df.XYZ[j];
          ay[i] = df.XYZ[j+1];
          az[i] = df.XYZ[j+2];
        }
  
        DF.add_column( df, "Z",az,true );
        DF.add_column( df, "Y",ay,true );
        DF.add_column( df, "X",ax,true );
  
        DF.remove_column( df, "XYZ" );
        DF.update_length( df );
  
        env.host.setParam( "output", df );
    });
  }