Skip to content

Commit

Permalink
Merge pull request #194 from phpbits/add/group-transform
Browse files Browse the repository at this point in the history
Add option to Transform Group Block to Cover Block
  • Loading branch information
phpbits committed Nov 26, 2019
2 parents b865e43 + 06446c8 commit 8ba808d
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 10 deletions.
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';

0 comments on commit 8ba808d

Please sign in to comment.