get _width() {
    // The container event's width is determined by the maximum number of
    // events in any of its rows.
    if (this.rows) {
      const columns =
        this.rows.reduce(
          (max, row) => Math.max(max, row.leaves.length + 1), // add itself
          0
        ) + 1 // add the container

      return 100 / columns
    }

    // The row event's width is the space left by the container, divided
    // among itself and its leaves.
    if (this.leaves) {
      const availableWidth = 100 - this.container._width
      return availableWidth / (this.leaves.length + 1)
    }

    // The leaf event's width is determined by its row's width
    return this.row._width
  }
The event's width without any overlap.