diff --git a/packages/runtime/src/core.ts b/packages/runtime/src/core.ts index 07c803910..f3b5072b3 100644 --- a/packages/runtime/src/core.ts +++ b/packages/runtime/src/core.ts @@ -6,6 +6,7 @@ import './types/global' export class RuntimeCSS extends MasterCSS { readonly host: Element readonly observing = false + readonly progressive = false readonly container: HTMLElement | ShadowRoot observer?: MutationObserver | null constructor( @@ -43,6 +44,8 @@ export class RuntimeCSS extends MasterCSS { if (ownerNode && (ownerNode as HTMLStyleElement).id === 'master') { // @ts-ignore this.style = ownerNode + // @ts-ignore + this.progressive = true break } } @@ -391,9 +394,11 @@ export class RuntimeCSS extends MasterCSS { sheet.deleteRule(i) } } - this.style?.remove() - // @ts-ignore - this.style = null + if (!this.progressive) { + this.style?.remove() + // @ts-ignore + this.style = null + } return this } diff --git a/packages/runtime/tests/progressive.test.ts b/packages/runtime/tests/progressive.test.ts new file mode 100644 index 000000000..eb8dc809e --- /dev/null +++ b/packages/runtime/tests/progressive.test.ts @@ -0,0 +1,11 @@ +import initCSSRuntime from '../src/init-css-runtime' + +test('progressive', () => { + const style = document.createElement('style') + style.id = 'master' + document.head.append(style) + + const runtimeCSS = initCSSRuntime() + runtimeCSS.destroy() + expect(document.head.contains(style)).toBeTruthy() +})