Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Centralize client side global styles mappings #25056

Merged
merged 1 commit into from
Sep 8, 2020

Conversation

jorgefilipecosta
Copy link
Member

This PR centralizes global styles mapping information in a single place instead of repeating the mappings.
Fixes: #25051

How has this been tested?

I changed styles on blocks e.g: font size, color, etc And I verified the changes were reflected and serialized on the editor.

@github-actions
Copy link

github-actions bot commented Sep 3, 2020

Size Change: -1 B

Total Size: 1.2 MB

Filename Size Change
build/block-editor/index.js 128 kB -1 B
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.67 kB 0 B
build/api-fetch/index.js 3.41 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 8.5 kB 0 B
build/block-directory/style-rtl.css 953 B 0 B
build/block-directory/style.css 952 B 0 B
build/block-editor/style-rtl.css 11.1 kB 0 B
build/block-editor/style.css 11.1 kB 0 B
build/block-library/editor-rtl.css 8.64 kB 0 B
build/block-library/editor.css 8.64 kB 0 B
build/block-library/index.js 138 kB 0 B
build/block-library/style-rtl.css 7.59 kB 0 B
build/block-library/style.css 7.58 kB 0 B
build/block-library/theme-rtl.css 754 B 0 B
build/block-library/theme.css 754 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 47.7 kB 0 B
build/components/index.js 200 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.5 kB 0 B
build/compose/index.js 9.67 kB 0 B
build/core-data/index.js 12.3 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.55 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 4.48 kB 0 B
build/edit-navigation/index.js 11.7 kB 0 B
build/edit-navigation/style-rtl.css 1.16 kB 0 B
build/edit-navigation/style.css 1.16 kB 0 B
build/edit-post/index.js 305 kB 0 B
build/edit-post/style-rtl.css 6.26 kB 0 B
build/edit-post/style.css 6.25 kB 0 B
build/edit-site/index.js 17.1 kB 0 B
build/edit-site/style-rtl.css 3.06 kB 0 B
build/edit-site/style.css 3.06 kB 0 B
build/edit-widgets/index.js 12 kB 0 B
build/edit-widgets/style-rtl.css 2.46 kB 0 B
build/edit-widgets/style.css 2.45 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/index.js 45.6 kB 0 B
build/editor/style-rtl.css 3.81 kB 0 B
build/editor/style.css 3.81 kB 0 B
build/element/index.js 4.64 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.71 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/keyboard-shortcuts/index.js 2.52 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.12 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.32 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.41 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 13.9 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.13 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

Copy link
Member

@aristath aristath left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM and makes perfect sense to have them in a single place instead of repeating them 👍
Tested, I couldn't find anything wrong

@@ -165,6 +165,7 @@ class EditorProvider extends Component {
'__experimentalEnableFullSiteEditing',
'__experimentalEnableFullSiteEditingDemo',
'__experimentalFeatures',
'__experimentalGlobalStylesMapping',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't really make sense to me, it's not a setting. If I have a paragraph block (static block) in any gutenberg instance without any mapping defined, I expect the "padding" control to work properly.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @youknowriad, I agree this is not exactly a setting. This is just static information. But repeating this information is not ideal. On https://github.com/WordPress/gutenberg/blob/try/global-styles-at-edit-site/packages/edit-site/src/components/editor/utils.js we are adding the mappings to yet another place. This information is going to be needed in multiple, places so we should think about a central way to have it across modules instead of copying each time it is needed.
The way I found to share it between server and client was a setting. I'm not sure what other options we have to centralize this information maybe a JSON file that is read on the server and included on the client too?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I personally prefer duplicating in these situations. I think we often not think about the use-case of Gutenberg outside the regular post editor context and this kind of setting is just making things harder to reuse the block editor.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess if we go the duplication path we should restrict the amount of duplication e.g: one time on the server and another time on the client.
In that case, to share between WordPress modules, I guess the mapping can an experiential constant in wordpress/block-editor?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In that case, to share between WordPress modules, I guess the mapping can an experiential constant in wordpress/block-editor?

This works for me, though I don't really understand the need for the mapping in the client as each hook knows what style it produces. Do we really need to have a global variable to hold of that on the client?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, each hook knows the style it produces but on global styles, we may also have the need to produce and compile styles on the client to have live style previews outside the context of the hook. So essentially these mappings should the shared between the style hook and global styles mechanism.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @youknowriad, I updated this PR, now we expose a constant with the mapping. Every module is able to access this data without the need to repeat it.

@jorgefilipecosta jorgefilipecosta force-pushed the update/centralize-global-styles-mappings branch from f4fbb8c to 175224b Compare September 7, 2020 15:37
@jorgefilipecosta jorgefilipecosta force-pushed the update/centralize-global-styles-mappings branch from 175224b to 42953bc Compare September 7, 2020 15:39
@jorgefilipecosta jorgefilipecosta changed the title Centralize global styles mappings on the server Centralize client side global styles mappings Sep 7, 2020
@jorgefilipecosta jorgefilipecosta merged commit d978655 into master Sep 8, 2020
@jorgefilipecosta jorgefilipecosta deleted the update/centralize-global-styles-mappings branch September 8, 2020 10:21
@github-actions github-actions bot added this to the Gutenberg 9.0 milestone Sep 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Centralize style mappings declaration
3 participants