store
2 months ago
GenerateBgImage.js
2 months ago
block-duplicate-helper.js
2 months ago
capitalize.js
2 months ago
color-code-to-class.js
2 months ago
color-slug-to-color-code.js
2 months ago
common.scss
2 weeks ago
convert-to-grid.js
2 months ago
default-color-palette.js
2 months ago
delete-from-array.js
2 months ago
depModules.js
2 months ago
disable-links.js
2 weeks ago
empty-string-to-undefined.js
2 months ago
example-data.js
2 months ago
fixBrokenUnicode.js
2 months ago
font-awesome-new.js
2 weeks ago
font-awesome-version.js
2 months ago
font-awesome.js
2 months ago
formatNumCol.js
2 months ago
gradient-slug-to-gradient-code.js
2 months ago
heading-level-utils.js
2 months ago
hex-to-rgba.js
2 months ago
horizontal-scroll-controls.js
2 months ago
icon-label.js
2 weeks ago
is-excludes-blocks.js
2 months ago
is-gradient-style.js
2 months ago
is-hex-color.js
2 months ago
is-not-json.js
2 months ago
is-parent-reusable-block.js
16 hours ago
merge-colors.js
2 months ago
multi-array-flaten.js
2 months ago
removeProperty.js
2 months ago
replaceClientId.js
2 months ago
sanitizeSlug.js
2 months ago
settings-page-url.js
2 weeks ago
strip-html.js
2 months ago
taxonomy-utils.js
2 months ago
to-number.js
2 months ago
to-preset-spacing-var.js
2 months ago
unit-options.js
2 months ago
wrap-unwrap.js
2 months ago
wrap-unwrap.js
60 lines
| 1 | import { createBlock, getBlockType } from '@wordpress/blocks'; |
| 2 | |
| 3 | /** |
| 4 | * ブロック登録済みチェック |
| 5 | * @param {string} blockName - チェックするブロックの名前 |
| 6 | * @return {boolean} - ブロックが登録されているかどうか |
| 7 | */ |
| 8 | const isRegisteredBlock = (blockName) => { |
| 9 | return !!getBlockType(blockName); |
| 10 | }; |
| 11 | |
| 12 | /** |
| 13 | * 汎用的なwrap-unwrapコンポーネント |
| 14 | * |
| 15 | * @param {string} blockName - ブロックの名前 |
| 16 | * @return {Object} transformsオブジェクト - ブロックの変換設定 |
| 17 | */ |
| 18 | const createWrapUnwrapTransforms = (blockName) => { |
| 19 | if (!blockName) { |
| 20 | throw new Error( |
| 21 | 'blockName is required for createWrapUnwrapTransforms.' |
| 22 | ); |
| 23 | } |
| 24 | |
| 25 | return { |
| 26 | from: [ |
| 27 | { |
| 28 | type: 'block', |
| 29 | isMultiBlock: true, |
| 30 | blocks: ['*'], |
| 31 | __experimentalConvert(blocks) { |
| 32 | if (!isRegisteredBlock(blockName)) { |
| 33 | throw new Error( |
| 34 | `Block "${blockName}" is not registered.` |
| 35 | ); |
| 36 | } |
| 37 | |
| 38 | const groupInnerBlocks = blocks.map((block) => |
| 39 | createBlock( |
| 40 | block.name, |
| 41 | block.attributes, |
| 42 | block.innerBlocks |
| 43 | ) |
| 44 | ); |
| 45 | |
| 46 | return createBlock(blockName, {}, groupInnerBlocks); |
| 47 | }, |
| 48 | }, |
| 49 | ], |
| 50 | ungroup: (attributes, innerBlocks) => { |
| 51 | if (!isRegisteredBlock(blockName)) { |
| 52 | throw new Error(`Block "${blockName}" is not registered.`); |
| 53 | } |
| 54 | return innerBlocks; |
| 55 | }, |
| 56 | }; |
| 57 | }; |
| 58 | |
| 59 | export default createWrapUnwrapTransforms; |
| 60 |