diff --git a/blocks/api/raw-handling/test/integration/index.js b/blocks/api/raw-handling/test/integration/index.js
index 2dc567ad10895..0b6ec0e4cc5fc 100644
--- a/blocks/api/raw-handling/test/integration/index.js
+++ b/blocks/api/raw-handling/test/integration/index.js
@@ -8,10 +8,11 @@ import path from 'path';
/**
* Internal dependencies
*/
-import { registerCoreBlocks } from '../../../../../core-blocks';
import rawHandler from '../../index';
import serialize from '../../../serializer';
+import { registerCoreBlocks } from '../../../../test/helpers';
+
const types = [
'plain',
'classic',
@@ -35,6 +36,7 @@ describe( 'raw handling: integration', () => {
beforeAll( () => {
// Load all hooks that modify blocks
require( 'blocks/hooks' );
+
registerCoreBlocks();
} );
diff --git a/blocks/hooks/index.js b/blocks/hooks/index.js
index e464747bf6e95..0f305eea165f6 100644
--- a/blocks/hooks/index.js
+++ b/blocks/hooks/index.js
@@ -7,3 +7,5 @@ import './custom-class-name';
import './default-autocompleters';
import './generated-class-name';
import './layout';
+
+export { defaultAutocompleters } from './default-autocompleters';
diff --git a/blocks/index.js b/blocks/index.js
index e36deba7e0281..db37c6e7c154a 100644
--- a/blocks/index.js
+++ b/blocks/index.js
@@ -19,6 +19,7 @@ export * from './colors';
export { default as editorMediaUpload } from './editor-media-upload';
export { default as AlignmentToolbar } from './alignment-toolbar';
export { default as Autocomplete } from './autocomplete';
+export { blockAutocompleter, userAutocompleter } from './autocompleters';
export { default as BlockAlignmentToolbar } from './block-alignment-toolbar';
export { default as BlockControls } from './block-controls';
export { default as BlockFormatControls } from './block-format-controls';
@@ -26,6 +27,7 @@ export { default as BlockEdit } from './block-edit';
export { default as BlockIcon } from './block-icon';
export { default as ColorPalette } from './color-palette';
export { default as ContrastChecker } from './contrast-checker';
+export { defaultAutocompleters } from './hooks';
export { default as ImagePlaceholder } from './image-placeholder';
export { default as InnerBlocks } from './inner-blocks';
export { default as InspectorControls } from './inspector-controls';
diff --git a/blocks/library/audio/index.php b/blocks/library/audio/index.php
new file mode 100644
index 0000000000000..b0152c31a580f
--- /dev/null
+++ b/blocks/library/audio/index.php
@@ -0,0 +1,45 @@
+ 'core-audio-block',
+ 'editor_style' => 'core-audio-block-editor',
+ 'editor_script' => 'core-audio-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_audio_block' );
diff --git a/blocks/library/button/index.php b/blocks/library/button/index.php
new file mode 100644
index 0000000000000..c41e3bd3a22d6
--- /dev/null
+++ b/blocks/library/button/index.php
@@ -0,0 +1,45 @@
+ 'core-button-block',
+ 'editor_style' => 'core-button-block-editor',
+ 'editor_script' => 'core-button-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_button_block' );
diff --git a/blocks/library/code/index.php b/blocks/library/code/index.php
new file mode 100644
index 0000000000000..9c037dade7ad7
--- /dev/null
+++ b/blocks/library/code/index.php
@@ -0,0 +1,35 @@
+ 'core-code-block-editor',
+ 'editor_script' => 'core-code-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_code_block' );
diff --git a/blocks/library/columns/index.php b/blocks/library/columns/index.php
new file mode 100644
index 0000000000000..d4cd5a4895c27
--- /dev/null
+++ b/blocks/library/columns/index.php
@@ -0,0 +1,45 @@
+ 'core-columns-block',
+ 'editor_style' => 'core-columns-block-editor',
+ 'editor_script' => 'core-columns-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_columns_block' );
diff --git a/blocks/library/cover-image/index.php b/blocks/library/cover-image/index.php
new file mode 100644
index 0000000000000..39dcb62a54010
--- /dev/null
+++ b/blocks/library/cover-image/index.php
@@ -0,0 +1,45 @@
+ 'core-cover-image-block',
+ 'editor_style' => 'core-cover-image-block-editor',
+ 'editor_script' => 'core-cover-image-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_cover_image_block' );
diff --git a/blocks/library/embed/index.php b/blocks/library/embed/index.php
new file mode 100644
index 0000000000000..74751eed90f3c
--- /dev/null
+++ b/blocks/library/embed/index.php
@@ -0,0 +1,101 @@
+ 'core-embed-block',
+ 'editor_style' => 'core-embed-block-editor',
+ 'editor_script' => 'core-embed-block',
+ ) );
+
+ foreach ( $common_embed_block_types as $embed_block_type_name ) {
+ register_block_type( $embed_block_type_name, array(
+ 'style' => 'core-embed-block',
+ 'editor_style' => 'core-embed-block-editor',
+ 'editor_script' => 'core-embed-block',
+ ) );
+ }
+
+ foreach ( $other_embed_block_types as $embed_block_type_name ) {
+ register_block_type( $embed_block_type_name, array(
+ 'style' => 'core-embed-block',
+ 'editor_style' => 'core-embed-block-editor',
+ 'editor_script' => 'core-embed-block',
+ ) );
+ }
+}
+
+add_action( 'init', 'register_core_embed_block_types' );
diff --git a/blocks/library/freeform/index.php b/blocks/library/freeform/index.php
new file mode 100644
index 0000000000000..dd1e49ed108af
--- /dev/null
+++ b/blocks/library/freeform/index.php
@@ -0,0 +1,35 @@
+ 'core-freeform-block-editor',
+ 'editor_script' => 'core-freeform-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_freeform_block' );
diff --git a/blocks/library/gallery/index.php b/blocks/library/gallery/index.php
new file mode 100644
index 0000000000000..29707a679cbbf
--- /dev/null
+++ b/blocks/library/gallery/index.php
@@ -0,0 +1,46 @@
+ 'core-gallery-block',
+ 'editor_style' => 'core-gallery-block-editor',
+ 'editor_script' => 'core-gallery-block',
+ ) );
+
+}
+
+add_action( 'init', 'register_core_gallery_block' );
diff --git a/blocks/library/heading/index.php b/blocks/library/heading/index.php
new file mode 100644
index 0000000000000..3eca92e4a424b
--- /dev/null
+++ b/blocks/library/heading/index.php
@@ -0,0 +1,35 @@
+ 'core-heading-block-editor',
+ 'editor_script' => 'core-heading-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_heading_block' );
diff --git a/blocks/library/html/index.php b/blocks/library/html/index.php
new file mode 100644
index 0000000000000..f2abe8dd2e2db
--- /dev/null
+++ b/blocks/library/html/index.php
@@ -0,0 +1,35 @@
+ 'core-html-block-editor',
+ 'editor_script' => 'core-html-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_html_block' );
diff --git a/blocks/library/image/index.php b/blocks/library/image/index.php
new file mode 100644
index 0000000000000..247b909f9ebb3
--- /dev/null
+++ b/blocks/library/image/index.php
@@ -0,0 +1,45 @@
+ 'core-image-block',
+ 'editor_style' => 'core-image-block-editor',
+ 'editor_script' => 'core-image-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_image_block' );
diff --git a/blocks/library/list/index.php b/blocks/library/list/index.php
new file mode 100644
index 0000000000000..ab6c6a8bb6e1b
--- /dev/null
+++ b/blocks/library/list/index.php
@@ -0,0 +1,35 @@
+ 'core-list-block-editor',
+ 'editor_script' => 'core-list-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_list_block' );
diff --git a/blocks/library/more/index.php b/blocks/library/more/index.php
new file mode 100644
index 0000000000000..90078c3a5cf79
--- /dev/null
+++ b/blocks/library/more/index.php
@@ -0,0 +1,35 @@
+ 'core-more-block-editor',
+ 'editor_script' => 'core-more-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_more_block' );
diff --git a/blocks/library/nextpage/index.php b/blocks/library/nextpage/index.php
new file mode 100644
index 0000000000000..81c7f750a63ea
--- /dev/null
+++ b/blocks/library/nextpage/index.php
@@ -0,0 +1,35 @@
+ 'core-nextpage-block-editor',
+ 'editor_script' => 'core-nextpage-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_nextpage_block' );
diff --git a/blocks/library/paragraph/index.php b/blocks/library/paragraph/index.php
new file mode 100644
index 0000000000000..5d04b09569457
--- /dev/null
+++ b/blocks/library/paragraph/index.php
@@ -0,0 +1,45 @@
+ 'core-paragraph-block',
+ 'editor_style' => 'core-paragraph-block-editor',
+ 'editor_script' => 'core-paragraph-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_paragraph_block' );
diff --git a/blocks/library/preformatted/index.php b/blocks/library/preformatted/index.php
new file mode 100644
index 0000000000000..9da0987f22f15
--- /dev/null
+++ b/blocks/library/preformatted/index.php
@@ -0,0 +1,35 @@
+ 'core-preformatted-block-editor',
+ 'editor_script' => 'core-preformatted-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_preformatted_block' );
diff --git a/blocks/library/pullquote/index.php b/blocks/library/pullquote/index.php
new file mode 100644
index 0000000000000..0bb0b568990e6
--- /dev/null
+++ b/blocks/library/pullquote/index.php
@@ -0,0 +1,45 @@
+ 'core-pullquote-block',
+ 'editor_style' => 'core-pullquote-block-editor',
+ 'editor_script' => 'core-pullquote-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_pullquote_block' );
diff --git a/blocks/library/quote/index.php b/blocks/library/quote/index.php
new file mode 100644
index 0000000000000..f6a156d65e099
--- /dev/null
+++ b/blocks/library/quote/index.php
@@ -0,0 +1,45 @@
+ 'core-quote-block',
+ 'editor_style' => 'core-quote-block-editor',
+ 'editor_script' => 'core-quote-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_quote_block' );
diff --git a/blocks/library/separator/index.php b/blocks/library/separator/index.php
new file mode 100644
index 0000000000000..e6e965b3f4693
--- /dev/null
+++ b/blocks/library/separator/index.php
@@ -0,0 +1,35 @@
+ 'core-separator-block',
+ 'editor_script' => 'core-separator-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_separator_block' );
diff --git a/blocks/library/shortcode/index.php b/blocks/library/shortcode/index.php
new file mode 100644
index 0000000000000..23cfa110349d6
--- /dev/null
+++ b/blocks/library/shortcode/index.php
@@ -0,0 +1,35 @@
+ 'core-shortcode-block-editor',
+ 'editor_script' => 'core-shortcode-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_shortcode_block' );
diff --git a/blocks/library/subhead/index.php b/blocks/library/subhead/index.php
new file mode 100644
index 0000000000000..7035872ddea4a
--- /dev/null
+++ b/blocks/library/subhead/index.php
@@ -0,0 +1,45 @@
+ 'core-subhead-block',
+ 'editor_style' => 'core-subhead-block-editor',
+ 'editor_script' => 'core-subhead-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_subhead_block' );
diff --git a/blocks/library/table/index.php b/blocks/library/table/index.php
new file mode 100644
index 0000000000000..5c9422be43b04
--- /dev/null
+++ b/blocks/library/table/index.php
@@ -0,0 +1,45 @@
+ 'core-table-block',
+ 'editor_style' => 'core-table-block-editor',
+ 'editor_script' => 'core-table-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_table_block' );
diff --git a/blocks/library/text-columns/index.php b/blocks/library/text-columns/index.php
new file mode 100644
index 0000000000000..079e148f18235
--- /dev/null
+++ b/blocks/library/text-columns/index.php
@@ -0,0 +1,45 @@
+ 'core-text-columns-block',
+ 'editor_style' => 'core-text-columns-block-editor',
+ 'editor_script' => 'core-text-columns-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_text_columns_block' );
diff --git a/blocks/library/verse/index.php b/blocks/library/verse/index.php
new file mode 100644
index 0000000000000..81000b9dc1dc7
--- /dev/null
+++ b/blocks/library/verse/index.php
@@ -0,0 +1,35 @@
+ 'core-verse-block-editor',
+ 'editor_script' => 'core-verse-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_verse_block' );
diff --git a/blocks/library/video/index.php b/blocks/library/video/index.php
new file mode 100644
index 0000000000000..88b01ee6a4efd
--- /dev/null
+++ b/blocks/library/video/index.php
@@ -0,0 +1,45 @@
+ 'core-video-block',
+ 'editor_style' => 'core-video-block-editor',
+ 'editor_script' => 'core-video-block',
+ ) );
+}
+
+add_action( 'init', 'register_core_video_block' );
diff --git a/core-blocks/audio/index.js b/core-blocks/audio/index.js
index 6f0f47fe37110..7de03a12cdaf6 100644
--- a/core-blocks/audio/index.js
+++ b/core-blocks/audio/index.js
@@ -2,6 +2,15 @@
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
+
+import {
+ registerBlockType,
+ MediaUpload,
+ editorMediaUpload,
+ RichText,
+ BlockControls,
+} from '@wordpress/blocks';
+
import {
Button,
FormFileUpload,
@@ -10,12 +19,6 @@ import {
Toolbar,
} from '@wordpress/components';
import { Component, Fragment } from '@wordpress/element';
-import {
- editorMediaUpload,
- MediaUpload,
- RichText,
- BlockControls,
-} from '@wordpress/blocks';
/**
* Internal dependencies
@@ -176,3 +179,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/block/edit-panel/style.scss b/core-blocks/block/edit-panel/editor.scss
similarity index 100%
rename from core-blocks/block/edit-panel/style.scss
rename to core-blocks/block/edit-panel/editor.scss
diff --git a/core-blocks/block/edit-panel/index.js b/core-blocks/block/edit-panel/index.js
index 88b733d0ce63d..340fde11e8e00 100644
--- a/core-blocks/block/edit-panel/index.js
+++ b/core-blocks/block/edit-panel/index.js
@@ -9,7 +9,7 @@ import { keycodes } from '@wordpress/utils';
/**
* Internal dependencies
*/
-import './style.scss';
+import './editor.scss';
/**
* Module constants
diff --git a/core-blocks/block/index.js b/core-blocks/block/index.js
index 971ee4e3cd4d4..f3913f8087a72 100644
--- a/core-blocks/block/index.js
+++ b/core-blocks/block/index.js
@@ -10,7 +10,10 @@ import { Component, Fragment, compose } from '@wordpress/element';
import { Placeholder, Spinner, Disabled } from '@wordpress/components';
import { withSelect, withDispatch } from '@wordpress/data';
import { __ } from '@wordpress/i18n';
-import { BlockEdit } from '@wordpress/blocks';
+import {
+ registerBlockType,
+ BlockEdit,
+} from '@wordpress/blocks';
/**
* Internal dependencies
@@ -189,3 +192,5 @@ export const settings = {
edit: EnhancedSharedBlockEdit,
save: () => null,
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/block/index.php b/core-blocks/block/index.php
index dd1e1fbc43903..12554a72ecb70 100644
--- a/core-blocks/block/index.php
+++ b/core-blocks/block/index.php
@@ -1,6 +1,6 @@
array(
- 'ref' => array(
- 'type' => 'number',
+/**
+ * Registers the `core/block` block on the server-side.
+ *
+ * @since 2.7.0
+ */
+function register_core_reusable_block() {
+ wp_register_script(
+ 'core-reusable-block',
+ gutenberg_url( '/build/__block_block.js' ),
+ array( 'wp-blocks', 'wp-i18n', 'wp-components', 'wp-element', 'wp-data', 'wp-utils' )
+ );
+
+ wp_register_style(
+ 'core-reusable-block-editor',
+ gutenberg_url( '/build/__block_block_editor.css' ),
+ array(),
+ filemtime( gutenberg_dir_path() . 'build/__block_block_editor.css' )
+ );
+
+ wp_style_add_data( 'core-reusable-block-editor', 'rtl', 'replace' );
+
+ register_block_type( 'core/block', array(
+ 'editor_style' => 'core-reusable-block-editor',
+ 'editor_script' => 'core-reusable-block',
+ 'attributes' => array(
+ 'ref' => array(
+ 'type' => 'number',
+ ),
),
- ),
- 'render_callback' => 'render_block_core_block',
-) );
+ 'render_callback' => 'gutenberg_render_core_reusable_block',
+ ) );
+}
+
+add_action( 'init', 'register_core_reusable_block' );
diff --git a/core-blocks/block/indicator/style.scss b/core-blocks/block/indicator/editor.scss
similarity index 100%
rename from core-blocks/block/indicator/style.scss
rename to core-blocks/block/indicator/editor.scss
diff --git a/core-blocks/block/indicator/index.js b/core-blocks/block/indicator/index.js
index ffeb4bffcfb32..8bae9744abe88 100644
--- a/core-blocks/block/indicator/index.js
+++ b/core-blocks/block/indicator/index.js
@@ -7,7 +7,7 @@ import { __, sprintf } from '@wordpress/i18n';
/**
* Internal dependencies
*/
-import './style.scss';
+import './editor.scss';
function SharedBlockIndicator( { title } ) {
return (
diff --git a/core-blocks/button/index.js b/core-blocks/button/index.js
index 8a710ef4c0cd8..42606bace936e 100644
--- a/core-blocks/button/index.js
+++ b/core-blocks/button/index.js
@@ -8,25 +8,27 @@ import { omit, pick } from 'lodash';
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
-import { Component, Fragment } from '@wordpress/element';
-import {
- Dashicon,
- IconButton,
- PanelBody,
- ToggleControl,
- withFallbackStyles,
-} from '@wordpress/components';
import {
- UrlInput,
+ registerBlockType,
RichText,
+ UrlInput,
BlockControls,
BlockAlignmentToolbar,
+ ColorPalette,
ContrastChecker,
InspectorControls,
getColorClass,
withColors,
PanelColor,
} from '@wordpress/blocks';
+import { Component, Fragment } from '@wordpress/element';
+import {
+ Dashicon,
+ IconButton,
+ PanelBody,
+ ToggleControl,
+ withFallbackStyles,
+} from '@wordpress/components';
/**
* Internal dependencies
@@ -348,3 +350,5 @@ export const settings = {
},
],
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/categories/block.js b/core-blocks/categories/block.js
index 21e940834bb14..7da89fcaa0f4e 100644
--- a/core-blocks/categories/block.js
+++ b/core-blocks/categories/block.js
@@ -1,16 +1,16 @@
/**
* WordPress dependencies
*/
-import { Component, Fragment } from '@wordpress/element';
-import { PanelBody, Placeholder, Spinner, ToggleControl } from '@wordpress/components';
-import { withSelect } from '@wordpress/data';
-import { __ } from '@wordpress/i18n';
-import { times, unescape } from 'lodash';
import {
InspectorControls,
BlockControls,
BlockAlignmentToolbar,
} from '@wordpress/blocks';
+import { Component, Fragment } from '@wordpress/element';
+import { PanelBody, Placeholder, Spinner, ToggleControl } from '@wordpress/components';
+import { withSelect } from '@wordpress/data';
+import { __ } from '@wordpress/i18n';
+import { times, unescape } from 'lodash';
/**
* Internal dependencies
diff --git a/core-blocks/categories/index.js b/core-blocks/categories/index.js
index d180b7df245df..39a905e20a339 100644
--- a/core-blocks/categories/index.js
+++ b/core-blocks/categories/index.js
@@ -2,6 +2,9 @@
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
+import {
+ registerBlockType,
+} from '@wordpress/blocks';
/**
* Internal dependencies
@@ -56,3 +59,5 @@ export const settings = {
return null;
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/categories/index.php b/core-blocks/categories/index.php
index e751436b22f52..4f89eff6f6af5 100644
--- a/core-blocks/categories/index.php
+++ b/core-blocks/categories/index.php
@@ -1,6 +1,6 @@
'render_block_core_categories',
+ 'style' => 'core-categories-block',
+ 'editor_style' => 'core-categories-block-editor',
+ 'editor_script' => 'core-categories-block',
+ 'render_callback' => 'gutenberg_render_core_categories_block',
) );
}
-add_action( 'init', 'register_block_core_categories' );
+add_action( 'init', 'register_core_categories_block' );
diff --git a/core-blocks/code/index.js b/core-blocks/code/index.js
index 0b26512d61865..c20434133c8b5 100644
--- a/core-blocks/code/index.js
+++ b/core-blocks/code/index.js
@@ -4,6 +4,8 @@
import { __ } from '@wordpress/i18n';
import {
createBlock,
+ registerBlockType,
+ PlainText,
} from '@wordpress/blocks';
/**
@@ -71,3 +73,5 @@ export const settings = {
return
{ attributes.content }
;
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/columns/index.js b/core-blocks/columns/index.js
index a21bd2683581d..21ad8bb86a23c 100644
--- a/core-blocks/columns/index.js
+++ b/core-blocks/columns/index.js
@@ -9,12 +9,15 @@ import memoize from 'memize';
* WordPress dependencies
*/
import { __, sprintf } from '@wordpress/i18n';
-import { PanelBody, RangeControl } from '@wordpress/components';
-import { Fragment } from '@wordpress/element';
import {
+ registerBlockType,
InspectorControls,
+ BlockControls,
+ BlockAlignmentToolbar,
InnerBlocks,
} from '@wordpress/blocks';
+import { PanelBody, RangeControl } from '@wordpress/components';
+import { Fragment } from '@wordpress/element';
/**
* Internal dependencies
@@ -102,3 +105,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/cover-image/index.js b/core-blocks/cover-image/index.js
index eb06175ee138f..9a50f77023bd3 100644
--- a/core-blocks/cover-image/index.js
+++ b/core-blocks/cover-image/index.js
@@ -9,17 +9,18 @@ import { isEmpty } from 'lodash';
import { IconButton, PanelBody, RangeControl, ToggleControl, Toolbar } from '@wordpress/components';
import { Fragment } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
-import classnames from 'classnames';
import {
createBlock,
+ registerBlockType,
+ RichText,
+ AlignmentToolbar,
+ MediaUpload,
+ ImagePlaceholder,
BlockControls,
- InspectorControls,
BlockAlignmentToolbar,
- ImagePlaceholder,
- MediaUpload,
- AlignmentToolbar,
- RichText,
+ InspectorControls,
} from '@wordpress/blocks';
+import classnames from 'classnames';
/**
* Internal dependencies
@@ -268,6 +269,8 @@ export const settings = {
} ],
};
+registerBlockType( name, settings );
+
function dimRatioToClass( ratio ) {
return ( ratio === 0 || ratio === 50 ) ?
null :
diff --git a/core-blocks/embed/index.js b/core-blocks/embed/index.js
index f9c6565cc326e..1a8b3a35e2d4e 100644
--- a/core-blocks/embed/index.js
+++ b/core-blocks/embed/index.js
@@ -9,15 +9,16 @@ import { stringify } from 'querystring';
* WordPress dependencies
*/
import { __, sprintf } from '@wordpress/i18n';
-import { Component, Fragment, renderToString } from '@wordpress/element';
-import { Button, Placeholder, Spinner, SandBox } from '@wordpress/components';
-import classnames from 'classnames';
import {
createBlock,
+ registerBlockType,
+ RichText,
BlockControls,
BlockAlignmentToolbar,
- RichText,
} from '@wordpress/blocks';
+import { Component, Fragment, renderToString } from '@wordpress/element';
+import { Button, Placeholder, Spinner, SandBox } from '@wordpress/components';
+import classnames from 'classnames';
/**
* Internal dependencies
@@ -271,7 +272,7 @@ export const settings = getEmbedBlockSettings( {
from: [
{
type: 'raw',
- isMatch: ( node ) => node.nodeName === 'P' && /^\s*(https?:\/\/\S+)\s*$/i.test( node.textContent ),
+ isMatch: ( node ) => node.nodeName === 'P' && /^\s*(https?:\/\/\S+)\s*/i.test( node.textContent ),
transform: ( node ) => {
return createBlock( 'core/embed', {
url: node.textContent.trim(),
@@ -282,6 +283,8 @@ export const settings = getEmbedBlockSettings( {
},
} );
+registerBlockType( name, settings );
+
export const common = [
{
name: 'core-embed/twitter',
@@ -528,3 +531,11 @@ export const others = [
} ),
},
];
+
+common.map( ( embedBlockType ) =>
+ registerBlockType( embedBlockType.name, embedBlockType.settings )
+);
+
+others.map( ( embedBlockType ) =>
+ registerBlockType( embedBlockType.name, embedBlockType.settings )
+);
diff --git a/core-blocks/freeform/index.js b/core-blocks/freeform/index.js
index 4903a6a54e928..d35bfb26cfb55 100644
--- a/core-blocks/freeform/index.js
+++ b/core-blocks/freeform/index.js
@@ -3,6 +3,10 @@
*/
import { RawHTML } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
+import {
+ registerBlockType,
+ setUnknownTypeHandlerName,
+} from '@wordpress/blocks';
/**
* Internal dependencies
@@ -41,3 +45,7 @@ export const settings = {
return { content };
},
};
+
+registerBlockType( name, settings );
+
+setUnknownTypeHandlerName( name );
diff --git a/core-blocks/gallery/block.js b/core-blocks/gallery/block.js
index 3a7b50319ecde..8800209f6b223 100644
--- a/core-blocks/gallery/block.js
+++ b/core-blocks/gallery/block.js
@@ -6,6 +6,14 @@ import { filter, pick } from 'lodash';
/**
* WordPress dependencies
*/
+import {
+ editorMediaUpload,
+ MediaUpload,
+ ImagePlaceholder,
+ InspectorControls,
+ BlockControls,
+ BlockAlignmentToolbar,
+} from '@wordpress/blocks';
import { Component, Fragment } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import {
@@ -18,14 +26,6 @@ import {
ToggleControl,
Toolbar,
} from '@wordpress/components';
-import {
- editorMediaUpload,
- BlockControls,
- BlockAlignmentToolbar,
- MediaUpload,
- ImagePlaceholder,
- InspectorControls,
-} from '@wordpress/blocks';
/**
* Internal dependencies
diff --git a/core-blocks/gallery/gallery-image.js b/core-blocks/gallery/gallery-image.js
index f76f9dd458d99..403b1f00ebde8 100644
--- a/core-blocks/gallery/gallery-image.js
+++ b/core-blocks/gallery/gallery-image.js
@@ -8,10 +8,10 @@ import classnames from 'classnames';
*/
import { Component } from '@wordpress/element';
import { IconButton, Spinner } from '@wordpress/components';
+import { RichText } from '@wordpress/blocks';
import { __ } from '@wordpress/i18n';
import { keycodes } from '@wordpress/utils';
import { withSelect } from '@wordpress/data';
-import { RichText } from '@wordpress/blocks';
/**
* Module constants
diff --git a/core-blocks/gallery/index.js b/core-blocks/gallery/index.js
index ea6cac77ebf1f..0b7c4bd637828 100644
--- a/core-blocks/gallery/index.js
+++ b/core-blocks/gallery/index.js
@@ -10,8 +10,10 @@ import { __ } from '@wordpress/i18n';
import {
createBlock,
editorMediaUpload,
+ registerBlockType,
RichText,
} from '@wordpress/blocks';
+import { mediaUpload } from '@wordpress/utils';
/**
* Internal dependencies
@@ -240,3 +242,5 @@ export const settings = {
},
],
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/heading/index.js b/core-blocks/heading/index.js
index 6684ef62071a3..874f4882abb8a 100644
--- a/core-blocks/heading/index.js
+++ b/core-blocks/heading/index.js
@@ -2,10 +2,9 @@
* WordPress dependencies
*/
import { __, sprintf } from '@wordpress/i18n';
-import { concatChildren, Fragment } from '@wordpress/element';
-import { PanelBody, Toolbar } from '@wordpress/components';
import {
createBlock,
+ registerBlockType,
RichText,
BlockControls,
InspectorControls,
@@ -13,6 +12,9 @@ import {
getPhrasingContentSchema,
} from '@wordpress/blocks';
+import { concatChildren, Fragment } from '@wordpress/element';
+import { PanelBody, Toolbar } from '@wordpress/components';
+
/**
* Internal dependencies
*/
@@ -189,3 +191,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/html/index.js b/core-blocks/html/index.js
index 7a7eb822fe715..66da1c1fbbdb2 100644
--- a/core-blocks/html/index.js
+++ b/core-blocks/html/index.js
@@ -3,8 +3,12 @@
*/
import { RawHTML } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
+import {
+ registerBlockType,
+ BlockControls,
+ getPhrasingContentSchema,
+} from '@wordpress/blocks';
import { withState, SandBox, CodeEditor } from '@wordpress/components';
-import { BlockControls, getPhrasingContentSchema } from '@wordpress/blocks';
/**
* Internal dependencies
@@ -96,3 +100,5 @@ export const settings = {
return { attributes.content };
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/image/block.js b/core-blocks/image/block.js
index 22556c27535ae..57ca912190b40 100644
--- a/core-blocks/image/block.js
+++ b/core-blocks/image/block.js
@@ -15,6 +15,17 @@ import {
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
+import {
+ RichText,
+ ImagePlaceholder,
+ MediaUpload,
+ InspectorControls,
+ BlockControls,
+ BlockAlignmentToolbar,
+ UrlInputButton,
+ withEditorSettings,
+ editorMediaUpload,
+} from '@wordpress/blocks';
import { Component, compose, Fragment } from '@wordpress/element';
import { getBlobByURL, revokeBlobURL, viewPort } from '@wordpress/utils';
import {
@@ -28,17 +39,6 @@ import {
Toolbar,
} from '@wordpress/components';
import { withSelect } from '@wordpress/data';
-import {
- editorMediaUpload,
- RichText,
- BlockControls,
- InspectorControls,
- ImagePlaceholder,
- MediaUpload,
- BlockAlignmentToolbar,
- UrlInputButton,
- withEditorSettings,
-} from '@wordpress/blocks';
/**
* Internal dependencies
diff --git a/core-blocks/image/index.js b/core-blocks/image/index.js
index bad314b5cb4eb..38ae1ba9ecd56 100644
--- a/core-blocks/image/index.js
+++ b/core-blocks/image/index.js
@@ -4,6 +4,7 @@
import { __ } from '@wordpress/i18n';
import {
createBlock,
+ registerBlockType,
getBlockAttributes,
getBlockType,
RichText,
@@ -17,8 +18,6 @@ import './style.scss';
import './editor.scss';
import ImageBlock from './block';
-export const name = 'core/image';
-
const blockAttributes = {
url: {
type: 'string',
@@ -58,6 +57,8 @@ const blockAttributes = {
},
};
+export const name = 'core/image';
+
const imageSchema = {
img: {
attributes: [ 'src', 'alt' ],
@@ -229,3 +230,5 @@ export const settings = {
},
],
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/index.js b/core-blocks/index.js
deleted file mode 100644
index a6c83b08da036..0000000000000
--- a/core-blocks/index.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * WordPress dependencies
- */
-import {
- registerBlockType,
- setDefaultBlockName,
- setUnknownTypeHandlerName,
-} from '@wordpress/blocks';
-import { deprecated } from '@wordpress/utils';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import * as paragraph from './paragraph';
-import * as image from './image';
-import * as heading from './heading';
-import * as quote from './quote';
-import * as gallery from './gallery';
-import * as audio from './audio';
-import * as button from './button';
-import * as categories from './categories';
-import * as code from './code';
-import * as columns from './columns';
-import * as coverImage from './cover-image';
-import * as embed from './embed';
-import * as freeform from './freeform';
-import * as html from './html';
-import * as latestPosts from './latest-posts';
-import * as list from './list';
-import * as more from './more';
-import * as nextpage from './nextpage';
-import * as preformatted from './preformatted';
-import * as pullquote from './pullquote';
-import * as sharedBlock from './block';
-import * as separator from './separator';
-import * as shortcode from './shortcode';
-import * as spacer from './spacer';
-import * as subhead from './subhead';
-import * as table from './table';
-import * as textColumns from './text-columns';
-import * as verse from './verse';
-import * as video from './video';
-
-export const registerCoreBlocks = () => {
- [
- // Common blocks are grouped at the top to prioritize their display
- // in various contexts — like the inserter and auto-complete components.
- paragraph,
- image,
- heading,
- gallery,
- list,
- quote,
-
- // Register all remaining core blocks.
- shortcode,
- audio,
- button,
- categories,
- code,
- columns,
- coverImage,
- embed,
- ...embed.common,
- ...embed.others,
- freeform,
- html,
- latestPosts,
- more,
- nextpage,
- preformatted,
- pullquote,
- separator,
- sharedBlock,
- spacer,
- subhead,
- table,
- textColumns,
- verse,
- video,
- ].forEach( ( { name, settings } ) => {
- registerBlockType( name, settings );
- } );
-
- setDefaultBlockName( paragraph.name );
- setUnknownTypeHandlerName( freeform.name );
-};
-
-// Backwards compatibility
-wp.blocks.registerCoreBlocks = () => {
- deprecated( 'wp.blocks.registerCoreBlocks', {
- version: '3.0',
- alternative: 'wp.coreBlocks.registerCoreBlocks',
- plugin: 'Gutenberg',
- } );
- registerCoreBlocks();
-};
diff --git a/core-blocks/latest-posts/block.js b/core-blocks/latest-posts/block.js
index dd40606eec68d..41baec745398d 100644
--- a/core-blocks/latest-posts/block.js
+++ b/core-blocks/latest-posts/block.js
@@ -10,6 +10,11 @@ import { stringify } from 'querystringify';
* WordPress dependencies
*/
import { Component, Fragment } from '@wordpress/element';
+import {
+ InspectorControls,
+ BlockControls,
+ BlockAlignmentToolbar,
+} from '@wordpress/blocks';
import {
PanelBody,
Placeholder,
@@ -22,11 +27,6 @@ import {
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { decodeEntities } from '@wordpress/utils';
-import {
- InspectorControls,
- BlockAlignmentToolbar,
- BlockControls,
-} from '@wordpress/blocks';
/**
* Internal dependencies
diff --git a/core-blocks/latest-posts/index.js b/core-blocks/latest-posts/index.js
index 3762b61e2a68b..af0d9c5ca7e03 100644
--- a/core-blocks/latest-posts/index.js
+++ b/core-blocks/latest-posts/index.js
@@ -2,6 +2,9 @@
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
+import {
+ registerBlockType,
+} from '@wordpress/blocks';
/**
* Internal dependencies
@@ -40,3 +43,5 @@ export const settings = {
return null;
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/latest-posts/index.php b/core-blocks/latest-posts/index.php
index 823989cb30af4..098b2bfdafa21 100644
--- a/core-blocks/latest-posts/index.php
+++ b/core-blocks/latest-posts/index.php
@@ -1,6 +1,6 @@
$attributes['postsToShow'],
'post_status' => 'publish',
@@ -70,10 +70,39 @@ function render_block_core_latest_posts( $attributes ) {
}
/**
- * Registers the `core/latest-posts` block on server.
+ * Registers the `core/latest-posts` block on the server-side.
+ *
+ * @since 2.7.0
*/
-function register_block_core_latest_posts() {
+function register_core_latest_posts_block() {
+ wp_register_script(
+ 'core-latest-posts-block',
+ gutenberg_url( '/build/__block_latestPosts.js' ),
+ array( 'wp-blocks', 'wp-i18n', 'wp-components', 'wp-element', 'wp-utils' )
+ );
+
+ wp_register_style(
+ 'core-latest-posts-block',
+ gutenberg_url( '/build/__block_latestPosts.css' ),
+ array(),
+ filemtime( gutenberg_dir_path() . 'build/__block_latestPosts.css' )
+ );
+
+ wp_style_add_data( 'core-latest-posts-block', 'rtl', 'replace' );
+
+ wp_register_style(
+ 'core-latest-posts-block-editor',
+ gutenberg_url( '/build/__block_latestPosts_editor.css' ),
+ array(),
+ filemtime( gutenberg_dir_path() . 'build/__block_latestPosts_editor.css' )
+ );
+
+ wp_style_add_data( 'core-latest-posts-block-editor', 'rtl', 'replace' );
+
register_block_type( 'core/latest-posts', array(
+ 'style' => 'core-latest-posts-block',
+ 'editor_style' => 'core-latest-posts-block-editor',
+ 'editor_script' => 'core-latest-posts-block',
'attributes' => array(
'categories' => array(
'type' => 'string',
@@ -110,8 +139,8 @@ function register_block_core_latest_posts() {
'default' => 'date',
),
),
- 'render_callback' => 'render_block_core_latest_posts',
+ 'render_callback' => 'gutenberg_render_core_latest_posts_block',
) );
}
-add_action( 'init', 'register_block_core_latest_posts' );
+add_action( 'init', 'register_core_latest_posts_block' );
diff --git a/core-blocks/list/index.js b/core-blocks/list/index.js
index 5adaee2e7cc78..ce6d41d3423a2 100644
--- a/core-blocks/list/index.js
+++ b/core-blocks/list/index.js
@@ -10,6 +10,7 @@ import { Component, Fragment } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import {
createBlock,
+ registerBlockType,
BlockControls,
RichText,
getPhrasingContentSchema,
@@ -334,3 +335,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/more/index.js b/core-blocks/more/index.js
index 9b31308e2eac3..1a21e79e71a7b 100644
--- a/core-blocks/more/index.js
+++ b/core-blocks/more/index.js
@@ -7,12 +7,13 @@ import { compact } from 'lodash';
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
-import { PanelBody, ToggleControl } from '@wordpress/components';
-import { Component, Fragment, RawHTML } from '@wordpress/element';
import {
+ registerBlockType,
createBlock,
InspectorControls,
} from '@wordpress/blocks';
+import { PanelBody, ToggleControl } from '@wordpress/components';
+import { Component, Fragment, RawHTML } from '@wordpress/element';
/**
* Internal dependencies
@@ -144,3 +145,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/nextpage/index.js b/core-blocks/nextpage/index.js
index e3668e5fb7b04..f14414a5c1cf9 100644
--- a/core-blocks/nextpage/index.js
+++ b/core-blocks/nextpage/index.js
@@ -2,8 +2,11 @@
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
+import {
+ createBlock,
+ registerBlockType,
+} from '@wordpress/blocks';
import { RawHTML } from '@wordpress/element';
-import { createBlock } from '@wordpress/blocks';
/**
* Internal dependencies
@@ -62,3 +65,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/paragraph/index.js b/core-blocks/paragraph/index.js
index d1e194f800e19..46fbbe05287f6 100644
--- a/core-blocks/paragraph/index.js
+++ b/core-blocks/paragraph/index.js
@@ -8,6 +8,24 @@ import { findKey, isFinite, map, omit } from 'lodash';
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
+import {
+ AlignmentToolbar,
+ BlockAlignmentToolbar,
+ BlockControls,
+ createBlock,
+ blockAutocompleter,
+ ColorPalette,
+ ContrastChecker,
+ defaultAutocompleters,
+ getColorClass,
+ getPhrasingContentSchema,
+ InspectorControls,
+ PanelColor,
+ registerBlockType,
+ RichText,
+ setDefaultBlockName,
+ withColors,
+} from '@wordpress/blocks';
import {
concatChildren,
Component,
@@ -23,18 +41,6 @@ import {
ButtonGroup,
withFallbackStyles,
} from '@wordpress/components';
-import {
- createBlock,
- getColorClass,
- withColors,
- AlignmentToolbar,
- BlockControls,
- ContrastChecker,
- InspectorControls,
- PanelColor,
- RichText,
- getPhrasingContentSchema,
-} from '@wordpress/blocks';
/**
* Internal dependencies
@@ -75,7 +81,7 @@ class ParagraphBlock extends Component {
onReplace( blocks ) {
const { attributes, onReplace } = this.props;
onReplace( blocks.map( ( block, index ) => (
- index === 0 && block.name === name ?
+ index === 0 && block.name === 'core/paragraph' ?
{ ...block,
attributes: {
...attributes,
@@ -518,3 +524,7 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
+
+setDefaultBlockName( name );
diff --git a/core-blocks/preformatted/index.js b/core-blocks/preformatted/index.js
index 6e094ced7b8a0..5b73fce8466d1 100644
--- a/core-blocks/preformatted/index.js
+++ b/core-blocks/preformatted/index.js
@@ -4,6 +4,7 @@
import { __ } from '@wordpress/i18n';
import {
createBlock,
+ registerBlockType,
RichText,
getPhrasingContentSchema,
} from '@wordpress/blocks';
@@ -90,3 +91,5 @@ export const settings = {
return ;
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/pullquote/index.js b/core-blocks/pullquote/index.js
index c348bcc39c61f..82e4754fbc820 100644
--- a/core-blocks/pullquote/index.js
+++ b/core-blocks/pullquote/index.js
@@ -7,13 +7,14 @@ import { map } from 'lodash';
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
-import { withState } from '@wordpress/components';
-import { Fragment } from '@wordpress/element';
import {
+ registerBlockType,
+ RichText,
BlockControls,
BlockAlignmentToolbar,
- RichText,
} from '@wordpress/blocks';
+import { withState } from '@wordpress/components';
+import { Fragment } from '@wordpress/element';
/**
* Internal dependencies
@@ -50,7 +51,6 @@ const blockAttributes = {
export const name = 'core/pullquote';
export const settings = {
-
title: __( 'Pullquote' ),
description: __( 'A pullquote is a brief, attention-catching quotation taken from the main text of an article and used as a subheading or graphic feature.' ),
@@ -151,3 +151,5 @@ export const settings = {
},
} ],
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/quote/index.js b/core-blocks/quote/index.js
index 2733fcc5bd406..7035f209105d9 100644
--- a/core-blocks/quote/index.js
+++ b/core-blocks/quote/index.js
@@ -8,15 +8,16 @@ import classnames from 'classnames';
* WordPress dependencies
*/
import { __, sprintf } from '@wordpress/i18n';
-import { Toolbar, withState } from '@wordpress/components';
-import { Fragment } from '@wordpress/element';
import {
createBlock,
- BlockControls,
+ registerBlockType,
AlignmentToolbar,
+ BlockControls,
RichText,
getPhrasingContentSchema,
} from '@wordpress/blocks';
+import { Toolbar, withState } from '@wordpress/components';
+import { Fragment } from '@wordpress/element';
/**
* Internal dependencies
@@ -287,3 +288,5 @@ export const settings = {
},
],
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/separator/index.js b/core-blocks/separator/index.js
index 1ed566613958c..24b95dbc30e5b 100644
--- a/core-blocks/separator/index.js
+++ b/core-blocks/separator/index.js
@@ -2,7 +2,10 @@
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
-import { createBlock } from '@wordpress/blocks';
+import {
+ createBlock,
+ registerBlockType,
+} from '@wordpress/blocks';
/**
* Internal dependencies
@@ -48,3 +51,5 @@ export const settings = {
return
;
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/shortcode/index.js b/core-blocks/shortcode/index.js
index a0fe03a30ddf0..6f44abef834d5 100644
--- a/core-blocks/shortcode/index.js
+++ b/core-blocks/shortcode/index.js
@@ -3,8 +3,12 @@
*/
import { RawHTML } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
+import {
+ registerBlockType,
+ PlainText,
+} from '@wordpress/blocks';
+
import { withInstanceId, Dashicon } from '@wordpress/components';
-import { PlainText } from '@wordpress/blocks';
/**
* Internal dependencies
@@ -86,3 +90,5 @@ export const settings = {
return { attributes.text };
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/subhead/index.js b/core-blocks/subhead/index.js
index 12ca9a99d358c..6a328c2904bc5 100644
--- a/core-blocks/subhead/index.js
+++ b/core-blocks/subhead/index.js
@@ -4,6 +4,7 @@
import { __ } from '@wordpress/i18n';
import {
createBlock,
+ registerBlockType,
RichText,
} from '@wordpress/blocks';
@@ -89,3 +90,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/table/index.js b/core-blocks/table/index.js
index b8aa6429824f3..2415f1ef53a30 100644
--- a/core-blocks/table/index.js
+++ b/core-blocks/table/index.js
@@ -2,18 +2,19 @@
* External dependencies
*/
import { __ } from '@wordpress/i18n';
-
-/**
- * WordPress dependencies
- */
-import { Fragment } from '@wordpress/element';
import {
+ registerBlockType,
BlockControls,
BlockAlignmentToolbar,
RichText,
getPhrasingContentSchema,
} from '@wordpress/blocks';
+/**
+ * WordPress dependencies
+ */
+import { Fragment } from '@wordpress/element';
+
/**
* Internal dependencies
*/
@@ -122,3 +123,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/test/full-content.js b/core-blocks/test/full-content.js
index ab0154941d923..ea290a3f156b2 100644
--- a/core-blocks/test/full-content.js
+++ b/core-blocks/test/full-content.js
@@ -14,7 +14,7 @@ import { getBlockTypes, parse, serialize } from '@wordpress/blocks';
/**
* Internal dependencies
*/
-import { registerCoreBlocks } from '../';
+import { registerCoreBlocks } from './helpers';
import { parse as grammarParse } from '../../blocks/api/post.pegjs';
const fixturesDir = path.join( __dirname, 'fixtures' );
@@ -102,6 +102,7 @@ describe( 'full post content fixture', () => {
// Load all hooks that modify blocks
require( 'blocks/hooks' );
+
registerCoreBlocks();
} );
diff --git a/core-blocks/test/helpers/index.js b/core-blocks/test/helpers/index.js
index 6c46e31e213d5..9dbedb7d4c901 100644
--- a/core-blocks/test/helpers/index.js
+++ b/core-blocks/test/helpers/index.js
@@ -1,6 +1,7 @@
/**
* External dependencie
*/
+import fs from 'fs';
import { render } from 'enzyme';
import { noop } from 'lodash';
@@ -33,3 +34,21 @@ export const blockEditRender = ( name, settings ) => {
/>
);
};
+
+export function registerCoreBlocks() {
+ const path = __dirname + '/../../';
+ const dirs = fs.readdirSync( path );
+
+ dirs.forEach( ( dir ) => {
+ // We need to exclude the 'test' directory
+ if ( dir !== 'test') {
+ // We only need a list of directories
+ if ( fs.statSync( path + '/' + dir ).isDirectory() ) {
+ // Exclude hidden directories
+ if ( dir.substring( 0, 1 ) !== '.' ) {
+ require( '../../' + dir );
+ }
+ }
+ }
+ } );
+}
diff --git a/core-blocks/text-columns/index.js b/core-blocks/text-columns/index.js
index 8b44f50f7f6f1..97673b8a322af 100644
--- a/core-blocks/text-columns/index.js
+++ b/core-blocks/text-columns/index.js
@@ -7,14 +7,15 @@ import { times } from 'lodash';
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
-import { PanelBody, RangeControl, withState } from '@wordpress/components';
-import { Fragment } from '@wordpress/element';
import {
+ registerBlockType,
BlockControls,
BlockAlignmentToolbar,
- InspectorControls,
RichText,
+ InspectorControls,
} from '@wordpress/blocks';
+import { PanelBody, RangeControl, withState } from '@wordpress/components';
+import { Fragment } from '@wordpress/element';
/**
* Internal dependencies
@@ -131,3 +132,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/verse/index.js b/core-blocks/verse/index.js
index f520e72f12636..485d9897799b1 100644
--- a/core-blocks/verse/index.js
+++ b/core-blocks/verse/index.js
@@ -4,6 +4,7 @@
import { __ } from '@wordpress/i18n';
import {
createBlock,
+ registerBlockType,
RichText,
} from '@wordpress/blocks';
@@ -81,3 +82,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/core-blocks/video/index.js b/core-blocks/video/index.js
index ce88df821c538..c5fb6ab264c7a 100644
--- a/core-blocks/video/index.js
+++ b/core-blocks/video/index.js
@@ -6,6 +6,14 @@
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
+import {
+ registerBlockType,
+ editorMediaUpload,
+ MediaUpload,
+ RichText,
+ BlockControls,
+ BlockAlignmentToolbar,
+} from '@wordpress/blocks';
import {
Button,
FormFileUpload,
@@ -14,13 +22,6 @@ import {
Toolbar,
} from '@wordpress/components';
import { Component, Fragment } from '@wordpress/element';
-import {
- editorMediaUpload,
- BlockAlignmentToolbar,
- BlockControls,
- MediaUpload,
- RichText,
-} from '@wordpress/blocks';
/**
* Internal dependencies
@@ -201,3 +202,5 @@ export const settings = {
);
},
};
+
+registerBlockType( name, settings );
diff --git a/edit-post/index.js b/edit-post/index.js
index 8858c482c037a..ef6e6f107c97b 100644
--- a/edit-post/index.js
+++ b/edit-post/index.js
@@ -6,7 +6,6 @@ import { get, isString, some } from 'lodash';
/**
* WordPress dependencies
*/
-import { registerCoreBlocks } from '@wordpress/core-blocks';
import domReady from '@wordpress/dom-ready';
import { render, unmountComponentAtNode } from '@wordpress/element';
import { deprecated } from '@wordpress/utils';
@@ -14,6 +13,7 @@ import { deprecated } from '@wordpress/utils';
/**
* Internal dependencies
*/
+import { registerCoreBlocks } from '../core-blocks/test/helpers';
import './assets/stylesheets/main.scss';
import './hooks';
import store from './store';
diff --git a/editor/components/document-outline/test/index.js b/editor/components/document-outline/test/index.js
index a0b922b3b1f04..6fa2fc457e559 100644
--- a/editor/components/document-outline/test/index.js
+++ b/editor/components/document-outline/test/index.js
@@ -7,12 +7,12 @@ import { mount, shallow } from 'enzyme';
* WordPress dependencies
*/
import { createBlock } from '@wordpress/blocks';
-import { registerCoreBlocks } from '@wordpress/core-blocks';
/**
* Internal dependencies
*/
import { DocumentOutline } from '../';
+import { registerCoreBlocks } from '../../../../blocks/test/helpers';
jest.mock( '../../block-title', () => () => 'Block Title' );
diff --git a/editor/store/test/reducer.js b/editor/store/test/reducer.js
index 26b0354cd0203..82acf8803f85a 100644
--- a/editor/store/test/reducer.js
+++ b/editor/store/test/reducer.js
@@ -1577,7 +1577,7 @@ describe( 'state', () => {
describe( 'preferences()', () => {
beforeAll( () => {
- registerCoreBlocks();
+ // TODO: Need to load/register core blocks (or at least some demo blocks). Maybe requireIndex ?
} );
it( 'should apply all defaults', () => {
diff --git a/editor/store/test/selectors.js b/editor/store/test/selectors.js
index 5060f28a8111a..a98dcd0d06660 100644
--- a/editor/store/test/selectors.js
+++ b/editor/store/test/selectors.js
@@ -15,6 +15,7 @@ import { registerCoreBlocks } from '@wordpress/core-blocks';
* Internal dependencies
*/
import * as selectors from '../selectors';
+import { registerCoreBlocks } from '../../../blocks/test/helpers';
const {
hasEditorUndo,
@@ -2695,6 +2696,7 @@ describe( 'selectors', () => {
describe( 'getFrecentInserterItems', () => {
beforeAll( () => {
+ // TODO: Need to load/register core blocks (or at least some demo blocks). Maybe requireIndex ?
registerCoreBlocks();
} );
diff --git a/gutenberg.php b/gutenberg.php
index ddddf3204806c..04620f91fc6c0 100644
--- a/gutenberg.php
+++ b/gutenberg.php
@@ -109,7 +109,7 @@ function gutenberg_build_files_notice() {
* @since 1.5.0
*/
function gutenberg_pre_init() {
- if ( defined( 'GUTENBERG_DEVELOPMENT_MODE' ) && GUTENBERG_DEVELOPMENT_MODE && ! file_exists( dirname( __FILE__ ) . '/blocks/build' ) ) {
+ if ( defined( 'GUTENBERG_DEVELOPMENT_MODE' ) && GUTENBERG_DEVELOPMENT_MODE && ! file_exists( dirname( __FILE__ ) . '/build' ) ) {
add_action( 'admin_notices', 'gutenberg_build_files_notice' );
return;
}
diff --git a/lib/client-assets.php b/lib/client-assets.php
index f7e0a560ae589..4b39d39b21d47 100644
--- a/lib/client-assets.php
+++ b/lib/client-assets.php
@@ -85,39 +85,39 @@ function gutenberg_register_scripts_and_styles() {
);
wp_register_script(
'wp-data',
- gutenberg_url( 'data/build/index.js' ),
+ gutenberg_url( 'build/data.js' ),
array( 'wp-element', 'wp-utils', 'wp-is-shallow-equal', 'lodash' ),
- filemtime( gutenberg_dir_path() . 'data/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/data.js' ),
true
);
wp_register_script(
'wp-core-data',
- gutenberg_url( 'core-data/build/index.js' ),
+ gutenberg_url( 'build/coreData.js' ),
array( 'wp-data', 'wp-api-request', 'lodash' ),
- filemtime( gutenberg_dir_path() . 'core-data/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/coreData.js' ),
true
);
wp_register_script(
'wp-utils',
- gutenberg_url( 'utils/build/index.js' ),
+ gutenberg_url( 'build/utils.js' ),
array( 'tinymce-latest', 'lodash' ),
- filemtime( gutenberg_dir_path() . 'utils/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/utils.js' ),
true
);
wp_add_inline_script( 'wp-utils', 'var originalUtils = window.wp && window.wp.utils ? window.wp.utils : {};', 'before' );
wp_add_inline_script( 'wp-utils', 'for ( var key in originalUtils ) wp.utils[ key ] = originalUtils[ key ];' );
wp_register_script(
'wp-hooks',
- gutenberg_url( 'hooks/build/index.js' ),
+ gutenberg_url( 'build/hooks.js' ),
array(),
- filemtime( gutenberg_dir_path() . 'hooks/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/hooks.js' ),
true
);
wp_register_script(
'wp-date',
- gutenberg_url( 'date/build/index.js' ),
+ gutenberg_url( 'build/date.js' ),
array( 'moment' ),
- filemtime( gutenberg_dir_path() . 'date/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/date.js' ),
true
);
global $wp_locale;
@@ -148,28 +148,28 @@ function gutenberg_register_scripts_and_styles() {
) ), 'before' );
wp_register_script(
'wp-i18n',
- gutenberg_url( 'i18n/build/index.js' ),
+ gutenberg_url( 'build/i18n.js' ),
array(),
- filemtime( gutenberg_dir_path() . 'i18n/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/i18n.js' ),
true
);
wp_register_script(
'wp-element',
- gutenberg_url( 'element/build/index.js' ),
+ gutenberg_url( 'build/element.js' ),
array( 'react', 'react-dom', 'wp-utils', 'wp-is-shallow-equal', 'lodash' ),
- filemtime( gutenberg_dir_path() . 'element/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/element.js' ),
true
);
wp_register_script(
'wp-components',
- gutenberg_url( 'components/build/index.js' ),
+ gutenberg_url( 'build/components.js' ),
array( 'wp-element', 'wp-i18n', 'wp-utils', 'wp-hooks', 'wp-api-request', 'wp-is-shallow-equal', 'moment', 'lodash' ),
- filemtime( gutenberg_dir_path() . 'components/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/components.js' ),
true
);
wp_register_script(
'wp-blocks',
- gutenberg_url( 'blocks/build/index.js' ),
+ gutenberg_url( 'build/blocks.js' ),
array(
'wp-element',
'wp-components',
@@ -185,7 +185,7 @@ function gutenberg_register_scripts_and_styles() {
'wp-core-data',
'lodash',
),
- filemtime( gutenberg_dir_path() . 'blocks/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/blocks.js' ),
true
);
wp_add_inline_script(
@@ -198,9 +198,9 @@ function gutenberg_register_scripts_and_styles() {
);
wp_register_script(
'wp-viewport',
- gutenberg_url( 'viewport/build/index.js' ),
+ gutenberg_url( 'build/viewport.js' ),
array( 'wp-element', 'wp-data', 'wp-components', 'lodash' ),
- filemtime( gutenberg_dir_path() . 'viewport/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/viewport.js' ),
true
);
wp_register_script(
@@ -281,7 +281,7 @@ function gutenberg_register_scripts_and_styles() {
wp_register_script(
'wp-editor',
- gutenberg_url( 'editor/build/index.js' ),
+ gutenberg_url( 'build/editor.js' ),
array(
'postbox',
'jquery',
@@ -299,15 +299,15 @@ function gutenberg_register_scripts_and_styles() {
'editor',
'lodash',
),
- filemtime( gutenberg_dir_path() . 'editor/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/editor.js' ),
true
);
wp_register_script(
'wp-edit-post',
- gutenberg_url( 'edit-post/build/index.js' ),
+ gutenberg_url( 'build/editPost.js' ),
array( 'jquery', 'media-views', 'media-models', 'wp-element', 'wp-components', 'wp-editor', 'wp-i18n', 'wp-date', 'wp-utils', 'wp-data', 'wp-embed', 'wp-viewport', 'wp-plugins', 'wp-core-blocks', 'lodash' ),
- filemtime( gutenberg_dir_path() . 'edit-post/build/index.js' ),
+ filemtime( gutenberg_dir_path() . 'build/editPost.js' ),
true
);
wp_add_inline_script(
@@ -324,57 +324,41 @@ function gutenberg_register_scripts_and_styles() {
wp_register_style(
'wp-editor',
- gutenberg_url( 'editor/build/style.css' ),
+ gutenberg_url( 'build/editor.css' ),
array( 'wp-components', 'wp-blocks', 'wp-editor-font' ),
- filemtime( gutenberg_dir_path() . 'editor/build/style.css' )
+ filemtime( gutenberg_dir_path() . 'build/editor.css' )
);
wp_style_add_data( 'wp-editor', 'rtl', 'replace' );
wp_register_style(
'wp-edit-post',
- gutenberg_url( 'edit-post/build/style.css' ),
- array( 'wp-components', 'wp-editor', 'wp-edit-blocks', 'wp-core-blocks' ),
- filemtime( gutenberg_dir_path() . 'edit-post/build/style.css' )
+ gutenberg_url( 'build/editPost.css' ),
+ array( 'wp-components', 'wp-editor' ),
+ filemtime( gutenberg_dir_path() . 'build/editPost.css' )
);
wp_style_add_data( 'wp-edit-post', 'rtl', 'replace' );
wp_register_style(
'wp-components',
- gutenberg_url( 'components/build/style.css' ),
+ gutenberg_url( 'build/components.css' ),
array(),
- filemtime( gutenberg_dir_path() . 'components/build/style.css' )
+ filemtime( gutenberg_dir_path() . 'build/components.css' )
);
wp_style_add_data( 'wp-components', 'rtl', 'replace' );
wp_register_style(
'wp-blocks',
- gutenberg_url( 'blocks/build/style.css' ),
+ gutenberg_url( 'build/blocks.css' ),
array(),
- filemtime( gutenberg_dir_path() . 'blocks/build/style.css' )
+ filemtime( gutenberg_dir_path() . 'build/blocks.css' )
);
wp_style_add_data( 'wp-blocks', 'rtl', 'replace' );
- wp_register_style(
- 'wp-core-blocks',
- gutenberg_url( 'core-blocks/build/style.css' ),
- array(),
- filemtime( gutenberg_dir_path() . 'core-blocks/build/style.css' )
- );
- wp_style_add_data( 'wp-core-blocks', 'rtl', 'replace' );
-
- wp_register_style(
- 'wp-edit-blocks',
- gutenberg_url( 'core-blocks/build/edit-blocks.css' ),
- array( 'wp-components', 'wp-blocks' ),
- filemtime( gutenberg_dir_path() . 'core-blocks/build/edit-blocks.css' )
- );
- wp_style_add_data( 'wp-edit-blocks', 'rtl', 'replace' );
-
wp_register_script(
'wp-plugins',
- gutenberg_url( 'plugins/build/index.js' ),
+ gutenberg_url( 'build/plugins.js' ),
array( 'wp-element', 'wp-components', 'wp-utils', 'wp-data' ),
- filemtime( gutenberg_dir_path() . 'plugins/build/index.js' )
+ filemtime( gutenberg_dir_path() . 'build/plugins.js' )
);
}
add_action( 'wp_enqueue_scripts', 'gutenberg_register_scripts_and_styles', 5 );
@@ -748,9 +732,6 @@ function gutenberg_prepare_blocks_for_js() {
* @since 0.4.0
*/
function gutenberg_common_scripts_and_styles() {
- // Enqueue basic styles built out of Gutenberg through `npm build`.
- wp_enqueue_style( 'wp-core-blocks' );
-
/*
* Enqueue block styles built through plugins. This lives in a separate
* action for a couple of reasons: (1) we want to load these assets
diff --git a/webpack.config.js b/webpack.config.js
index ce27d03908e66..ff3ef4ea6c94c 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -3,6 +3,7 @@
*/
const ExtractTextPlugin = require( 'extract-text-webpack-plugin' );
const WebpackRTLPlugin = require( 'webpack-rtl-plugin' );
+const fs = require( 'fs' );
const { get } = require( 'lodash' );
const { basename } = require( 'path' );
@@ -13,17 +14,17 @@ const CustomTemplatedPathPlugin = require( '@wordpress/custom-templated-path-web
// Main CSS loader for everything but blocks..
const mainCSSExtractTextPlugin = new ExtractTextPlugin( {
- filename: './[basename]/build/style.css',
+ filename: './build/[name].css',
} );
// CSS loader for styles specific to block editing.
const editBlocksCSSPlugin = new ExtractTextPlugin( {
- filename: './core-blocks/build/edit-blocks.css',
+ filename: './build/[name]_editor.css',
} );
-// CSS loader for styles specific to blocks in general.
-const blocksCSSPlugin = new ExtractTextPlugin( {
- filename: './core-blocks/build/style.css',
+// CSS loader for each individual block's styles
+const individualBlocksCSSPlugin = new ExtractTextPlugin( {
+ filename: './build/[name].css',
} );
// Configuration for the ExtractTextPlugin.
@@ -79,7 +80,13 @@ const entryPointNames = [
'core-data',
'plugins',
'edit-post',
- 'core-blocks',
+ ...fs.readdirSync( './core-blocks' ).reduce( (blockList, block ) => {
+ if ( block !== 'test' ) {
+ blockList.push( 'core-blocks/' + block )
+ }
+ return blockList;
+ }, []
+ ),
];
const packageNames = [
@@ -107,9 +114,11 @@ const externals = {
...packageNames,
...coreGlobals,
].forEach( ( name ) => {
- externals[ `@wordpress/${ name }` ] = {
- this: [ 'wp', camelCaseDash( name ) ],
- };
+ if ( ! name.includes( 'core-blocks/' ) ) {
+ externals[ `@wordpress/${ name }` ] = {
+ this: [ 'wp', camelCaseDash( name ) ],
+ };
+ }
} );
const config = {
@@ -117,7 +126,8 @@ const config = {
entry: Object.assign(
entryPointNames.reduce( ( memo, path ) => {
- const name = camelCaseDash( path );
+ let name = camelCaseDash( path );
+ name = name.replace( 'blocks/library/', '__block_' );
memo[ name ] = `./${ path }`;
return memo;
}, {} ),
@@ -128,7 +138,7 @@ const config = {
}, {} )
),
output: {
- filename: '[basename]/build/index.js',
+ filename: 'build/[name].js',
path: __dirname,
library: [ 'wp', '[name]' ],
libraryTarget: 'this',
@@ -159,7 +169,7 @@ const config = {
include: [
/core-blocks/,
],
- use: blocksCSSPlugin.extract( extractConfig ),
+ use: individualBlocksCSSPlugin.extract( extractConfig ),
},
{
test: /editor\.s?css$/,
@@ -178,7 +188,7 @@ const config = {
],
},
plugins: [
- blocksCSSPlugin,
+ individualBlocksCSSPlugin,
editBlocksCSSPlugin,
mainCSSExtractTextPlugin,
// Create RTL files with a -rtl suffix