    /** @module editorElements.NetworkElement */

    /**
     * parent class for all network elements
     */
    export default class NetworkElement {
        /**
         * Basic constructor for NetworkElement
         * @param {App} appInstance reference to the instance of [App](./module-App.html) that this element belongs to
         */
        constructor(appInstance) {
            if (!appInstance) {
                console.error('Parent SVG element has to be defined.');
            }
            this.appInstance = appInstance;

            // used to store the svjObject's instance of this element
            this.svgObj = undefined;
        }

        /**
         * Get the unique ID of the SVG element tied to this logical element
         * @return {string} ID of the SVG element
         */
        get id() {
            return this.svgObj.id;
        }

        /**
         * empty callback function to prevent error messages, function is implemented later in the {@link Box} class
         */
        onMouseDown() {}

        /**
         * empty function to prevent error messages, function is implemented later in the {@link Box} and {@link Connector} classes
         */
        onMouseUp() {}

        /**
         * empty function to prevent error messages, function is implemented later in the {@link Box} class
         */
        onMouseMove() {}

        /**
         * "virtual" getter for json data, prints an error that it has to be redefined in the derived classes
         */
        get exportData() {
            console.error("'json' getter has not been defined for this element", this);
            return undefined;
        }
    }