/**
 * @license
 * Copyright 2023 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

import type {Block} from '../block.js';
import {ConnectionType} from '../connection_type.js';
import {Input} from './input.js';
import {inputTypes} from './input_types.js';

/** Represents an input on a block with a value connection. */
export class ValueInput extends Input {
  readonly type = inputTypes.VALUE;

  /**
   * @param name Language-neutral identifier which may used to find this input
   *     again.
   * @param block The block containing this input.
   */
  constructor(
    public name: string,
    block: Block,
  ) {
    // Errors are maintained for people not using typescript.
    if (!name) throw new Error('Value inputs must have a non-empty name');
    super(name, block);
    this.connection = this.makeConnection(ConnectionType.INPUT_VALUE);
  }
}