plotOutput now takes clickId and hoverId params that tell Shiny
where to send click and hover events for that plot. The server.R
file can listen on input$<clickId> and/or input$<hoverId>. In
both cases, the resulting value will have numeric x and y elements
that indicate the mouse position in user coordinates. In the case
of hover events, it's also possible to have a NULL value which
means the mouse is not currently hovering over the plot.
- If an output is bound in the UI before it exists on the server, the
server will suspend the new output until something else causes
manageHiddenOutputs to be triggered. The refactor in shiny.R sets
the suspended flag to .shouldSuspend.
- As part of the previous refactor, we don't set suspendOnHidden in
defineOutput; instead we leave it empty and .shouldSuspend knows
what the default should be.
- In shiny.js, unbound controls were not being suspended. This was
fixed by having sendOutputHiddenState be stateful; anything in
a visible state that disappears on the next iteration is marked
as hidden. Also unbindAll now calls sendOutputHiddenState.
Observers can now take priority levels, which allow the user to control
the order of execution. Note that reactive expressions do not have
priority levels; since they are lazily evaluated, it wouldn't make any
sense to speak of priorities.
Another commit will be needed to add an API for changing the priorities
of outputs (probably in outputOptions?).
The simple fix for this would've been to just guess the content
type on the server (or use empty string or something), but by
doing the fix this way we're also set up to handle uploads by
servers that don't allow custom headers on AJAX calls.