Skip to content

Commit 09ef890

Browse files
feat(styled): Implement OwnerDocument context and update document references (#1948)
Co-authored-by: Tasso Evangelista <tasso.evangelista@rocket.chat>
1 parent 3620915 commit 09ef890

4 files changed

Lines changed: 20 additions & 2 deletions

File tree

.changeset/dirty-feet-arrive.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@rocket.chat/styled": minor
3+
---
4+
5+
feat(styled): Implement `OwnerDocument` context and update `document` references
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { createContext, useContext } from 'react';
2+
3+
export const OwnerDocument = createContext<{
4+
document: Document;
5+
}>({ document: window.document });
6+
7+
export const useOwnerDocument = () => {
8+
return useContext(OwnerDocument);
9+
};

packages/styled/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export { default } from './styled';
2+
export * from './OwnerDocument';

packages/styled/src/styled.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import {
2222
useInsertionEffect,
2323
} from 'react';
2424

25+
import { useOwnerDocument } from './OwnerDocument';
26+
2527
export const attachClassName = <P extends { className?: string }>(
2628
props: P,
2729
additionalClassName: string,
@@ -85,18 +87,19 @@ const styled =
8587

8688
useDebugValue(computedClassName);
8789

90+
const { document } = useOwnerDocument();
8891
useInsertionEffect(() => {
8992
const escapedClassName = escapeName(computedClassName);
9093
const transpiledContent = transpile(
9194
`.${escapedClassName}`,
9295
content,
9396
);
94-
const detach = attachRules(transpiledContent);
97+
const detach = attachRules(transpiledContent, { document });
9598

9699
return () => {
97100
setTimeout(detach, 1000);
98101
};
99-
}, [computedClassName, content]);
102+
}, [computedClassName, content, document]);
100103

101104
const newProps = attachClassName(
102105
{ ref, ...props },

0 commit comments

Comments
 (0)