OperatorEditor.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { SelectInput, LabelElement, Element } from '../../libs/flow.module.js';
  2. import { BaseNode } from '../core/BaseNode.js';
  3. import { OperatorNode, FloatNode } from '../../renderers/nodes/Nodes.js';
  4. const NULL_VALUE = new FloatNode();
  5. export class OperatorEditor extends BaseNode {
  6. constructor() {
  7. const node = new OperatorNode( '+', NULL_VALUE, NULL_VALUE );
  8. super( 'Operator', 1, node, 150 );
  9. const opInput = new SelectInput( [
  10. { name: 'Addition ( + )', value: '+' },
  11. { name: 'Subtraction ( - )', value: '-' },
  12. { name: 'Multiplication ( * )', value: '*' },
  13. { name: 'Division ( / )', value: '/' }
  14. ], '+' );
  15. opInput.onChange( ( data ) => {
  16. node.op = data.getValue();
  17. this.invalidate();
  18. } );
  19. const aElement = new LabelElement( 'A' ).setInput( 3 );
  20. const bElement = new LabelElement( 'B' ).setInput( 3 );
  21. aElement.onConnect( () => {
  22. node.aNode = aElement.getLinkedObject() || NULL_VALUE;
  23. } );
  24. bElement.onConnect( () => {
  25. node.bNode = bElement.getLinkedObject() || NULL_VALUE;
  26. } );
  27. this.add( new Element().add( opInput ) )
  28. .add( aElement )
  29. .add( bElement );
  30. }
  31. }