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