* All of these were caused by the presence of multiple body tags on the
page, which happened because networkD3's sankey plot generates SVGs
containing body tags via SVG's foreignObject tag
* In various places, the 'body' jQuery selector string is used under the
assumption there is only one 'body' tag on the page. The presence of
multiple 'body' tags breaks reliant code in strange ways.
* The fix was to use document.body or 'body:first' instead of 'body'.
* fix appendTab for empty tabsetPanels; use spread operator to avoid having to resort to apply; upgrade grunt.
* revert back to `Math.max.apply(null, existingTabIds) + 1;` there's no browser compatibility issues there
* trigger a new `shiny:invalidated` event when an output gets invalidated, at the same time that the `recalculating` CSS class is added (fixes#1688)
* add attribution to @andrewsali
* change event name from 'shiny:invalidated' to 'shiny:outputinvalidated'
* add binding and name to the new event 'shiny:outputinvalidated'
* added a shiny:sessionInit JS event that is triggered at the end of the session's initialize method
* new entry
* update NEWS
* correct version number in NEWS.md
* fix typo
* Remove unused 'immediate' arguments
* Add opts argument to setInput methods
* Extract input values without opts
* Consistent interface for setting initial values
* Update NEWS
* Add binding and el when fileInputBinding triggers shiny:inputchanged
* Revert "Consistent interface for setting initial values"
This reverts commit 12c0b6e72a.
* Move InputDeferDecorater function
The new placement properly reflects the decorator stack
* Fix indentation
* bindInputs: make sure value is set immediately
* Only use opts where necessary in input decorators
* Properly send initial values
* Move initial value of .clientdata_allowDataUriScheme to better place
* Fix indentation
* Add InputValidateDecorator
* Better variable name
* Add function for default input options
* Simplify code
* Add onTestSnapshot function
* Add shiny.testing option
* Add entry to staticdocs index
* Bump version to 0.14.1.9002 and update NEWS
* Document params for onTestSnapshot
* Add session$enableTestEndpoint() method
* Un-export applyInputHandlers
* Grunt
* Provide inputs, outputs, and snapshot at test endpoint
* Remove non-working example
* Fix var name in documentation
* Rename shiny.testing to shiny.testmode
* Rename onTestSnapshot to exportTestValues and add example
* Add session$getTestEndpointUrl
* Grunt
* Add module support to exportTestValues
* Test endpoint allows specifying specific values
* session$getTestEndpointUrl: add arguments for choosing which values to return
* allow overriding existing custom JS message handlers
* when a JS handler gets re-defined, only use the most recent one
* JS handler overwrite: changes re winston's comments
* overwrite JS handler: add NEWS item
* fix wrong URL in NEWS