calculateLabelSize(ctx, selected, hover, x = 0, y = 0, baseline = "middle") {
    this._processLabel(ctx, selected, hover);
    this.size.left = x - this.size.width * 0.5;
    this.size.top = y - this.size.height * 0.5;
    this.size.yLine = y + (1 - this.lineCount) * 0.5 * this.fontOptions.size;
    if (baseline === "hanging") {
      this.size.top += 0.5 * this.fontOptions.size;
      this.size.top += 4; // distance from node, required because we use hanging. Hanging has less difference between browsers
      this.size.yLine += 4; // distance from node
    }
  }
@param {CanvasRenderingContext2D} ctx
@param {boolean} selected
@param {boolean} hover
@param {number} [x]
@param {number} [y]
@param {'middle'|'hanging'} [baseline]