import { PolyLine, PolyLinePoints, PolyLinePoint } from '../svgObjects';

import NetworkElement from './NetworkElement';

/** @module editorElements.HelperWire */

/**
 * A temporary wire that is connecting a {@link Connector} with a mouse pointer when user creates a wire.
 * @extends NetworkElement
 */
export default class HelperWire extends NetworkElement {
    constructor(appInstance, fromId, mousePosition) {
        super(appInstance);

        const connector = this.appInstance.getConnectorById(fromId);
        this.connectorPosition = this.appInstance.getConnectorPosition(connector, true);

        const from = new PolyLinePoint(this.connectorPosition.x, this.connectorPosition.y);
        const to = new PolyLinePoint(mousePosition.x, mousePosition.y);

        const points = new PolyLinePoints([from, to]);

        this.svgObj = new PolyLine(points, 2, '#8b8b8b');
    }

    updateMousePosition(mousePosition) {
        const from = new PolyLinePoint(this.connectorPosition.x, this.connectorPosition.y);
        const to = new PolyLinePoint(mousePosition.x, mousePosition.y);

        const points = new PolyLinePoints([from, to]);

        this.svgObj.updatePoints(points);
    }

    /**
     * get the jQuery element for this helper wire
     * @return {jQuery.element}
     */
    get() {
        return this.svgObj.get();
    }
}