constructor(scope = globalScope) {

        var w = 300 * DPR;
        var h = 50 * DPR;

        globalScope.ox = w;
        globalScope.oy = h;

        // Assign layout if exist or create new one
        this.layout = { ...scope.layout }; // Object.create(scope.layout);

        // Push Input Nodes
        this.Input = [];
        for (let i = 0; i < scope.Input.length; i++)
            this.Input.push(new LayoutNode(scope.Input[i].layoutProperties.x, scope.Input[i].layoutProperties.y, scope.Input[i].layoutProperties.id, scope.Input[i].label, scope.Input[i].type, scope.Input[i]));

        // Push Output Nodes
        this.Output = [];
        for (let i = 0; i < scope.Output.length; i++)
            this.Output.push(new LayoutNode(scope.Output[i].layoutProperties.x, scope.Output[i].layoutProperties.y, scope.Output[i].layoutProperties.id, scope.Output[i].label, scope.Output[i].type, scope.Output[i]));
        
        // holds subcircuit elements
        this.subElements = []
    }
Buffer object to store changes so that you can reset changes
@class
@param {Scope=} scope
@category layout