SubSlotNode.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { TempNode } from '../core/TempNode.js';
  2. function SubSlotNode( slots ) {
  3. TempNode.call( this );
  4. this.slots = slots || {};
  5. }
  6. SubSlotNode.prototype = Object.create( TempNode.prototype );
  7. SubSlotNode.prototype.constructor = SubSlotNode;
  8. SubSlotNode.prototype.nodeType = 'SubSlot';
  9. SubSlotNode.prototype.getType = function ( builder, output ) {
  10. return output;
  11. };
  12. SubSlotNode.prototype.generate = function ( builder, output ) {
  13. if ( this.slots[ builder.slot ] ) {
  14. return this.slots[ builder.slot ].build( builder, output );
  15. }
  16. return builder.format( '0.0', 'f', output );
  17. };
  18. SubSlotNode.prototype.copy = function ( source ) {
  19. TempNode.prototype.copy.call( this, source );
  20. for ( var prop in source.slots ) {
  21. this.slots[ prop ] = source.slots[ prop ];
  22. }
  23. return this;
  24. };
  25. SubSlotNode.prototype.toJSON = function ( meta ) {
  26. var data = this.getJSONNode( meta );
  27. if ( ! data ) {
  28. data = this.createJSONNode( meta );
  29. data.slots = {};
  30. for ( var prop in this.slots ) {
  31. var slot = this.slots[ prop ];
  32. if ( slot ) {
  33. data.slots[ prop ] = slot.toJSON( meta ).uuid;
  34. }
  35. }
  36. }
  37. return data;
  38. };
  39. export { SubSlotNode };