Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Add option to Transform Group Block to Cover Block #194

Merged
merged 2 commits into from
Nov 26, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion build/index.asset.php
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<?php return array('dependencies' => array('lodash', 'react', 'wp-element', 'wp-polyfill', 'wp-wordcount'), 'version' => 'd5c66d5eded401dc90269bb36926f20f');
<?php return array('dependencies' => array('lodash', 'react', 'wp-element', 'wp-polyfill', 'wp-wordcount'), 'version' => '3f58ab9034899090d86de6e6258b7f2f');
102 changes: 93 additions & 9 deletions build/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8287,14 +8287,15 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _extensions_components_reading_time__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./extensions/components/reading-time */ "./src/extensions/components/reading-time/index.js");
/* harmony import */ var _extensions_components_help_tips__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./extensions/components/help-tips */ "./src/extensions/components/help-tips/index.js");
/* harmony import */ var _extensions_components_selected_block__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./extensions/components/selected-block */ "./src/extensions/components/selected-block/index.js");
/* harmony import */ var _extensions_block_settings__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./extensions/block-settings */ "./src/extensions/block-settings/index.js");
/* harmony import */ var _extensions_formats___WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./extensions/formats/ */ "./src/extensions/formats/index.js");
/* harmony import */ var _extensions_block_toolbar__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./extensions/block-toolbar */ "./src/extensions/block-toolbar/index.js");
/* harmony import */ var _extensions_transform_empty_paragraphs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./extensions/transform/empty-paragraphs */ "./src/extensions/transform/empty-paragraphs/index.js");
/* harmony import */ var _extensions_block_styles___WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./extensions/block-styles/ */ "./src/extensions/block-styles/index.js");
/* harmony import */ var _extensions_shortcuts_select_parent_block__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./extensions/shortcuts/select-parent-block */ "./src/extensions/shortcuts/select-parent-block/index.js");
/* harmony import */ var _extensions_advanced_controls_disable_block__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./extensions/advanced-controls/disable-block */ "./src/extensions/advanced-controls/disable-block/index.js");
/* harmony import */ var _blocks_import__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./blocks/import */ "./src/blocks/import/index.js");
/* harmony import */ var _extensions_block_transform__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./extensions/block-transform */ "./src/extensions/block-transform/index.js");
/* harmony import */ var _extensions_block_settings__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./extensions/block-settings */ "./src/extensions/block-settings/index.js");
/* harmony import */ var _extensions_formats___WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./extensions/formats/ */ "./src/extensions/formats/index.js");
/* harmony import */ var _extensions_block_toolbar__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./extensions/block-toolbar */ "./src/extensions/block-toolbar/index.js");
/* harmony import */ var _extensions_transform_empty_paragraphs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./extensions/transform/empty-paragraphs */ "./src/extensions/transform/empty-paragraphs/index.js");
/* harmony import */ var _extensions_block_styles___WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./extensions/block-styles/ */ "./src/extensions/block-styles/index.js");
/* harmony import */ var _extensions_shortcuts_select_parent_block__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./extensions/shortcuts/select-parent-block */ "./src/extensions/shortcuts/select-parent-block/index.js");
/* harmony import */ var _extensions_advanced_controls_disable_block__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./extensions/advanced-controls/disable-block */ "./src/extensions/advanced-controls/disable-block/index.js");
/* harmony import */ var _blocks_import__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./blocks/import */ "./src/blocks/import/index.js");


function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
Expand Down Expand Up @@ -8338,6 +8339,8 @@ var registerBlockType = wp.blocks.registerBlockType; // Extensions



//Block Transforms

//Block Settings

// Formats
Expand All @@ -8356,7 +8359,7 @@ var registerBlockType = wp.blocks.registerBlockType; // Extensions


function registerBlocks() {
[_blocks_import__WEBPACK_IMPORTED_MODULE_25__].forEach(function (block) {
[_blocks_import__WEBPACK_IMPORTED_MODULE_26__].forEach(function (block) {
if (!block) {
return;
}
Expand Down Expand Up @@ -12564,6 +12567,87 @@ var withControls = createHigherOrderComponent(function (BlockEdit) {
addFilter('blocks.registerBlockType', 'editorskit/media-text-link/attributes', addAttributes);
addFilter('editor.BlockEdit', 'editorskit/media-text-link', withControls);

/***/ }),

/***/ "./src/extensions/block-transform/group/index.js":
/*!*******************************************************!*\
!*** ./src/extensions/block-transform/group/index.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

/**
* WordPress Dependencies
*/
var addFilter = wp.hooks.addFilter;
var createBlock = wp.blocks.createBlock;
var allowedBlocks = ['core/cover'];
/**
* Filters registered block settings, extending attributes with anchor using ID
* of the first node.
*
* @param {Object} settings Original block settings.
*
* @return {Object} Filtered block settings.
*/

function addTransforms(settings) {
if (typeof settings.transforms !== 'undefined' !== 'undefined' && allowedBlocks.includes(settings.name)) {
var transforms = settings.transforms;

if (typeof transforms.from === 'undefined') {
transforms.from = [];
}

var convertToCovert = {
type: 'block',
blocks: ['core/group'],
__experimentalConvert: function __experimentalConvert(block) {
if (typeof block.attributes.backgroundColor !== 'undefined') {
block.attributes.overlayColor = block.attributes.backgroundColor;
}

if (typeof block.attributes.customBackgroundColor !== 'undefined') {
block.attributes.customOverlayColor = block.attributes.customBackgroundColor;
} // Failing to create new block references causes the original blocks
// to be replaced in the switchToBlockType call thereby meaning they
// are removed both from their original location and within the
// new cover block.


var groupInnerBlocks = block.innerBlocks.map(function (innerBlock) {
return createBlock(innerBlock.name, innerBlock.attributes, innerBlock.innerBlocks);
});
return createBlock('core/cover', block.attributes, groupInnerBlocks);
}
};
transforms.from.push(convertToCovert);
settings.transforms = transforms;
}

return settings;
}

addFilter('blocks.registerBlockType', 'editorskit/transform/group', addTransforms);

/***/ }),

/***/ "./src/extensions/block-transform/index.js":
/*!*************************************************!*\
!*** ./src/extensions/block-transform/index.js ***!
\*************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./group */ "./src/extensions/block-transform/group/index.js");
/* harmony import */ var _group__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_group__WEBPACK_IMPORTED_MODULE_0__);
/**
* Internal dependencies
*/


/***/ }),

/***/ "./src/extensions/components/autosave/components/menu.js":
Expand Down
3 changes: 3 additions & 0 deletions src/blocks.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ import './extensions/components/reading-time';
import './extensions/components/help-tips';
import './extensions/components/selected-block';

//Block Transforms
import './extensions/block-transform';

//Block Settings
import './extensions/block-settings';

Expand Down
60 changes: 60 additions & 0 deletions src/extensions/block-transform/group/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/**
* WordPress Dependencies
*/
const { addFilter } = wp.hooks;
const { createBlock } = wp.blocks;

const allowedBlocks = [ 'core/cover' ];

/**
* Filters registered block settings, extending attributes with anchor using ID
* of the first node.
*
* @param {Object} settings Original block settings.
*
* @return {Object} Filtered block settings.
*/
function addTransforms( settings ) {
if ( typeof settings.transforms !== 'undefined' !== 'undefined' && allowedBlocks.includes( settings.name ) ) {
const transforms = settings.transforms;

if ( typeof transforms.from === 'undefined' ) {
transforms.from = [];
}

const convertToCovert = {
type: 'block',
blocks: [ 'core/group' ],
__experimentalConvert( block ) {
if ( typeof block.attributes.backgroundColor !== 'undefined' ) {
block.attributes.overlayColor = block.attributes.backgroundColor;
}
if ( typeof block.attributes.customBackgroundColor !== 'undefined' ) {
block.attributes.customOverlayColor = block.attributes.customBackgroundColor;
}

// Failing to create new block references causes the original blocks
// to be replaced in the switchToBlockType call thereby meaning they
// are removed both from their original location and within the
// new cover block.
const groupInnerBlocks = block.innerBlocks.map( ( innerBlock ) => {
return createBlock( innerBlock.name, innerBlock.attributes, innerBlock.innerBlocks );
} );

return createBlock( 'core/cover', block.attributes, groupInnerBlocks );
},
};

transforms.from.push( convertToCovert );

settings.transforms = transforms;
}

return settings;
}

addFilter(
'blocks.registerBlockType',
'editorskit/transform/group',
addTransforms
);
4 changes: 4 additions & 0 deletions src/extensions/block-transform/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/**
* Internal dependencies
*/
import './group';