Use global styles aka user theme for editor styles
[MAILPOET-6335]
This commit is contained in:
committed by
Aschepikov
parent
8f512a7967
commit
de03e84eb4
@ -14,10 +14,10 @@ import { useGlobalStylesOutputWithConfig } from '../private-apis';
|
||||
*/
|
||||
import deepmerge from 'deepmerge';
|
||||
import { EmailStyles, storeName } from '../store';
|
||||
import { useEmailTheme } from './use-email-theme';
|
||||
import { useUserTheme } from './use-user-theme';
|
||||
|
||||
export function useEmailCss() {
|
||||
const { templateTheme } = useEmailTheme();
|
||||
const { userTheme } = useUserTheme();
|
||||
const { editorTheme } = useSelect(
|
||||
( select ) => ( {
|
||||
editorTheme: select( storeName ).getTheme(),
|
||||
@ -30,13 +30,13 @@ export function useEmailCss() {
|
||||
deepmerge.all( [
|
||||
{},
|
||||
editorTheme || {},
|
||||
templateTheme || {},
|
||||
userTheme || {},
|
||||
] ) as EmailStyles,
|
||||
[ editorTheme, templateTheme ]
|
||||
[ editorTheme, userTheme ]
|
||||
);
|
||||
|
||||
const [ styles ] = useGlobalStylesOutputWithConfig( mergedConfig );
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
||||
return [ styles ];
|
||||
return [ styles || [] ];
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ import deepmerge from 'deepmerge';
|
||||
import { useSelect } from '@wordpress/data';
|
||||
import { useCallback } from '@wordpress/element';
|
||||
import { storeName, TypographyProperties } from '../store';
|
||||
import { useEmailTheme } from './use-email-theme';
|
||||
import { useUserTheme } from './use-user-theme';
|
||||
|
||||
interface ElementProperties {
|
||||
typography: TypographyProperties;
|
||||
@ -68,10 +68,11 @@ export function setImmutably( setObject, setPath, value ): typeof setObject {
|
||||
}
|
||||
|
||||
export const useEmailStyles = (): EmailStylesData => {
|
||||
const { templateTheme, updateTemplateTheme } = useEmailTheme();
|
||||
// const { templateTheme, updateTemplateTheme } = useEmailTheme();
|
||||
const { userTheme, updateUserTheme } = useUserTheme();
|
||||
|
||||
// This is email level styling stored in post meta.
|
||||
const styles = templateTheme?.styles;
|
||||
const styles = userTheme?.styles;
|
||||
|
||||
// Default styles from theme.json.
|
||||
const { styles: defaultStyles } = useSelect( ( select ) => ( {
|
||||
@ -82,25 +83,25 @@ export const useEmailStyles = (): EmailStylesData => {
|
||||
const updateStyles = useCallback(
|
||||
( newStyles ) => {
|
||||
const newTheme = {
|
||||
...templateTheme,
|
||||
...userTheme,
|
||||
styles: newStyles,
|
||||
};
|
||||
updateTemplateTheme( newTheme );
|
||||
updateUserTheme( newTheme );
|
||||
},
|
||||
[ updateTemplateTheme, templateTheme ]
|
||||
[ updateUserTheme, userTheme ]
|
||||
);
|
||||
|
||||
// Update an email style prop.
|
||||
const updateStyleProp = useCallback(
|
||||
( path, newValue ) => {
|
||||
const newTheme = setImmutably(
|
||||
templateTheme,
|
||||
userTheme,
|
||||
[ 'styles', ...path ],
|
||||
newValue
|
||||
);
|
||||
updateTemplateTheme( newTheme );
|
||||
updateUserTheme( newTheme );
|
||||
},
|
||||
[ updateTemplateTheme, templateTheme ]
|
||||
[ updateUserTheme, userTheme ]
|
||||
);
|
||||
|
||||
return {
|
||||
|
Reference in New Issue
Block a user