@mixin f-node-editor($theme-color:$theme-color, $background-color:#000, $grid-color:null, $grid-size: 20px, $select-color:#f72){
    .e-node-editor{  
        overflow: hidden;
        height: 600px;
        position: relative;
    }
    
    .e-node-container{
        background-size: $grid-size $grid-size;
        @if $grid-color {
            background-image: linear-gradient(to right, $grid-color 1px, transparent 1px), linear-gradient(to bottom, $grid-color 1px, transparent 1px);
        }
        height: 3000px;
        width: 3000px;
        position: relative;
        
        svg{
            position: absolute;
            left:0;
            top:0;
            right: 0;
            bottom:0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: 1;
        }
    }
    .e-node{
        border: 2px solid $background-color;
        padding-bottom: 0.3em;
        border-radius: 0.5em;
        position: absolute;
        background: white;
        user-select: none;
        min-width: 120px;
        cursor: default;
        select, input{
            position: absolute;
            width: 84%;
            left: 8%;
            border-radius: 0.3em;
            height: 1.4em;
            background: #e4e4e4;
            border: none;
            padding: 0 0.25rem;
            line-height: 1rem;
            appearance: auto;
            
        }
    }
    .e-node-title{
        text-align: center;
        background: $background-color;
        color: $theme-color;
        overflow: hidden;
        padding: 0 0.5em;
    }
    .e-node-out, .e-node-in{
        position: relative;
        padding: 0.08em 10px;
        display: block;
    }
    .e-node-connector{
        position: absolute;
        border-radius: 50%;
        height: 0.7rem;
        width: 0.7rem;
        top: 50%;
        transform: translateY(-50%);
    }
    .e-node-in[connector] {
        display: none;
    }
    .e-node-out{
        text-align: right;
        .e-node-connector{
            right: -6px;
        }
    }
    .e-node-in{
        .e-node-connector{
            left: -6px;
        }
    }
    .e-node-connected{
        input{
            display: none;
        }
    }
    .e-node-cp{
        background: white;
        position: absolute;
        height: 100%;
        right: 0;
        button{
            width: 100%;
            height: 10%;
            margin: 0;
            border-left:  1px solid #555;
        }
    }
    .e-node-add{
        overflow-y: auto;
        top: 0;
        right: 0;
        padding: 0.75em;
        border-left:  2px dashed #e4e4e4;
        height: 100%;
        position: absolute;
        background: white;
        li{
            color: $theme-color;
            text-align: center;
            padding: 0.125em 0.5em;
            margin: 5px 0;
            background: $background-color;
            border-radius: 0.5em;
        }
    }
    .e-resizer{
        width: 0;
        height: 0;
        border-style: solid;
        border-width: 0 0 8px 8px;
        border-color: transparent transparent $background-color transparent;
        position: absolute;
        right: 0;
        bottom: 0;
        &:hover{
            cursor: nw-resize;
        }
    }
    .e-node-bar{
        position: absolute;
        .e-button{
            margin: 0;
            border: 0;
            padding: 5px 10px;
            background: none;
            color: white;
            &:hover{
                background: $theme-color;
            }
        }
        width: 100%;
        height: 34px;
        background: $background-color;
    }
    .e-node-selected{
        .e-node-title{
            transition: color 0.2s;
            color: $select-color;
        }
    }
    .e-node-connection{
        stroke-width: 2.5;
        fill: none;
    }
    //Node Details
    .f-node-details{
        width: 0;
        overflow-y: auto;
        top: 0;
        right: 0;
        padding: 0;
        border-left: 0 dashed #e4e4e4;
        height: 100%;
        position: absolute;
        background: white;
        transition: width 1s;
    }
    .f-node-details.f-show{
        width: 30%;     
        padding: 0.6rem 1rem;
        border-left-width: 2px;
    }
   .f-node-details-title-container{
        font-weight: bold;
        font-size: 1.4em;
        border-bottom: #e4e4e4 0.1em solid;
        margin-bottom: 0.25em;
    }
    .f-node-details-subtitle{
        font-weight: bold;
        font-size: 1.1em;
        border-bottom: #e4e4e4 0.1em solid;
        margin: 0.5em 0;
        padding: 0.5em 0;
    }
    .f-node-details-close{
        display: block;
        float: right;
        background: $background-color;
        width: 1em;
        height: 1em;
        border-radius: 50%;
        color: $theme-color;
        line-height: 1em;
        text-align: center;
        cursor: pointer;
    }
    .f-node-details-description {
        padding: 0.5em;
    }
    .f-node-details-fields{
        padding: 0.5em;
    }
    .f-node-details-name{
        font-weight: bold;
    }
    .f-node-details-type{
        border-radius: 0.5em;
        font-size: 0.7em;
        padding: 0.125em 0.5em;
        margin-left: 0.25rem;
        color: $theme-color;
    }
    .f-node-details-value{
        background: #e4e4e4;
        padding: 0.25em 0.5em;
        border-radius: 0.5em;
        margin: 0.25em 0 1em 0;
    }
}

@mixin e-grid-background($grid-size, $grid-color){
    background-size: $grid-size $grid-size;
    background-image: linear-gradient(to right, $grid-color 1px, transparent 1px), linear-gradient(to bottom, $grid-color 1px, transparent 1px);
}