## Problem
Webview uris currently have the form:
```
https://uuid.vscode-webview.net/vscode-resource/scheme/authority/path...
```
We have this syntax because we need to be able to recover the original scheme and authority of the resource in order to load it from disk
However this syntax means that absolute urls don't behave as you'd expect. For example, if you have a webview that sets a `<base>` to a document in the workspace, an absolute url `/abs/path.png` ends up being resolved to:
```
https://uuid.vscode-webview.net/abs/path.png
```
This drops the original scheme and authority, which prevents us from loading the resource
## Fix
With this change, I've moved the original scheme and authority into the authority of the webview uri instead of the path:
```
https://scheme+authority.vscode-resource.uuid.vscode-webview.net/path...
```
With this change, absolute paths should correctly be resolved
This implements the api described in #123540. Major points:
- Instead of having the `markdown-it` renderer pull it its dependencies, instead the dependencies can call `getRenderer` to import the object returned by the `markdown-it` renderer
- We try to detect if a renderer is using the old or new api. Old renderers are still run as globals while new ones are loaded with `import`
- I have only hooked up the new API for markdown renderers so far
* Better notebook markup renderer api
For #121256
- Use js modules for notebook output renderers
- Rename apis from `markdown` to `markup`
- Use imports and exports for apis instead of globals for apis
- Use esbuild instead of webpack so we can emit js modules
- Clearly split top level markup renderes from renderers that extend other renderers
* Use constant instead of comment for replacement
* Render markdown preview cells inside a shadow dom
Fixes#119971
This moves all markdown previews into shadow doms. This lets us prevent styles from outside the preview leak into the preview, and also prevents styles from the preview leak out into the rest of the notebook
* Use composedPath for handling events in webviews
This lets us handle clicks triggered inside of a shadow dom