@wordpress/block-library
Version:
Block library for the WordPress editor.
8 lines (7 loc) • 5.46 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/list/transforms.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { createBlock } from '@wordpress/blocks';\nimport { create, split, toHTMLString } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { createListBlockFromDOMElement } from './utils';\n\nfunction getListContentSchema( { phrasingContentSchema } ) {\n\tconst listContentSchema = {\n\t\t...phrasingContentSchema,\n\t\tul: {},\n\t\tol: { attributes: [ 'type', 'start', 'reversed' ] },\n\t};\n\n\t// Recursion is needed.\n\t// Possible: ul > li > ul.\n\t// Impossible: ul > ul.\n\t[ 'ul', 'ol' ].forEach( ( tag ) => {\n\t\tlistContentSchema[ tag ].children = {\n\t\t\tli: {\n\t\t\t\tchildren: listContentSchema,\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn listContentSchema;\n}\n\nfunction getListContentFlat( blocks ) {\n\treturn blocks.flatMap( ( { name, attributes, innerBlocks = [] } ) => {\n\t\tif ( name === 'core/list-item' ) {\n\t\t\treturn [ attributes.content, ...getListContentFlat( innerBlocks ) ];\n\t\t}\n\t\treturn getListContentFlat( innerBlocks );\n\t} );\n}\n\nconst transforms = {\n\tfrom: [\n\t\t{\n\t\t\ttype: 'block',\n\t\t\tisMultiBlock: true,\n\t\t\tblocks: [ 'core/paragraph', 'core/heading' ],\n\t\t\ttransform: ( blockAttributes ) => {\n\t\t\t\tlet childBlocks = [];\n\t\t\t\tif ( blockAttributes.length > 1 ) {\n\t\t\t\t\tchildBlocks = blockAttributes.map( ( { content } ) => {\n\t\t\t\t\t\treturn createBlock( 'core/list-item', { content } );\n\t\t\t\t\t} );\n\t\t\t\t} else if ( blockAttributes.length === 1 ) {\n\t\t\t\t\tconst value = create( {\n\t\t\t\t\t\thtml: blockAttributes[ 0 ].content,\n\t\t\t\t\t} );\n\t\t\t\t\tchildBlocks = split( value, '\\n' ).map( ( result ) => {\n\t\t\t\t\t\treturn createBlock( 'core/list-item', {\n\t\t\t\t\t\t\tcontent: toHTMLString( { value: result } ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/list',\n\t\t\t\t\t{\n\t\t\t\t\t\tanchor: blockAttributes.anchor,\n\t\t\t\t\t},\n\t\t\t\t\tchildBlocks\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'raw',\n\t\t\tselector: 'ol,ul',\n\t\t\tschema: ( args ) => ( {\n\t\t\t\tol: getListContentSchema( args ).ol,\n\t\t\t\tul: getListContentSchema( args ).ul,\n\t\t\t} ),\n\t\t\ttransform: createListBlockFromDOMElement,\n\t\t},\n\t\t...[ '*', '-' ].map( ( prefix ) => ( {\n\t\t\ttype: 'prefix',\n\t\t\tprefix,\n\t\t\ttransform( content ) {\n\t\t\t\treturn createBlock( 'core/list', {}, [\n\t\t\t\t\tcreateBlock( 'core/list-item', { content } ),\n\t\t\t\t] );\n\t\t\t},\n\t\t} ) ),\n\t\t...[ '1.', '1)' ].map( ( prefix ) => ( {\n\t\t\ttype: 'prefix',\n\t\t\tprefix,\n\t\t\ttransform( content ) {\n\t\t\t\treturn createBlock(\n\t\t\t\t\t'core/list',\n\t\t\t\t\t{\n\t\t\t\t\t\tordered: true,\n\t\t\t\t\t},\n\t\t\t\t\t[ createBlock( 'core/list-item', { content } ) ]\n\t\t\t\t);\n\t\t\t},\n\t\t} ) ),\n\t],\n\tto: [\n\t\t...[ 'core/paragraph', 'core/heading' ].map( ( block ) => ( {\n\t\t\ttype: 'block',\n\t\t\tblocks: [ block ],\n\t\t\ttransform: ( _attributes, childBlocks ) => {\n\t\t\t\treturn getListContentFlat( childBlocks ).map( ( content ) =>\n\t\t\t\t\tcreateBlock( block, {\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t},\n\t\t} ) ),\n\t],\n};\n\nexport default transforms;\n"],
"mappings": "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",
"names": []
}