InputNode.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import Node, { addNodeClass } from './Node.js';
  2. import { getValueType, getValueFromType } from './NodeUtils.js';
  3. class InputNode extends Node {
  4. constructor( value, nodeType = null ) {
  5. super( nodeType );
  6. this.isInputNode = true;
  7. this.value = value;
  8. }
  9. getNodeType( /*builder*/ ) {
  10. if ( this.nodeType === null ) {
  11. return getValueType( this.value );
  12. }
  13. return this.nodeType;
  14. }
  15. getInputType( builder ) {
  16. return this.getNodeType( builder );
  17. }
  18. serialize( data ) {
  19. super.serialize( data );
  20. data.value = this.value;
  21. if ( this.value && this.value.toArray ) data.value = this.value.toArray();
  22. data.valueType = getValueType( this.value );
  23. data.nodeType = this.nodeType;
  24. }
  25. deserialize( data ) {
  26. super.deserialize( data );
  27. this.nodeType = data.nodeType;
  28. this.value = Array.isArray( data.value ) ? getValueFromType( data.valueType, ...data.value ) : data.value;
  29. if ( this.value && this.value.fromArray ) this.value = this.value.fromArray( data.value );
  30. }
  31. generate( /*builder, output*/ ) {
  32. console.warn( 'Abstract function.' );
  33. }
  34. }
  35. export default InputNode;
  36. addNodeClass( InputNode );