Skip to content

Commit

Permalink
Extract ServerSideRender component to an independent package
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgefilipecosta committed May 24, 2019
1 parent 5963776 commit 255aa5f
Show file tree
Hide file tree
Showing 24 changed files with 155 additions and 42 deletions.
12 changes: 6 additions & 6 deletions docs/manifest-devhub.json
Original file line number Diff line number Diff line change
Expand Up @@ -845,12 +845,6 @@
"markdown_source": "../packages/components/src/select-control/README.md",
"parent": "components"
},
{
"title": "ServerSideRender",
"slug": "server-side-render",
"markdown_source": "../packages/components/src/server-side-render/README.md",
"parent": "components"
},
{
"title": "SlotFill",
"slug": "slot-fill",
Expand Down Expand Up @@ -1289,6 +1283,12 @@
"markdown_source": "../packages/scripts/README.md",
"parent": "packages"
},
{
"title": "@wordpress/server-side-render",
"slug": "packages-server-side-render",
"markdown_source": "../packages/server-side-render/README.md",
"parent": "packages"
},
{
"title": "@wordpress/shortcode",
"slug": "packages-shortcode",
Expand Down
15 changes: 15 additions & 0 deletions lib/client-assets.php
Original file line number Diff line number Diff line change
Expand Up @@ -289,6 +289,21 @@ function gutenberg_register_scripts_and_styles() {
)
);

// Add back compatibility for calls to wp.components.ServerSideRender.
wp_add_inline_script(
'wp-server-side-render',
implode(
"\n",
array(
'( function() {',
' if ( wp && wp.components && wp.serverSideRender && ! wp.components.ServerSideRender ) {',
' wp.components.ServerSideRender = wp.serverSideRender;',
' };',
'} )();',
)
)
);

// Editor Styles.
// This empty stylesheet is defined to ensure backward compatibility.
gutenberg_override_style( 'wp-blocks', false );
Expand Down
14 changes: 13 additions & 1 deletion package-lock.json

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

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"@wordpress/priority-queue": "file:packages/priority-queue",
"@wordpress/redux-routine": "file:packages/redux-routine",
"@wordpress/rich-text": "file:packages/rich-text",
"@wordpress/server-side-render": "file:packages/server-side-render",
"@wordpress/shortcode": "file:packages/shortcode",
"@wordpress/token-list": "file:packages/token-list",
"@wordpress/url": "file:packages/url",
Expand Down
1 change: 1 addition & 0 deletions packages/block-library/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"@wordpress/html-entities": "file:../html-entities",
"@wordpress/i18n": "file:../i18n",
"@wordpress/keycodes": "file:../keycodes",
"@wordpress/server-side-render": "file:../server-side-render",
"@wordpress/viewport": "file:../viewport",
"classnames": "^2.2.5",
"fast-average-color": "4.3.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/block-library/src/archives/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { InspectorControls } from '@wordpress/block-editor';
import { ServerSideRender } from '@wordpress/editor';
import ServerSideRender from '@wordpress/server-side-render';

export default function ArchivesEdit( { attributes, setAttributes } ) {
const { showPostCounts, displayAsDropdown } = attributes;
Expand Down
2 changes: 1 addition & 1 deletion packages/block-library/src/latest-comments/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
RangeControl,
ToggleControl,
} from '@wordpress/components';
import { ServerSideRender } from '@wordpress/editor';
import ServerSideRender from '@wordpress/server-side-render';
import { Component } from '@wordpress/element';
import { __ } from '@wordpress/i18n';

Expand Down
2 changes: 1 addition & 1 deletion packages/block-library/src/legacy-widget/edit/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
BlockIcon,
InspectorControls,
} from '@wordpress/block-editor';
import { ServerSideRender } from '@wordpress/editor';
import ServerSideRender from '@wordpress/server-side-render';

/**
* Internal dependencies
Expand Down
4 changes: 4 additions & 0 deletions packages/components/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@

- Fixed display of reset button when using RangeControl `allowReset` prop.

### Breaking Change

- `ServerSideRender` is no longer part of components. It was extracted to an independent package `@wordpress/server-side-render`.

## 7.3.0 (2019-04-16)

### New Features
Expand Down
1 change: 0 additions & 1 deletion packages/components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
"dependencies": {
"@babel/runtime": "^7.4.4",
"@wordpress/a11y": "file:../a11y",
"@wordpress/api-fetch": "file:../api-fetch",
"@wordpress/compose": "file:../compose",
"@wordpress/dom": "file:../dom",
"@wordpress/element": "file:../element",
Expand Down
1 change: 0 additions & 1 deletion packages/components/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ export { default as ResponsiveWrapper } from './responsive-wrapper';
export { default as SandBox } from './sandbox';
export { default as SelectControl } from './select-control';
export { default as Spinner } from './spinner';
export { default as ServerSideRender } from './server-side-render';
export { default as TabPanel } from './tab-panel';
export { default as TextControl } from './text-control';
export { default as TextareaControl } from './textarea-control';
Expand Down
3 changes: 3 additions & 0 deletions packages/editor/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
### Deprecations
- The `getAutosave`, `getAutosaveAttribute`, and `hasAutosave` selectors are deprecated. Please use the `getAutosave` selector in the `@wordpress/core-data` package.
- The `resetAutosave` action is deprecated. An equivalent action `receiveAutosaves` has been added to the `@wordpress/core-data` package.
- `ServerSideRender` component was deprecated. The component is now available in `@wordpress/server-side-render`.



### Internal

Expand Down
1 change: 1 addition & 0 deletions packages/editor/src/components/deprecated.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,4 @@ export {
withColors,
withFontSizes,
};
export { default as ServerSideRender } from '@wordpress/server-side-render';
1 change: 0 additions & 1 deletion packages/editor/src/components/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
// Block Creation Components
export * from './autocompleters';
export { default as ServerSideRender } from './server-side-render';

// Post Related Components
export { default as AutosaveMonitor } from './autosave-monitor';
Expand Down
3 changes: 0 additions & 3 deletions packages/editor/src/components/server-side-render/README.md

This file was deleted.

18 changes: 0 additions & 18 deletions packages/editor/src/components/server-side-render/index.js

This file was deleted.

1 change: 1 addition & 0 deletions packages/server-side-render/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package-lock=false
5 changes: 5 additions & 0 deletions packages/server-side-render/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## Unreleased

### Enhancements

- Extracted the package from `@wordpress/components` and `@wordpress/editor`;
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@ ServerSideRender should be regarded as a fallback or legacy mechanism, it is not

New blocks should be built in conjunction with any necessary REST API endpoints, so that JavaScript can be used for rendering client-side in the `edit` function. This gives the best user experience, instead of relying on using the PHP `render_callback`. The logic necessary for rendering should be included in the endpoint, so that both the client-side JavaScript and server-side PHP logic should require a minimal amount of differences.

## Installation

Install the module

```bash
npm install @wordpress/server-side-render --save
```

## Usage

The props accepted by the component are described bellow.


## Props

### attributes
Expand Down Expand Up @@ -43,7 +56,7 @@ E.g: `{ post_id: 12 }`.
Render core/archives preview.

```jsx
import { ServerSideRender } from '@wordpress/components';
import { ServerSideRender } from '@wordpress/server-side-render';

const MyServerSideRender = () => (
<ServerSideRender
Expand Down
36 changes: 36 additions & 0 deletions packages/server-side-render/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"name": "@wordpress/server-side-render",
"version": "1.0.0-alpha.1",
"description": "ServerSideRender is a component used for server-side rendering a preview of dynamic blocks to display in the editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
"keywords": [
"wordpress",
"server side",
"render"
],
"homepage": "https://github.com/WordPress/gutenberg/tree/master/packages/server-side-render/README.md",
"repository": {
"type": "git",
"url": "https://github.com/WordPress/gutenberg.git",
"directory": "packages/server-side-render"
},
"bugs": {
"url": "https://github.com/WordPress/gutenberg/issues"
},
"main": "build/index.js",
"module": "build-module/index.js",
"react-native": "src/index",
"dependencies": {
"@babel/runtime": "^7.4.4",
"@wordpress/components": "file:../components",
"@wordpress/data": "file:../data",
"@wordpress/element": "file:../element",
"@wordpress/i18n": "file:../i18n",
"@wordpress/url": "file:../url",
"lodash": "^4.17.11"
},
"publishConfig": {
"access": "public"
}
}
46 changes: 46 additions & 0 deletions packages/server-side-render/src/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/**
* WordPress dependencies
*/
import { useMemo } from '@wordpress/element';
import { withSelect } from '@wordpress/data';

/**
* Internal dependencies
*/
import ServerSideRender from './server-side-render';

/**
* Constants
*/
const EMPTY_OBJECT = {};

export default withSelect(
( select ) => {
const coreEditorSelect = select( 'core/editor' );
if ( coreEditorSelect ) {
const currentPostId = coreEditorSelect.getCurrentPostId();
if ( currentPostId ) {
return {
currentPostId,
};
}
}
return EMPTY_OBJECT;
}
)(
( { urlQueryArgs = EMPTY_OBJECT, currentPostId, ...props } ) => {
urlQueryArgs = useMemo( () => {
if ( ! currentPostId ) {
return urlQueryArgs;
}
return {
post_id: currentPostId,
...urlQueryArgs,
};
}, [ currentPostId, urlQueryArgs ] );

return (
<ServerSideRender urlQueryArgs={ urlQueryArgs } { ...props } />
);
}
);
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,10 @@ import {
import { __, sprintf } from '@wordpress/i18n';
import apiFetch from '@wordpress/api-fetch';
import { addQueryArgs } from '@wordpress/url';

/**
* Internal dependencies
*/
import Placeholder from '../placeholder';
import Spinner from '../spinner';
import {
Placeholder,
Spinner,
} from '@wordpress/components';

export function rendererPath( block, attributes = null, urlQueryArgs = {} ) {
return addQueryArgs( `/wp/v2/block-renderer/${ block }`, {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* Internal dependencies
*/
import { rendererPath } from '../index';
import { rendererPath } from '../server-side-render';

describe( 'rendererPath', function() {
test( 'should return an base path for empty input', function() {
Expand Down
1 change: 1 addition & 0 deletions webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ module.exports = {
'dom-ready',
'redux-routine',
'token-list',
'server-side-render',
'shortcode',
].map( camelCaseDash ) ),
new CopyWebpackPlugin(
Expand Down

0 comments on commit 255aa5f

Please sign in to comment.