AlkantarClanX12
Current Path : /home/thanudqk/www/wp-content/plugins/tablepress/blocks/table/src/ |
Current File : /home/thanudqk/www/wp-content/plugins/tablepress/blocks/table/src/transforms.js |
/** * JavaScript code for the TablePress table block in the block editor. * * @package TablePress * @subpackage Blocks * @author Tobias Bäthge * @since 2.0.0 */ /* globals tp */ /** * WordPress dependencies. */ import { createBlock } from '@wordpress/blocks'; import shortcode from '@wordpress/shortcode'; /** * Get the block name from the block.json. */ import block from '../block.json'; /** * Internal dependencies. */ import { shortcode_attrs_to_string } from './common/functions'; /** * Converts a textual Shortcode to a TablePress table block. * * @param {string} content The Shortcode as a text string. * @return {Object} TablePress table block. */ const convertShortcodeTextToBlock = function ( content ) { let shortcodeAttrs = shortcode.next( tp.table.shortcode, content ).shortcode.attrs; shortcodeAttrs = { named: { ...shortcodeAttrs.named }, numeric: [ ...shortcodeAttrs.numeric ] }; // Use object destructuring to get a clone of the object. const id = shortcodeAttrs.named.id; delete shortcodeAttrs.named.id; let parameters = shortcode_attrs_to_string( shortcodeAttrs ); parameters = parameters.replace( /=“([^”]*)”/g, '="$1"' ); // Replace curly quotation marks around a value with normal ones. return createBlock( block.name, { id, parameters } ); }; const transforms = { from: [ // Detect table Shortcodes that are pasted into the block editor. { type: 'shortcode', tag: tp.table.shortcode, attributes: { id: { type: 'string', shortcode: ( { named: { id = '' } } ) => { return id; }, }, parameters: { type: 'string', shortcode: ( shortcodeAttrs ) => { shortcodeAttrs = { named: { ...shortcodeAttrs.named }, numeric: [ ...shortcodeAttrs.numeric ] }; // Use object destructuring to get a clone of the object. delete shortcodeAttrs.named.id; return shortcode_attrs_to_string( shortcodeAttrs ); }, }, }, }, // Detect table Shortcodes that are typed into the block editor. { type: 'enter', regExp: shortcode.regexp( tp.table.shortcode ), transform: ( { content } ) => convertShortcodeTextToBlock( content ), }, // Add conversion option from "Shortcode" to "TablePress table" block. { type: 'block', blocks: [ 'core/shortcode' ], transform: ( { text: content } ) => convertShortcodeTextToBlock( content ), isMatch: ( { text } ) => { return ( undefined !== shortcode.next( tp.table.shortcode, text ) ); }, isMultiBlock: false, }, ], to: [ // Add conversion option from "TablePress table" to "Shortcode" block. { type: 'block', blocks: [ 'core/shortcode' ], transform: ( { id, parameters } ) => { parameters = parameters.trim(); if ( '' !== parameters ) { parameters += ' '; } const text = `[${ tp.table.shortcode } id=${ id } ${ parameters }/]`; return createBlock( 'core/shortcode', { text } ); }, }, ], }; export default transforms;