JavaScriptEditor.js 778 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { BaseNodeEditor } from '../BaseNodeEditor.js';
  2. import { CodeEditorElement } from '../elements/CodeEditorElement.js';
  3. import { js } from 'three/nodes';
  4. export class JavaScriptEditor extends BaseNodeEditor {
  5. constructor( source = '' ) {
  6. const codeNode = js( source );
  7. super( 'JavaScript', codeNode, 500 );
  8. this.setResizable( true );
  9. //
  10. this.editorElement = new CodeEditorElement( source );
  11. this.editorElement.addEventListener( 'change', () => {
  12. codeNode.code = this.editorElement.source;
  13. this.invalidate();
  14. this.editorElement.focus();
  15. } );
  16. this.add( this.editorElement );
  17. }
  18. set source( value ) {
  19. this.codeNode.code = value;
  20. }
  21. get source() {
  22. return this.codeNode.code;
  23. }
  24. get codeNode() {
  25. return this.value;
  26. }
  27. }