Skip to content

Commit a5067da

Browse files
author
Loïc Mangeonjean
committed
feat(demo): demo shadow dom in demo project
1 parent 6d02478 commit a5067da

File tree

4 files changed

+39
-2
lines changed

4 files changed

+39
-2
lines changed

demo/src/main.workbench.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,13 @@ document.querySelector('#customEditorPanel')!.addEventListener('click', async ()
2929
document.querySelector('#clearStorage')!.addEventListener('click', async () => {
3030
await clearStorage()
3131
})
32+
33+
document.querySelector('#toggleShadowDom')!.addEventListener('click', async () => {
34+
const url = new URL(window.location.href)
35+
if (url.searchParams.has('disableShadowDom')) {
36+
url.searchParams.delete('disableShadowDom')
37+
} else {
38+
url.searchParams.set('disableShadowDom', 'true')
39+
}
40+
window.location.href = url.toString()
41+
})

demo/src/setup.common.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export const remotePath =
9595
remoteAuthority != null ? (params.get('remotePath') ?? undefined) : undefined
9696
export const resetLayout = params.has('resetLayout')
9797
export const useHtmlFileSystemProvider = params.has('htmlFileSystemProvider')
98+
export const disableShadowDom = params.has('disableShadowDom')
9899
params.delete('resetLayout')
99100

100101
window.history.replaceState({}, document.title, url.href)

demo/src/setup.workbench.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,30 @@ import {
1717
constructOptions,
1818
envOptions,
1919
remoteAuthority,
20-
userDataProvider
20+
userDataProvider,
21+
disableShadowDom
2122
} from './setup.common'
2223

23-
const container = document.createElement('div')
24+
let container = document.createElement('div')
2425
container.style.height = '100vh'
2526

2627
document.body.replaceChildren(container)
2728

29+
if (!disableShadowDom) {
30+
const shadowRoot = container.attachShadow({
31+
mode: 'open'
32+
})
33+
34+
const workbenchElement = document.createElement('div')
35+
workbenchElement.style.height = '100vh'
36+
shadowRoot.appendChild(workbenchElement)
37+
container = workbenchElement
38+
}
39+
2840
const buttons = document.createElement('div')
2941
buttons.innerHTML = `
3042
<button id="toggleHTMLFileSystemProvider">Toggle HTML filesystem provider</button>
43+
<button id="toggleShadowDom">Toggle Shadow Dom usage</button>
3144
<button id="customEditorPanel">Open custom editor panel</button>
3245
<button id="clearStorage">Clear user data</button>
3346
<button id="resetLayout">Reset layout</button>

demo/vite.config.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,19 @@ export default defineConfig({
1717
format: 'es'
1818
},
1919
plugins: [
20+
{
21+
name: 'load-vscode-css-as-string',
22+
enforce: 'pre',
23+
resolveId(source, importer) {
24+
const resolved = importer != null ? path.resolve(path.dirname(importer), source) : source
25+
if (
26+
resolved.match(/node_modules\/(@codingame\/monaco-vscode|vscode|monaco-editor).*\.css$/)
27+
) {
28+
return resolved + '?inline'
29+
}
30+
return undefined
31+
}
32+
},
2033
{
2134
// For the *-language-features extensions which use SharedArrayBuffer
2235
name: 'configure-response-headers',

0 commit comments

Comments
 (0)