Creating custom add-track workflows
Plugins can register their own React component to display in the "Add track" widget for adding tracks that require custom logic. The Multi-wiggle track is an example of this, it produces a textbox where you can paste a list of files.
A simple addition to the add track workflow:
// plugins/wiggle/MultiWiggleAddTrackWidget/index.jsx
import PluginManager from '@jbrowse/core/PluginManager'
import { AddTrackWorkflowType } from '@jbrowse/core/pluggableElementTypes'
import { types } from 'mobx-state-tree'
import MultiWiggleWidget from './AddTrackWorkflow'
export default (pm: PluginManager) => {
  pm.addAddTrackWorkflowType(
    () =>
      new AddTrackWorkflowType({
        name: 'Multi-wiggle track',
        /* in a separate file, export the react component to render within the track widget,
        typically a form to collect relevant data for your track */
        ReactComponent: MultiWiggleWidget,
        stateModel: types.model({}),
      }),
  )
}
...and ensure you install this component into your larger plugin:
// plugins/wiggle/index.jsx
// ...
export default class WigglePlugin extends Plugin {
  name = 'WigglePlugin'
  install(pm: PluginManager) {
    // ...
    MultiWiggleAddTrackWidgetF(pm)
    // ...
  }
}