Skip to content

Commit

Permalink
add a custom sheet
Browse files Browse the repository at this point in the history
  • Loading branch information
siriwatknp committed Sep 6, 2024
1 parent bcff288 commit f333985
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 1 deletion.
1 change: 1 addition & 0 deletions packages/mui-styled-engine/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"dependencies": {
"@babel/runtime": "^7.25.0",
"@emotion/cache": "^11.13.1",
"@emotion/sheet": "^1.4.0",
"csstype": "^3.1.3",
"prop-types": "^15.8.1"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,39 @@ import * as React from 'react';
import PropTypes from 'prop-types';
import { CacheProvider } from '@emotion/react';
import createCache from '@emotion/cache';
import { StyleSheet } from '@emotion/sheet';

const createEmotionCache = (options) => {
const cache = createCache(options);

/**
* This is for client-side apps only.
* A custom sheet is required to make the GlobalStyles API work with `prepend` and `insertionPoint`.
* This is because the [sheet](https://github.com/emotion-js/emotion/blob/main/packages/react/src/global.js#L94-L99) does not consume the options.
*/
class MyStyleSheet extends StyleSheet {
constructor(args) {
super(args);
this.prepend = cache.sheet.prepend;
this.insertionPoint = cache.sheet.insertionPoint;
}
}

cache.sheet = new MyStyleSheet({
key: cache.key,
nonce: cache.sheet.nonce,
container: cache.sheet.container,
speedy: cache.sheet.isSpeedy,
});

return cache;
};

// prepend: true moves MUI styles to the top of the <head> so they're loaded first.
// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.
let cache;
if (typeof document === 'object') {
cache = createCache({ key: 'css', prepend: true });
cache = createEmotionCache({ key: 'css', prepend: true });
}

export default function StyledEngineProvider(props) {
Expand Down
3 changes: 3 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit f333985

Please sign in to comment.