UNPKG

@wordpress/block-library

Version:
8 lines (7 loc) 8.79 kB
{ "version": 3, "sources": ["../../src/tabs/deprecated.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * The old attributes before restructuring.\n * Maintain during experimental phase to allow for migration.\n *\n * TODO: Should be removed after the experimental phase before release into main block library.\n */\nconst v1Attributes = {\n\ttabsId: {\n\t\ttype: 'string',\n\t\tdefault: '',\n\t},\n\torientation: {\n\t\ttype: 'string',\n\t\tdefault: 'horizontal',\n\t\tenum: [ 'horizontal', 'vertical' ],\n\t},\n\tactiveTabIndex: {\n\t\ttype: 'number',\n\t\tdefault: 0,\n\t},\n\ttabInactiveColor: {\n\t\ttype: 'string',\n\t},\n\tcustomTabInactiveColor: {\n\t\ttype: 'string',\n\t},\n\ttabHoverColor: {\n\t\ttype: 'string',\n\t},\n\tcustomTabHoverColor: {\n\t\ttype: 'string',\n\t},\n\ttabActiveColor: {\n\t\ttype: 'string',\n\t},\n\tcustomTabActiveColor: {\n\t\ttype: 'string',\n\t},\n\ttabTextColor: {\n\t\ttype: 'string',\n\t},\n\tcustomTabTextColor: {\n\t\ttype: 'string',\n\t},\n\ttabActiveTextColor: {\n\t\ttype: 'string',\n\t},\n\tcustomTabActiveTextColor: {\n\t\ttype: 'string',\n\t},\n\ttabHoverTextColor: {\n\t\ttype: 'string',\n\t},\n\tcustomTabHoverTextColor: {\n\t\ttype: 'string',\n\t},\n};\n\n/**\n * The old save function before restructuring.\n * This renders the tab blocks directly as children with a tabs list placeholder.\n *\n * @param {Object} root0 Component props.\n * @param {Object} root0.attributes Block attributes.\n */\nfunction v1Save( { attributes } ) {\n\tconst blockProps = useBlockProps.save();\n\tconst innerBlocksProps = useInnerBlocksProps.save( {} );\n\tconst title = attributes?.metadata?.name || 'Tab Contents';\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<h3 className=\"tabs__title\">{ title }</h3>\n\t\t\t<ul className=\"tabs__list\"></ul>\n\t\t\t{ innerBlocksProps.children }\n\t\t</div>\n\t);\n}\n\n/**\n * Migration function to convert old tabs structure to new structure.\n *\n * Old structure:\n * - core/tabs (with color attributes and tab innerblocks)\n * - core/tab\n * - core/tab\n *\n * New structure:\n * - core/tabs (orientation only)\n * - core/tabs-menu (with color attributes)\n * - core/tab-panels\n * - core/tab\n * - core/tab\n *\n * @param {Object} attributes Block attributes.\n * @param {Array} innerBlocks Inner blocks array.\n */\nfunction v1Migrate( attributes, innerBlocks ) {\n\t// Extract color attributes for tabs-menu\n\tconst tabsMenuAttributes = {\n\t\t// Map inactive colors to core background/text supports\n\t\tbackgroundColor: attributes.tabInactiveColor,\n\t\ttextColor: attributes.tabTextColor,\n\t\t// Map custom inactive colors\n\t\tstyle: {\n\t\t\tcolor: {\n\t\t\t\tbackground: attributes.customTabInactiveColor,\n\t\t\t\ttext: attributes.customTabTextColor,\n\t\t\t},\n\t\t},\n\t\t// Active colors\n\t\tactiveBackgroundColor: attributes.tabActiveColor,\n\t\tcustomActiveBackgroundColor: attributes.customTabActiveColor,\n\t\tactiveTextColor: attributes.tabActiveTextColor,\n\t\tcustomActiveTextColor: attributes.customTabActiveTextColor,\n\t\t// Hover colors\n\t\thoverBackgroundColor: attributes.tabHoverColor,\n\t\tcustomHoverBackgroundColor: attributes.customTabHoverColor,\n\t\thoverTextColor: attributes.tabHoverTextColor,\n\t\tcustomHoverTextColor: attributes.customTabHoverTextColor,\n\t};\n\n\t// Clean up undefined values from style object\n\tif ( tabsMenuAttributes.style?.color ) {\n\t\tif ( ! tabsMenuAttributes.style.color.background ) {\n\t\t\tdelete tabsMenuAttributes.style.color.background;\n\t\t}\n\t\tif ( ! tabsMenuAttributes.style.color.text ) {\n\t\t\tdelete tabsMenuAttributes.style.color.text;\n\t\t}\n\t\tif ( Object.keys( tabsMenuAttributes.style.color ).length === 0 ) {\n\t\t\tdelete tabsMenuAttributes.style.color;\n\t\t}\n\t\tif ( Object.keys( tabsMenuAttributes.style ).length === 0 ) {\n\t\t\tdelete tabsMenuAttributes.style;\n\t\t}\n\t}\n\n\t// Clean up undefined top-level attributes\n\tObject.keys( tabsMenuAttributes ).forEach( ( key ) => {\n\t\tif ( tabsMenuAttributes[ key ] === undefined ) {\n\t\t\tdelete tabsMenuAttributes[ key ];\n\t\t}\n\t} );\n\n\t// Create tabs-menu block\n\tconst tabsMenuBlock = createBlock( 'core/tabs-menu', tabsMenuAttributes );\n\n\t// Create tab-panels block with existing tab innerblocks\n\tconst tabPanelsBlock = createBlock( 'core/tab-panels', {}, innerBlocks );\n\n\t// Return new attributes (stripped of color attrs) and new innerblocks structure\n\tconst newAttributes = {\n\t\ttabsId: attributes.tabsId,\n\t\torientation: attributes.orientation,\n\t\tactiveTabIndex: attributes.activeTabIndex,\n\t\tmetadata: attributes.metadata,\n\t};\n\n\treturn [ newAttributes, [ tabsMenuBlock, tabPanelsBlock ] ];\n}\n\n/**\n * Check if block is using old structure (tab blocks directly as children).\n *\n * @param {Object} attributes Block attributes.\n * @param {Array} innerBlocks Inner blocks array.\n */\nfunction v1IsEligible( attributes, innerBlocks ) {\n\t// If there are any direct tab children (not wrapped in tab-panels), this is old structure\n\treturn innerBlocks.some( ( block ) => block.name === 'core/tab' );\n}\n\nconst deprecated = [\n\t{\n\t\tattributes: v1Attributes,\n\t\tsupports: {\n\t\t\talign: true,\n\t\t\tcolor: {\n\t\t\t\ttext: false,\n\t\t\t\tbackground: false,\n\t\t\t},\n\t\t\thtml: false,\n\t\t\tinteractivity: true,\n\t\t\tspacing: {\n\t\t\t\tblockGap: [ 'horizontal', 'vertical' ],\n\t\t\t\tmargin: true,\n\t\t\t\tpadding: false,\n\t\t\t},\n\t\t\ttypography: {\n\t\t\t\tfontSize: true,\n\t\t\t\t__experimentalFontFamily: true,\n\t\t\t},\n\t\t\t__experimentalBorder: {\n\t\t\t\tradius: true,\n\t\t\t\t__experimentalSkipSerialization: true,\n\t\t\t\t__experimentalDefaultControls: {\n\t\t\t\t\tradius: true,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tisEligible: v1IsEligible,\n\t\tmigrate: v1Migrate,\n\t\tsave: v1Save,\n\t},\n];\n\nexport default deprecated;\n"], "mappings": "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", "names": [] }