customDraw() {
        var ctx = simulationArea.context;
        ctx.beginPath();
        ctx.strokeStyle = colors["stroke"];
        ctx.fillStyle = colors["fill"];
        ctx.lineWidth = correctWidth(3);
        const xx = this.x;
        const yy = this.y;
        if (this.bitWidth <= 3) {
            rect(
                ctx,
                xx - 10,
                yy - 10 - this.yOff * 5 * this.inputSize,
                40,
                20 * (this.inputSize + 1)
            );
        } else {
            rect(
                ctx,
                xx - 10,
                yy - 10 - this.yOff * 5 * this.inputSize,
                40,
                10 * (this.inputSize + 3)
            );
        }
        if (
            (this.hover && !simulationArea.shiftDown) ||
            simulationArea.lastSelected === this ||
            simulationArea.multipleObjectSelections.contains(this)
        )
            ctx.fillStyle = colors["hover_select"];
        ctx.fill();
        ctx.stroke();

        ctx.beginPath();
        ctx.fillStyle = "black";
        ctx.textAlign = "center";
        for (let i = 0; i < this.inputSize; i++) {
            fillText(ctx, String(i), xx, yy + this.inp1[i].y + 2, 10);
        }
        for (let i = 0; i < this.bitWidth; i++) {
            fillText(
                ctx,
                String(i),
                xx + this.output1[0].x - 10,
                yy + this.output1[i].y + 2,
                10
            );
        }
        fillText(ctx, "EN", xx + this.enable.x, yy + this.enable.y - 5, 10);
        ctx.fill();
    }
@memberof PriorityEncoder
function to draw element