    import Connector from './Connector';
    import Logic from '../Logic';

    /** @module editorElements.InputConnector */

    /**
     * Connector that gets its state from a connected value and passes it through to the {@link Box} this connector belongs to.
     * @extends Connector
     */
    export default class InputConnector extends Connector {
        /**
         * Call the constructor from the parent {@link Connector} class and set isInputConnector to true.
         * @param {App} appInstance link to the [App](./module-App.html) instance that this connector will belong to
         * @param {number} left      horizontal position defined in grid units (SVG pixels divided by the grid size)
         * @param {number} top       vertical position defined in grid units (SVG pixels divided by the grid size)
         */
        constructor(appInstance, left, top) {
            super(appInstance, left, top);

            this.isInputConnector = true;
        }

        /**
         * Call the setState method of {@link Connector} and than refresh the state of the connected {@link Box}
         * @param {Logic.state} state new {@link Logic.state} of the connector
         */
        setState(state) {
            super.setState(state);
            // console.log("SET STATE ON IC", this.id, ":", state)

            let box = this.appInstance.getBoxByConnectorId(this.svgObj.id);
            box.refreshState();
        }

        /**
         * remove the wire (by calling the removeWireIdAndUpdate of {@link Connector})
         * and update state of this connector by setting it to undefined using the setState method
         * @param  {string} wireId ID of the {@link Wire}
         */
        removeWireIdAndUpdate(wireId) {
            super.removeWireIdAndUpdate(wireId);
            this.setState(Logic.state.unknown);
        }
    }