Skip to content

Commit

Permalink
Merge 75ac22f into ecdb3bc
Browse files Browse the repository at this point in the history
  • Loading branch information
aomarks committed Aug 18, 2022
2 parents ecdb3bc + 75ac22f commit aa38253
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 7 deletions.
6 changes: 6 additions & 0 deletions .changeset/fifty-monkeys-shop.md
@@ -0,0 +1,6 @@
---
'@lit/reactive-element': patch
'lit': patch
---

Fix `CSSStyleSheet is not defined` error that would occur when importing a Lit component in Node when both static `styles` and the `@property` decorator were used.
10 changes: 6 additions & 4 deletions packages/reactive-element/src/css-tag.ts
Expand Up @@ -195,7 +195,9 @@ const cssResultFromStyleSheet = (sheet: CSSStyleSheet) => {
return unsafeCSS(cssText);
};

export const getCompatibleStyle = supportsAdoptingStyleSheets
? (s: CSSResultOrNative) => s
: (s: CSSResultOrNative) =>
s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;
export const getCompatibleStyle =
supportsAdoptingStyleSheets ||
(NODE_MODE && global.CSSStyleSheet === undefined)
? (s: CSSResultOrNative) => s
: (s: CSSResultOrNative) =>
s instanceof CSSStyleSheet ? cssResultFromStyleSheet(s) : s;
19 changes: 16 additions & 3 deletions packages/reactive-element/src/test/node-imports.ts
Expand Up @@ -22,11 +22,24 @@ import '@lit/reactive-element/decorators/query-assigned-elements.js';
import '@lit/reactive-element/decorators/query-assigned-nodes.js';
import '@lit/reactive-element/decorators/query-async.js';

import {customElement} from '@lit/reactive-element/decorators.js';
import {ReactiveElement} from '@lit/reactive-element';
import {customElement, property} from '@lit/reactive-element/decorators.js';
import {ReactiveElement, css} from '@lit/reactive-element';

@customElement('my-element')
export class MyElement extends ReactiveElement {}
export class MyElement extends ReactiveElement {
// Include both static styles and a @property decorator in the test. The
// @property decorator trigggers class initialization, and if there are also
// static styles, it will trigger an instanceof check for CSSStyleSheet, which
// could explode if not handled with care in the node build.
static override styles = css`
p {
color: purple;
}
`;

@property()
name = 'World';
}

export class MyOtherElement extends ReactiveElement {}
customElements.define('my-other-element', MyOtherElement);

0 comments on commit aa38253

Please sign in to comment.