You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
967 B
63 lines
967 B
2 years ago
|
import Node from './Node.js';
|
||
|
import { getValueType, getValueFromType } from './NodeUtils.js';
|
||
|
|
||
|
class InputNode extends Node {
|
||
|
|
||
|
constructor( value, nodeType = null ) {
|
||
|
|
||
|
super( nodeType );
|
||
|
|
||
|
this.isInputNode = true;
|
||
|
|
||
|
this.value = value;
|
||
|
|
||
|
}
|
||
|
|
||
|
getNodeType( /*builder*/ ) {
|
||
|
|
||
|
if ( this.nodeType === null ) {
|
||
|
|
||
|
return getValueType( this.value );
|
||
|
|
||
|
}
|
||
|
|
||
|
return this.nodeType;
|
||
|
|
||
|
}
|
||
|
|
||
|
getInputType( builder ) {
|
||
|
|
||
|
return this.getNodeType( builder );
|
||
|
|
||
|
}
|
||
|
|
||
|
serialize( data ) {
|
||
|
|
||
|
super.serialize( data );
|
||
|
|
||
|
data.value = this.value?.toArray?.() || this.value;
|
||
|
data.valueType = getValueType( this.value );
|
||
|
data.nodeType = this.nodeType;
|
||
|
|
||
|
}
|
||
|
|
||
|
deserialize( data ) {
|
||
|
|
||
|
super.deserialize( data );
|
||
|
|
||
|
this.nodeType = data.nodeType;
|
||
|
this.value = getValueFromType( data.valueType );
|
||
|
this.value = this.value?.fromArray?.( data.value ) || data.value;
|
||
|
|
||
|
}
|
||
|
|
||
|
generate( /*builder, output*/ ) {
|
||
|
|
||
|
console.warn( 'Abstract function.' );
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
export default InputNode;
|