* 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
* Webview api
* Cleaning up markdown webview
* Hooking up dispose
* Fix some merge errors
* Use custom context key to show markdown title bar contributions
* Add basic on focus and on blur events
* Fixing find widget in webview
* Hookup _isDisposed
* Use new extension resource scheme to load markdown extension resources
* Documenting keep alive
Adds enhanced security settings for the markdown preview. The new flow disable all scripts within the preview itself. Users can enable scripts on a per workspace basis.
When a markdown document that uses scripts is loaded, a warning is shown inside the document itself. This warning triggers a new security selector quick pick which allows users to enable or disable enahanced security in the workspace.
**Bug**
When refreshing a webview, a slight flicker can sometime be seen. This is especially noticable when using the markdown preview.
**Fix**
Instead of replacing the content of the iframe for refresh, create a new iframe with the new content and do a swap to update.
Adds an initial implementation of scroll synrconization from the markdown preview to the editor. When the preview is scrolled, automatically scrolls the editor to reveal the same location.
This required adding a new supported reveal type `AtTop` in our API. This is already supported and used internally, but not really exposed in the public apis (except for the `revealLine` command).
* Adds command to post a message to an html preview
**Bug**
There is currently no easy way to communicate with an html preview document after the preview has been created.
**Fix**
Adds a command called `vscode.htmlPreview.postMessage` to post a message to a visible html preview. This message will only be posted if the target preview is visible.
Inside the preview, the event is recieved using the standard dom event:
* Remove logging
* proto
Continue proto
* clean up rendering
* Gate prototype
* Fix gating
* Remove public command
* Change setting name
* Added current position indicator
* Reveal center