showEditor_(e, quietInput = false) {
    super.showEditor_(e, quietInput, false);

    const div = Blockly.WidgetDiv.getDiv();
    if (!div.firstChild) {
      // Mobile interface uses Blockly.dialog.setPrompt().
      return;
    }
    // Build the DOM.
    const editor = this.dropdownCreate_();
    Blockly.DropDownDiv.getContentDiv().appendChild(editor);

    Blockly.DropDownDiv.setColour(
      this.sourceBlock_.style.colourPrimary,
      this.sourceBlock_.style.colourTertiary,
    );

    Blockly.DropDownDiv.showPositionedByField(
      this,
      this.dropdownDispose_.bind(this),
    );

    // The pitch picker is different from other fields in that it updates on
    // mousemove even if it's not in the middle of a drag.  In future we may
    // change this behaviour.  For now, using `bind` instead of
    // `conditionalBind` allows it to work without a mousedown/touchstart.
    this.boundEvents_.push(
      Blockly.browserEvents.bind(this.imageElement_, 'click', this, this.hide_),
    );
    this.boundEvents_.push(
      Blockly.browserEvents.bind(
        this.imageElement_,
        'mousemove',
        this,
        this.onMouseMove,
      ),
    );

    this.updateGraph_();
  }
Show the inline free-text editor on top of the text and the pitch picker.
@protected