* Split out `Webview` from `WebviewEditor` in API
**Problem**
The current proposed `Webview` interface has a few methods and properties that are very editor specific, such as `.reveal` and `.onDidChangeViewState`. These properies will not make sense if we ever allow webview to be displayed in other locations, such as in widgets
**Proposal**
Split the concepts of a `Webview` and of a `WebveiwEditor`. A webview is the html content itself. A `WebviewEditor` is an editor that displays a `Webview`
This would allow us to easily add other types of `Webview` owning objects in the future without having to document that some methods only apply when a webview is used as an editor vs as a widget
* Leverage notification progress support for progress API
fixes#44090
* only allow positive total/worked values
* drop total/worked in favour of percentage
* make sure to dispose CancellationTokenSource after use
* make the cancellation button optional
As discussed in #45994, move from using a uri to using a viewType. The view type is shared among all webviews of a given type, such as all markdown previews
Fixes#44575
After discussions, we settled on making the webview private unlike `TextEditors`. This means that webview events will live on the webview object itself
Fixes#44571
* Webview API prototype 3
Part of #43713
Third try at refining the webview api. This pass reworks #44165. Major changes:
- Adds an `id` field to webviews. The id is provided by the extension and identifies the webview. It is used with the new event handling apis.
- Adds a new `onDidChangeActiveEditor` api. This is similar to `onDidChangeActiveTextEditor` but is also fired when you change webviews. It replaces the old `onFocus` and `onBlur` events on the webview itself
- Adds an `onDispose` event ot webviews. This is fired when a webview is closed by the user
- Perist webview state when the editor group changes. This is enabled for all webviews, not just those with keep alive.
* Throw error when trying to access disposed webview
* Improving webview documentation
* Clean up dispose management
* Throw if we receive a bad handle
* Move more event handling to input
* Simplify input updating
* Remove extra container property
* Fixing md security alert button
* Remove extra update container call
* Restore syncing of preview to active editor
* Fixing posting to webview
* Debounce preview updates
* Remove previewUri
* Enable direct window.postMessage instead of window.parent.postMessage
* Fixing scroll position not preserved when updating previews
* Revert parent.postMessage change.
Old behavior was correct
* Properly hide webview container on tab switch
* Make sure we only handle scroll events for the correct document
* Don't try setting negative scroll
* Revert vs code whitespace change