openTiddlerWithId(id) {

    const tRef = $tm.tracker.getTiddlerById(id);

    this.logger('debug', 'Opening tiddler', tRef, 'with id', id);

    if (this.enlargedMode === 'fullscreen') {

      let draftTRef = $tw.wiki.findDraft(tRef);
      const wasInDraftAlready = !!draftTRef;

      if (!wasInDraftAlready) {

        const type = 'tm-edit-tiddler';
        this.dispatchEvent({ type: type, tiddlerTitle: tRef });
        draftTRef = $tw.wiki.findDraft(tRef);

      }

      const args = { draftTRef, originalTRef: tRef };

      $tm.dialogManager.open('fullscreenTiddlerEditor', args, (isConfirmed, outTObj) => {

        if (isConfirmed) {

          const type = 'tm-save-tiddler';
          this.dispatchEvent({ type: type, tiddlerTitle: draftTRef });

        } else if (!wasInDraftAlready) {

          // also removes the draft from the river before deletion!
          utils.deleteTiddlers([ draftTRef ]);

        }

        // in any case, remove the original tiddler from the river
        const type = 'tm-close-tiddler';
        this.dispatchEvent({ type: type, tiddlerTitle: tRef });

      });

    } else {

      const bounds = this.domNode.getBoundingClientRect();

      this.dispatchEvent({
        type: 'tm-navigate',
        navigateTo: tRef,
        navigateFromTitle: this.getVariable('storyTiddler'),
        navigateFromNode: this,
        navigateFromClientRect: {
          top: bounds.top,
          left: bounds.left,
          width: bounds.width,
          right: bounds.right,
          bottom: bounds.bottom,
          height: bounds.height
        }
      });

    }
  }
Opens the tiddler that corresponds to the given id either as
modal (when in fullscreen mode) or in the story river.