Changeset 3422441
- Timestamp:
- 12/18/2025 04:40:44 AM (3 months ago)
- Location:
- blablablocks-tabs-block/trunk
- Files:
-
- 5 edited
-
blablablocks-tabs-block.php (modified) (1 diff)
-
build/tab/index.asset.php (modified) (1 diff)
-
build/tab/index.js (modified) (1 diff)
-
build/tab/index.js.map (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
blablablocks-tabs-block/trunk/blablablocks-tabs-block.php
r3411758 r3422441 4 4 * Plugin Name: BlaBlaBlocks Tabs Block 5 5 * Description: Tabs Block is a WordPress plugin built specifically for the Block Editor, allowing you to create responsive tabs effortlessly. 6 * Version: 1.1. 16 * Version: 1.1.2 7 7 * Requires at least: 6.6 8 8 * Requires PHP: 7.4 -
blablablocks-tabs-block/trunk/build/tab/index.asset.php
r3408100 r3422441 1 <?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => ' c973502dd5c7f3384a7c');1 <?php return array('dependencies' => array('react', 'react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '9381a9e19e945a279390'); -
blablablocks-tabs-block/trunk/build/tab/index.js
r3408100 r3422441 1241 1241 * 1242 1242 * This effect ensures each tab has a unique identifier by setting the tabId 1243 * attribute to the clientId. 1243 * attribute to the clientId. This also handles duplication cases where the 1244 * tabId might have been copied from another block. 1244 1245 */ 1245 1246 (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(() => { 1246 !attributes.tabId && setAttributes({ 1247 tabId: clientId 1248 }); 1249 }, [clientId]); 1247 if (attributes.tabId !== clientId) { 1248 setAttributes({ 1249 tabId: clientId 1250 }); 1251 } 1252 }, [clientId, attributes.tabId]); 1250 1253 return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, { 1251 1254 children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)("div", { -
blablablocks-tabs-block/trunk/build/tab/index.js.map
r3408100 r3422441 1 {"version":3,"file":"tab/index.js","mappings":"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","sources":["webpack://blablablocks-tabs-block/./node_modules/@wordpress/icons/build-module/library/code.js","webpack://blablablocks-tabs-block/./node_modules/@wordpress/icons/build-module/library/reset.js","webpack://blablablocks-tabs-block/./src/components/color-control.js","webpack://blablablocks-tabs-block/./src/components/icon-picker/index.js","webpack://blablablocks-tabs-block/./src/components/icon-picker/modal.js","webpack://blablablocks-tabs-block/./src/components/icon-picker/toolbar-button.js","webpack://blablablocks-tabs-block/./src/components/icons/tab-logo.js","webpack://blablablocks-tabs-block/./src/components/icons/tabs-logo.js","webpack://blablablocks-tabs-block/./src/components/icons/tabs-vertical-logo.js","webpack://blablablocks-tabs-block/./src/components/index.js","webpack://blablablocks-tabs-block/./src/components/pattern-picker/pattern-list.js","webpack://blablablocks-tabs-block/./src/components/pattern-picker/pattern-sidebar.js","webpack://blablablocks-tabs-block/./src/tab/edit.js","webpack://blablablocks-tabs-block/./src/tab/placeholder.js","webpack://blablablocks-tabs-block/./src/tab/save.js","webpack://blablablocks-tabs-block/./src/utils/slotFill.js","webpack://blablablocks-tabs-block/./src/utils/style.js","webpack://blablablocks-tabs-block/external window \"React\"","webpack://blablablocks-tabs-block/external window \"ReactJSXRuntime\"","webpack://blablablocks-tabs-block/external window [\"wp\",\"blockEditor\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"blocks\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"components\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"data\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"element\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"i18n\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"primitives\"]","webpack://blablablocks-tabs-block/./node_modules/clsx/dist/clsx.mjs","webpack://blablablocks-tabs-block/webpack/bootstrap","webpack://blablablocks-tabs-block/webpack/runtime/compat get default export","webpack://blablablocks-tabs-block/webpack/runtime/define property getters","webpack://blablablocks-tabs-block/webpack/runtime/hasOwnProperty shorthand","webpack://blablablocks-tabs-block/webpack/runtime/make namespace object","webpack://blablablocks-tabs-block/./src/tab/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst code = /*#__PURE__*/_jsx(SVG, {\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/_jsx(Path, {\n d: \"M20.8 10.7l-4.3-4.3-1.1 1.1 4.3 4.3c.1.1.1.3 0 .4l-4.3 4.3 1.1 1.1 4.3-4.3c.7-.8.7-1.9 0-2.6zM4.2 11.8l4.3-4.3-1-1-4.3 4.3c-.7.7-.7 1.8 0 2.5l4.3 4.3 1.1-1.1-4.3-4.3c-.2-.1-.2-.3-.1-.4z\"\n })\n});\nexport default code;\n//# sourceMappingURL=code.js.map","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst reset = /*#__PURE__*/_jsx(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/_jsx(Path, {\n d: \"M7 11.5h10V13H7z\"\n })\n});\nexport default reset;\n//# sourceMappingURL=reset.js.map","/**\n * WordPress dependencies.\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tColorPalette,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients // eslint-disable-line\n} from '@wordpress/block-editor';\nimport {\n\tButton,\n\tTabPanel,\n\tDropdown,\n\tColorIndicator,\n\t__experimentalZStack as ZStack, // eslint-disable-line\n\t__experimentalHStack as HStack, // eslint-disable-line\n\t__experimentalText as Text, // eslint-disable-line\n} from '@wordpress/components';\n\n/**\n * Resolve a raw selection from ColorPalette against the provided\n * colorGradientSettings to see if it corresponds to a theme/preset color.\n *\n * @param {string|Object} rawColor\n * @param {Array} colorGradientSettings - the array you get from useMultipleOriginColorsAndGradients()\n * @return {{ color: string|undefined, slug: string|undefined }} Object containing the selected color value and its slug if it matches a preset otherwise, both properties are undefined.\n */\nfunction resolveColorSelection( rawColor, colorGradientSettings ) {\n\tlet pickedColor = '';\n\n\tif ( typeof rawColor === 'object' ) {\n\t\tpickedColor = rawColor.color || rawColor;\n\t} else if ( typeof rawColor === 'string' ) {\n\t\tpickedColor = rawColor;\n\t}\n\n\tif ( ! pickedColor ) {\n\t\treturn { color: undefined, slug: undefined };\n\t}\n\n\tconst normalize = ( c ) => String( c ).trim().toLowerCase();\n\tconst target = normalize( pickedColor );\n\n\tconst palettes = Array.isArray( colorGradientSettings?.colors )\n\t\t? colorGradientSettings.colors\n\t\t: [];\n\n\tfor ( const palette of palettes ) {\n\t\tif ( ! Array.isArray( palette.colors ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor ( const entry of palette.colors ) {\n\t\t\tif ( ! entry || ! entry.color ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( normalize( entry.color ) === target ) {\n\t\t\t\treturn {\n\t\t\t\t\tcolor: pickedColor,\n\t\t\t\t\tslug: entry.slug,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// crude handling for function-style colors like color-mix\n\t\t\tif (\n\t\t\t\tentry.color.includes( 'color-mix' ) &&\n\t\t\t\ttarget.includes(\n\t\t\t\t\tentry.color.replace( /\\s+/g, '' ).toLowerCase()\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\tcolor: pickedColor,\n\t\t\t\t\tslug: entry.slug,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolor: pickedColor,\n\t\tslug: undefined,\n\t};\n}\n\n/**\n * Renders a color control dropdown for selecting colors.\n *\n * @param {Object} props - The component props.\n * @param {string} props.label - The label for the color control.\n * @param {Object} props.colorValue - The current color values. Should include `default` and optionally `hover` (if `hasHover` is true).\n * @param {Function} props.onChangeColor - Callback function to handle color changes. Accepts an object with updated color values.\n * @param {boolean} props.hasHover - Determines if hover color support is enabled. If true, a tab for hover colors is displayed.\n * @param {boolean} props.hasActive - Determines if active color support is enabled. If true, a tab for active colors is displayed.\n *\n * @return {JSX.Element} The rendered ColorControlDropdown component.\n */\nfunction ColorControlDropdown( {\n\tlabel,\n\tcolorValue = {},\n\tonChangeColor,\n\thasHover = false,\n\thasActive = false,\n} ) {\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\tconst handleChange = ( tabName, rawColor ) => {\n\t\tconst normalized = resolveColorSelection(\n\t\t\trawColor,\n\t\t\tcolorGradientSettings\n\t\t);\n\t\tonChangeColor( {\n\t\t\t...colorValue,\n\t\t\t[ tabName ]: normalized,\n\t\t} );\n\t};\n\n\tconst defaultIndicator = colorValue.default?.color || '';\n\tconst hoverIndicator = hasHover ? colorValue.hover?.color : null;\n\tconst activeIndicator = hasActive ? colorValue.active?.color : null;\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ {\n\t\t\t\tplacement: 'left-start',\n\t\t\t\toffset: 36,\n\t\t\t\tshift: true,\n\t\t\t} }\n\t\t\tcontentClassName=\"bbb-tabs_color_popover\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<Button\n\t\t\t\t\tclassName={ `bbb-tabs_color_button ${\n\t\t\t\t\t\tisOpen ? 'isOpen' : ''\n\t\t\t\t\t}` }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t>\n\t\t\t\t\t<HStack justify=\"left\">\n\t\t\t\t\t\t<ZStack offset={ 10 }>\n\t\t\t\t\t\t\t<ColorIndicator colorValue={ defaultIndicator } />\n\t\t\t\t\t\t\t{ hasHover && (\n\t\t\t\t\t\t\t\t<ColorIndicator colorValue={ hoverIndicator } />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ hasActive && (\n\t\t\t\t\t\t\t\t<ColorIndicator\n\t\t\t\t\t\t\t\t\tcolorValue={ activeIndicator }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</ZStack>\n\t\t\t\t\t\t<Text>{ label }</Text>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t\trenderContent={ () =>\n\t\t\t\thasHover || hasActive ? (\n\t\t\t\t\t<TabPanel\n\t\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'default',\n\t\t\t\t\t\t\t\ttitle: __(\n\t\t\t\t\t\t\t\t\t'Default',\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'hover',\n\t\t\t\t\t\t\t\ttitle: __( 'Hover', 'blablablocks-tabs-block' ),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'active',\n\t\t\t\t\t\t\t\ttitle: __(\n\t\t\t\t\t\t\t\t\t'Active',\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t] }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( tab ) => (\n\t\t\t\t\t\t\t<ColorPalette\n\t\t\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\t\t\tvalue={ colorValue[ tab.name ]?.color || '' }\n\t\t\t\t\t\t\t\tonChange={ ( color ) =>\n\t\t\t\t\t\t\t\t\thandleChange( tab.name, color )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</TabPanel>\n\t\t\t\t) : (\n\t\t\t\t\t<ColorPalette\n\t\t\t\t\t\tclassName=\"bbb-color-pallete-container\"\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\tvalue={ colorValue.default?.color || '' }\n\t\t\t\t\t\tonChange={ ( color ) => {\n\t\t\t\t\t\t\tonChangeColor( { ...colorValue, default: color } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t/>\n\t);\n}\n\nexport default ColorControlDropdown;\n","/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Modal from './modal';\nimport ToolbarButton from './toolbar-button';\n\n/**\n * IconPicker Component\n *\n * A component that allows users to pick an SVG icon using a toolbar button\n * and modal interface. It manages the open/close state of the modal and\n * the SVG code selected.\n *\n * @param {Object} props - Component props.\n * @param {Object} props.attributes - The block attributes.\n * @param {Function} props.setAttributes - Function to update block attributes.\n *\n * @return {JSX.Element} The rendered IconPicker component.\n */\nfunction IconPicker( { attributes, setAttributes } ) {\n\tconst [ isOpen, setOpen ] = useState( false );\n\tconst [ svgCode, setSvgCode ] = useState( '' );\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tsetOpen={ setOpen }\n\t\t\t\tsetSvgCode={ setSvgCode }\n\t\t\t/>\n\t\t\t<Modal\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisOpen={ isOpen }\n\t\t\t\tsetOpen={ setOpen }\n\t\t\t\tsetSvgCode={ setSvgCode }\n\t\t\t\tsvgCode={ svgCode }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default IconPicker;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tModal,\n\tTextareaControl,\n\tCard,\n\tButton,\n\tNotice,\n\t__experimentalVStack as VStack, // eslint-disable-line\n\t__experimentalHStack as HStack, // eslint-disable-line\n\t__experimentalGrid as Grid, \t// eslint-disable-line\n} from '@wordpress/components';\n\n/**\n * IconPickerModal Component\n *\n * A modal for inputting and previewing custom SVG icons.\n * Validates the SVG code and allows users to insert it into the block attributes.\n *\n * @param {Object} props - Component props.\n * @param {Object} props.attributes - The block attributes.\n * @param {Function} props.setAttributes - Function to update block attributes.\n * @param {boolean} props.isOpen - Flag to control modal visibility.\n * @param {Function} props.setOpen - Function to toggle modal open state.\n * @param {string} props.svgCode - Current SVG code input.\n * @param {Function} props.setSvgCode - Function to update the SVG code.\n *\n * @return {JSX.Element|null} Modal component for inserting a custom SVG icon, or null if modal is closed.\n */\nfunction IconPickerModal( {\n\tattributes,\n\tsetAttributes,\n\tisOpen,\n\tsetOpen,\n\tsvgCode,\n\tsetSvgCode,\n} ) {\n\tconst [ isSvgValid, setIsSvgValid ] = useState( false );\n\tconst [ validationError, setValidationError ] = useState( '' );\n\tconst closeModal = () => setOpen( false );\n\n\t/**\n\t * Validate the SVG code.\n\t *\n\t * @param {string} svg The SVG code to validate.\n\t * @return {boolean} Whether the SVG is valid.\n\t */\n\tconst validateSvg = ( svg ) => {\n\t\tif ( ! svg ) {\n\t\t\tsetValidationError( '' );\n\t\t\treturn false;\n\t\t}\n\n\t\tconst trimmed = svg.trim();\n\n\t\tif ( ! trimmed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Match all <svg>...</svg> blocks\n\t\tconst matches = trimmed.match( /<svg[\\s\\S]*?>[\\s\\S]*?<\\/svg>/gi );\n\n\t\tif ( ! matches || matches.length === 0 ) {\n\t\t\tsetValidationError(\n\t\t\t\t__(\n\t\t\t\t\t'Invalid SVG code. Please provide valid SVG(s).',\n\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t)\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Join matched SVGs and compare with the trimmed input\n\t\tconst joinedSVGs = matches.join( '' ).trim();\n\n\t\tif ( joinedSVGs !== trimmed ) {\n\t\t\tsetValidationError(\n\t\t\t\t__(\n\t\t\t\t\t'Only SVG code is allowed. Remove any extra text outside <svg> tags.',\n\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t)\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Clear any previous error\n\t\tsetValidationError( '' );\n\t\treturn true;\n\t};\n\n\t/**\n\t * Handle SVG code changes.\n\t * Updates the SVG code state and validates the new code.\n\t *\n\t * @param {string} value The new SVG code.\n\t */\n\tconst handleSvgCodeChange = ( value ) => {\n\t\tsetSvgCode( value );\n\t\tsetIsSvgValid( validateSvg( value ) );\n\t};\n\n\t/**\n\t * Handle inserting the SVG.\n\t */\n\tconst handleInsertSvg = () => {\n\t\tif ( isSvgValid ) {\n\t\t\tsetAttributes( { tabIcon: svgCode } );\n\t\t\tcloseModal();\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tif ( isOpen ) {\n\t\t\tconst initialCode = svgCode || attributes.tabIcon || '';\n\t\t\tsetIsSvgValid( validateSvg( initialCode ) );\n\t\t}\n\t}, [ isOpen ] );\n\n\tif ( ! isOpen ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"bbb-custom-icon-modal\"\n\t\t\ttitle={\n\t\t\t\tattributes.tabIcon\n\t\t\t\t\t? __( 'Edit Custom Icon', 'blablablocks-tabs-block' )\n\t\t\t\t\t: __( 'Add Custom Icon', 'blablablocks-tabs-block' )\n\t\t\t}\n\t\t\tsize={ 'large' }\n\t\t\tonRequestClose={ closeModal }\n\t\t>\n\t\t\t<Grid\n\t\t\t\talign=\"stretch\"\n\t\t\t\ttemplateColumns={ 'auto 300px' }\n\t\t\t\tgap={ 5 }\n\t\t\t\tstyle={ { height: '100%' } }\n\t\t\t>\n\t\t\t\t<TextareaControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tclassName=\"bbb-icon-textarea\"\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\tplaceholder=\"Paste your svg code here\"\n\t\t\t\t\tvalue={ svgCode || attributes.tabIcon }\n\t\t\t\t\tonChange={ handleSvgCodeChange }\n\t\t\t\t/>\n\t\t\t\t<VStack\n\t\t\t\t\tspacing={ 5 }\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tstyle={ { height: '100%' } }\n\t\t\t\t>\n\t\t\t\t\t<VStack spacing={ 5 }>\n\t\t\t\t\t\t<Card style={ { height: '200px' } } isRounded={ false }>\n\t\t\t\t\t\t\t{ isSvgValid ? (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"bbb-icon-preview\"\n\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t\t\t\t__html: svgCode || attributes.tabIcon,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<div className=\"bbb-icon-preview\">\n\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t'SVG Preview',\n\t\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Card>\n\t\t\t\t\t\t{ validationError && (\n\t\t\t\t\t\t\t<Notice status=\"error\" isDismissible={ false }>\n\t\t\t\t\t\t\t\t{ validationError }\n\t\t\t\t\t\t\t</Notice>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t\t<HStack justify=\"flex-end\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant={ 'primary' }\n\t\t\t\t\t\t\tonClick={ handleInsertSvg }\n\t\t\t\t\t\t\tdisabled={ ! isSvgValid }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Insert custom icon',\n\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</Grid>\n\t\t</Modal>\n\t);\n}\n\nexport default IconPickerModal;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarGroup, ToolbarDropdownMenu } from '@wordpress/components';\nimport { code, reset } from '@wordpress/icons';\n\n/**\n * IconPickerToolbarButton Component\n *\n * A toolbar button that provides a dropdown menu for managing custom SVG icons.\n * Users can open the icon picker modal or reset the selected SVG icon.\n *\n * @param {Object} props - Component props.\n * @param {Object} props.attributes - The block attributes.\n * @param {Function} props.setAttributes - Function to update block attributes.\n * @param {Function} props.setOpen - Function to toggle modal open state.\n * @param {Function} props.setSvgCode - Function to update the SVG code.\n *\n * @return {JSX.Element} A toolbar group containing icon-related actions.\n */\nfunction IconPickerToolbarButton( {\n\tattributes,\n\tsetAttributes,\n\tsetOpen,\n\tsetSvgCode,\n} ) {\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarDropdownMenu\n\t\t\t\tcontrols={ [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: code,\n\t\t\t\t\t\ttitle: attributes.tabIcon\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Edit custom SVG icon',\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Add custom SVG icon',\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t ),\n\t\t\t\t\t\tonClick: () => setOpen( true ),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: reset,\n\t\t\t\t\t\ttitle: __( 'Reset icon', 'blablablocks-tabs-block' ),\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tsetAttributes( { tabIcon: '' } );\n\t\t\t\t\t\t\tsetSvgCode( '' );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tisDisabled: ! attributes.tabIcon,\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t\ttext={\n\t\t\t\t\tattributes.tabIcon\n\t\t\t\t\t\t? __( 'Replace icon', 'blablablocks-tabs-block' )\n\t\t\t\t\t\t: __( 'Add Icon', 'blablablocks-tabs-block' )\n\t\t\t\t}\n\t\t\t\ticon={ '' }\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default IconPickerToolbarButton;\n","/**\n * Wordpress dependencies.\n */\nimport { SVG, Path } from '@wordpress/components';\n\n/**\n * Tab logo icon\n */\nconst TabLogo = (\n\t<SVG\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M5.5498 10.3501V6.3501H9.8498V10.3501H11.3498V6.1001C11.3498 5.40974 10.7902 4.8501 10.0998 4.8501H5.2998C4.60945 4.8501 4.0498 5.40974 4.0498 6.1001V10.3501H5.5498ZM20 12.6001H4V14.1001L20 14.1001V12.6001ZM14 17.1001H4V18.6001H14V17.1001Z\"\n\t\t/>\n\t</SVG>\n);\nexport default TabLogo;\n","/**\n * Wordpress dependencies.\n */\nimport { SVG, Path } from '@wordpress/components';\n\n/**\n * Tabs logo icon\n */\nconst TabsLogo = (\n\t<SVG\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M5.2998 4.8501C4.60945 4.8501 4.0498 5.40974 4.0498 6.1001V10.3501H11.3498V6.1001C11.3498 5.40974 10.7902 4.8501 10.0998 4.8501H5.2998ZM14.2002 10.3501V7.1001H18.5002V10.3501H20.0002V6.8501C20.0002 6.15974 19.4406 5.6001 18.7502 5.6001H13.9502C13.2598 5.6001 12.7002 6.15974 12.7002 6.8501V10.3501H14.2002ZM20 12.6001H4V14.1001H20V12.6001ZM14 17.1001H4V18.6001H14V17.1001Z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default TabsLogo;\n","/**\n * Wordpress dependencies.\n */\nimport { SVG, Path } from '@wordpress/components';\n\n/**\n * Tabs Vertical logo icon\n */\nconst TabsVerticalLogo = (\n\t<SVG\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M4.8501 5.2998C4.8501 4.60945 5.40974 4.0498 6.1001 4.0498H10.3501V11.3498H6.1001C5.40974 11.3498 4.8501 10.7902 4.8501 10.0998V5.2998ZM10.3501 14.2002H7.1001V18.5002H10.3501V20.0002H6.8501C6.15974 20.0002 5.6001 19.4406 5.6001 18.7502V13.9502C5.6001 13.2598 6.15974 12.7002 6.8501 12.7002H10.3501V14.2002ZM16.1001 \n4.1001H22V5.6001H12.1001V4.1001ZM16.1001 7.1001H20V8.6001H12.1001V7.1001ZM16.1001 10.1001H18V11.6001H12.1001V10.1001Z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default TabsVerticalLogo;\n","/**\n * Export Components.\n */\nexport { default as TabsLogo } from './icons/tabs-logo';\nexport { default as TabLogo } from './icons/tab-logo';\nexport { default as TabsVerticalLogo } from './icons/tabs-vertical-logo';\nexport { default as ColorControlDropdown } from './color-control';\nexport { default as PatternSidebar } from './pattern-picker/pattern-sidebar';\nexport { default as PatternList } from './pattern-picker/pattern-list';\n","/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useEffect, useState, useMemo } from '@wordpress/element';\nimport { BlockPreview } from '@wordpress/block-editor';\nimport {\n\tButton,\n\tSpinner,\n\tNotice,\n\t__experimentalGrid as Grid,\t\t\t// eslint-disable-line\n\t__experimentalVStack as VStack,\t\t// eslint-disable-line\n\t__experimentalText as Text, \t// eslint-disable-line\n\t__experimentalHeading as Heading,\t// eslint-disable-line\n} from '@wordpress/components';\n\n// Constants\nconst PATTERNS_PER_PAGE = 20;\nconst LOADING_DELAY = 300; // ms\n\n/**\n * Component for displaying a list of block patterns with search and selection functionality.\n *\n * @param {Object} props - The component props.\n * @param {string} props.selectedCategory - The currently selected category for filtering patterns.\n * @param {string} props.searchTerm - The current search term for filtering patterns by title.\n * @param {Function} props.onSelect - Callback function triggered when a pattern is selected.\n *\n * @return {JSX.Element} The rendered PatternList component.\n */\nconst PatternList = ( { selectedCategory, searchTerm, onSelect } ) => {\n\tconst [ currentPage, setCurrentPage ] = useState( 1 );\n\tconst [ isLoading, setIsLoading ] = useState( true );\n\tconst [ error, setError ] = useState( null );\n\n\t// Get patterns from store with error handling\n\tconst { patterns, hasResolved } = useSelect(\n\t\t( select ) => {\n\t\t\ttry {\n\t\t\t\tconst coreSelect = select( 'core' );\n\t\t\t\treturn {\n\t\t\t\t\tpatterns: coreSelect.getBlockPatterns(),\n\t\t\t\t\thasResolved:\n\t\t\t\t\t\tcoreSelect.hasFinishedResolution( 'getBlockPatterns' ),\n\t\t\t\t};\n\t\t\t} catch ( err ) {\n\t\t\t\treturn { patterns: [], hasResolved: true, error: err };\n\t\t\t}\n\t\t},\n\t\t[ selectedCategory ]\n\t);\n\n\t// Reset to page 1 when search or category changes\n\tuseEffect( () => {\n\t\tsetCurrentPage( 1 );\n\t}, [ searchTerm, selectedCategory ] );\n\n\t// Handle loading state\n\tuseEffect( () => {\n\t\tsetIsLoading( true );\n\n\t\tif ( ! hasResolved ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timeout = setTimeout(\n\t\t\t() => setIsLoading( false ),\n\t\t\tLOADING_DELAY\n\t\t);\n\t\treturn () => clearTimeout( timeout );\n\t}, [ patterns, searchTerm, hasResolved ] );\n\n\t// Filter patterns based on category and search term\n\tconst filteredPatterns = useMemo( () => {\n\t\tif ( ! patterns || ! Array.isArray( patterns ) ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn patterns.filter( ( pattern ) => {\n\t\t\tif ( ! pattern ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst matchesCategory =\n\t\t\t\t! selectedCategory ||\n\t\t\t\t( pattern.categories &&\n\t\t\t\t\tpattern.categories.includes( selectedCategory ) );\n\n\t\t\tconst matchesSearch =\n\t\t\t\tpattern.title &&\n\t\t\t\tpattern.title\n\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t.includes( ( searchTerm || '' ).toLowerCase() );\n\n\t\t\treturn matchesCategory && matchesSearch;\n\t\t} );\n\t}, [ patterns, selectedCategory, searchTerm ] );\n\n\t// Calculate pagination values\n\tconst totalPages = Math.max(\n\t\t1,\n\t\tMath.ceil( ( filteredPatterns?.length || 0 ) / PATTERNS_PER_PAGE )\n\t);\n\n\t// Ensure current page is valid after filtering changes\n\tuseEffect( () => {\n\t\tif ( currentPage > totalPages ) {\n\t\t\tsetCurrentPage( totalPages );\n\t\t}\n\t}, [ totalPages, currentPage ] );\n\n\t// Get paginated patterns\n\tconst paginatedPatterns = useMemo( () => {\n\t\treturn filteredPatterns.slice(\n\t\t\t( currentPage - 1 ) * PATTERNS_PER_PAGE,\n\t\t\tcurrentPage * PATTERNS_PER_PAGE\n\t\t);\n\t}, [ filteredPatterns, currentPage ] );\n\n\t// Handle pattern selection with validation\n\tconst handlePatternSelect = ( pattern ) => {\n\t\tif ( pattern && typeof onSelect === 'function' ) {\n\t\t\ttry {\n\t\t\t\tonSelect( pattern );\n\t\t\t} catch ( err ) {\n\t\t\t\tsetError(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Failed to select pattern. Please try again.',\n\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\t// Handle pagination\n\tconst goToPage = ( direction ) => {\n\t\tsetCurrentPage( ( prev ) => {\n\t\t\tconst newPage = prev + direction;\n\t\t\treturn Math.max( 1, Math.min( newPage, totalPages ) );\n\t\t} );\n\t};\n\n\t// Render error message if needed\n\tif ( error ) {\n\t\treturn (\n\t\t\t<Notice status=\"error\" isDismissible={ false }>\n\t\t\t\t{ error }\n\t\t\t</Notice>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"bbb-tabs-patterns-grid\">\n\t\t\t{ isLoading ? (\n\t\t\t\t<div className=\"bbb-tabs-patterns-loading\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{ searchTerm &&\n\t\t\t\t\t\t( () => {\n\t\t\t\t\t\t\tconst count = filteredPatterns.length;\n\t\t\t\t\t\t\t/* translators: %d: Number of patterns found. */\n\t\t\t\t\t\t\tconst label = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %d: Number of patterns found. */\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'%d pattern found',\n\t\t\t\t\t\t\t\t\t'%d patterns found',\n\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tcount\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\t\tclassName=\"tabs-patterns-no-results\"\n\t\t\t\t\t\t\t\t\tstyle={ { paddingBottom: '32px' } }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )() }\n\t\t\t\t\t{ filteredPatterns?.length > 0 && (\n\t\t\t\t\t\t<Grid\n\t\t\t\t\t\t\tgap={ 8 }\n\t\t\t\t\t\t\tcolumns={ [ 1, 2, 3 ] }\n\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\tclassName=\"bbb-tabs-patterns-grid-content\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ paginatedPatterns.map( ( pattern ) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\t\t\t\tpattern.name ||\n\t\t\t\t\t\t\t\t\t\t`pattern-${\n\t\t\t\t\t\t\t\t\t\t\tpattern.id || Math.random()\n\t\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName=\"bbb-tabs-patterns-item\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\thandlePatternSelect( pattern )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\t\t\t\t\talign=\"left\"\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ pattern.content ? (\n\t\t\t\t\t\t\t\t\t\t\t<BlockPreview\n\t\t\t\t\t\t\t\t\t\t\t\tblocks={ wp.blocks.parse(\n\t\t\t\t\t\t\t\t\t\t\t\t\tpattern.content\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\tviewportWidth={ 800 }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"bbb-tabs-patterns-preview-error\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Preview not available',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t<Text align=\"left\" size={ 12 }>\n\t\t\t\t\t\t\t\t\t\t\t{ pattern.title ||\n\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Untitled pattern',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t) }\n\t\t\t\t\t{ /* Pagination Controls */ }\n\t\t\t\t\t{ filteredPatterns.length > 0 && totalPages > 1 && (\n\t\t\t\t\t\t<div className=\"bbb-tabs-patterns-pagination\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tdisabled={ currentPage === 1 }\n\t\t\t\t\t\t\t\tonClick={ () => goToPage( -1 ) }\n\t\t\t\t\t\t\t\tclassName=\"tabs-patterns-pagination-prev\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Previous', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<span className=\"tabs-patterns-pagination-status\">\n\t\t\t\t\t\t\t\t{ `${ currentPage } / ${ totalPages }` }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tdisabled={ currentPage === totalPages }\n\t\t\t\t\t\t\t\tonClick={ () => goToPage( 1 ) }\n\t\t\t\t\t\t\t\tclassName=\"tabs-patterns-pagination-next\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Next', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport default PatternList;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { Button, SearchControl } from '@wordpress/components';\n\n/**\n * PatternSidebar component renders a sidebar for selecting block pattern categories\n *\n * @param {Object} props - The component props.\n * @param {string|null} props.selectedCategory - The currently selected pattern category.\n * @param {Function} props.setSelectedCategory - Function to update the selected pattern category.\n * @param {string} props.searchTerm - The current search term for filtering patterns by title.\n * @param {Function} props.setSearchTerm - Function to update the search term for filtering patterns.\n *\n * @return {JSX.Element} The rendered sidebar component.\n */\nconst PatternSidebar = ( {\n\tselectedCategory,\n\tsetSelectedCategory,\n\tsearchTerm,\n\tsetSearchTerm,\n} ) => {\n\t// Fetch pattern categories and block patterns with error handling.\n\tconst { patternCategories, blockPatterns, error } = useSelect(\n\t\t( select ) => {\n\t\t\ttry {\n\t\t\t\tconst core = select( 'core' );\n\t\t\t\treturn {\n\t\t\t\t\tpatternCategories: core.getBlockPatternCategories() || [],\n\t\t\t\t\tblockPatterns: core.getBlockPatterns() || [],\n\t\t\t\t\terror: null,\n\t\t\t\t};\n\t\t\t} catch ( err ) {\n\t\t\t\treturn {\n\t\t\t\t\tpatternCategories: [],\n\t\t\t\t\tblockPatterns: [],\n\t\t\t\t\terror: err,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t[]\n\t);\n\n\t// Memoize the filtered categories to optimize performance.\n\tconst filteredCategories = useMemo( () => {\n\t\treturn patternCategories.filter( ( category ) =>\n\t\t\tblockPatterns.some(\n\t\t\t\t( pattern ) =>\n\t\t\t\t\tArray.isArray( pattern.categories ) &&\n\t\t\t\t\tpattern.categories.includes( category.name )\n\t\t\t)\n\t\t);\n\t}, [ patternCategories, blockPatterns ] );\n\n\t// Show an error message if data fetching fails.\n\tif ( error ) {\n\t\treturn (\n\t\t\t<div className=\"bbb-tabs-patterns-sidebar--error\">\n\t\t\t\t{ __(\n\t\t\t\t\t'Failed to load block patterns.',\n\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Simple loading state when no data is available.\n\tif ( ! patternCategories.length && ! blockPatterns.length ) {\n\t\treturn (\n\t\t\t<div className=\"bbb-tabs-patterns-sidebar--loading\">\n\t\t\t\t{ __( 'Loading…', 'blablablocks-tabs-block' ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"bbb-tabs-patterns-sidebar\">\n\t\t\t<SearchControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tvalue={ searchTerm }\n\t\t\t\tplaceholder={ __( 'Search', 'blablablocks-tabs-block' ) }\n\t\t\t\tonChange={ setSearchTerm }\n\t\t\t/>\n\t\t\t{ ! searchTerm && (\n\t\t\t\t<div className=\"bbb-tabs-patterns-sidebar__list\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tisPressed={ selectedCategory === null }\n\t\t\t\t\t\tonClick={ () => setSelectedCategory( null ) }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\ttextAlign: 'left',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'All', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t\t<span className=\"bbb-tabs-patterns-sidebar__count\">\n\t\t\t\t\t\t\t{ blockPatterns.length }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t\t{ filteredCategories.map( ( { name, label } ) => {\n\t\t\t\t\t\tconst count =\n\t\t\t\t\t\t\tblockPatterns.filter(\n\t\t\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t\t\tArray.isArray( pattern.categories ) &&\n\t\t\t\t\t\t\t\t\tpattern.categories.includes( name )\n\t\t\t\t\t\t\t).length || 0;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\t\t\tisPressed={ selectedCategory === name }\n\t\t\t\t\t\t\t\tonClick={ () => setSelectedCategory( name ) }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\ttextAlign: 'left',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t<span className=\"bbb-tabs-patterns-sidebar__count\">\n\t\t\t\t\t\t\t\t\t{ count }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport default PatternSidebar;\n","/**\n * WordPress dependencies\n */\nimport clsx from 'clsx';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useMemo } from '@wordpress/element';\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tRichText,\n\tBlockControls,\n\tstore as blockEditorStore,\n\tgetTypographyClassesAndStyles as useTypographyProps,\n\tInspectorControls,\n} from '@wordpress/block-editor';\nimport { ToggleControl, PanelBody } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { TabFill, TabsListSlot } from '../utils/slotFill';\nimport Placeholder from './placeholder';\nimport IconPicker from '../components/icon-picker';\nimport { getTabButtonStyles } from '../utils/style';\n\n/**\n * The Edit component for the Tab block.\n *\n * @param {Object} props - Component props.\n * @param {string} props.clientId - The client ID for this block instance.\n * @param {boolean} props.isSelected - Whether the block is currently selected.\n * @param {Object} props.attributes - The block attributes.\n * @param {Function} props.setAttributes - Function to update block attributes.\n * @return {JSX.Element} The component rendering for the block editor.\n */\nexport default function Edit( {\n\tclientId,\n\tisSelected,\n\tattributes,\n\tsetAttributes,\n} ) {\n\tconst { updateBlockAttributes, selectBlock } =\n\t\tuseDispatch( blockEditorStore );\n\n\t/**\n\t * Retrieve block-related data using the `useSelect` hook.\n\t */\n\tconst {\n\t\thasChildBlocks,\n\t\ttabsClientId,\n\t\thasTabSelected,\n\t\tisDefaultTab,\n\t\tblockIndex,\n\t\tisTabsClientSelected,\n\t\tforceDisplay,\n\t\thasInnerBlocksSelected,\n\t\tlastSelectedTabClientId,\n\t\tparentAttrs,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tisBlockSelected,\n\t\t\t\tgetMultiSelectedBlocksEndClientId,\n\t\t\t} = select( 'core/block-editor' );\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tconst parentBlockAttrs = getBlockAttributes( rootClientId );\n\t\t\tconst innerHasTabSelected = hasSelectedInnerBlock(\n\t\t\t\trootClientId,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tconst innerHasInnerBlocksSelected = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tconst innerBlockIndex = getBlockIndex( clientId );\n\t\t\tconst totalTabsCount = getBlockOrder( rootClientId ).length;\n\n\t\t\t// Check if activeTab is a valid index and if this tab is the active one\n\t\t\tconst activeTab = parentBlockAttrs?.activeTab;\n\t\t\tconst isValidActiveTab =\n\t\t\t\ttypeof activeTab === 'number' &&\n\t\t\t\tactiveTab >= 0 &&\n\t\t\t\tactiveTab < totalTabsCount;\n\t\t\tconst innerIsDefaultTab = isValidActiveTab\n\t\t\t\t? activeTab === innerBlockIndex\n\t\t\t\t: innerBlockIndex === 0;\n\t\t\tconst innerIsTabsClientSelected = isBlockSelected( rootClientId );\n\n\t\t\treturn {\n\t\t\t\tblockIndex: innerBlockIndex,\n\t\t\t\ttabsClientId: rootClientId,\n\t\t\t\thasChildBlocks: getBlockOrder( clientId ).length > 0,\n\t\t\t\thasInnerBlocksSelected: innerHasInnerBlocksSelected,\n\t\t\t\tisTabsClientSelected: innerIsTabsClientSelected,\n\t\t\t\tisDefaultTab: innerIsDefaultTab,\n\t\t\t\tforceDisplay: innerIsDefaultTab && innerIsTabsClientSelected,\n\t\t\t\thasTabSelected: innerHasTabSelected,\n\t\t\t\tlastSelectedTabClientId: getMultiSelectedBlocksEndClientId(),\n\t\t\t\tparentAttrs: parentBlockAttrs,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t/**\n\t * Determines if the current tab should be displayed as selected based on\n\t * various selection states and conditions.\n\t *\n\t * @type {boolean}\n\t */\n\tconst isTabSelected = useMemo( () => {\n\t\tif ( isSelected || hasInnerBlocksSelected || forceDisplay ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (\n\t\t\tisDefaultTab &&\n\t\t\t! isTabsClientSelected &&\n\t\t\t! isSelected &&\n\t\t\t! hasTabSelected\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If multiple tabs are selected, only show the last one\n\t\tif ( hasTabSelected && lastSelectedTabClientId === clientId ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}, [\n\t\tclientId,\n\t\tisSelected,\n\t\thasInnerBlocksSelected,\n\t\tisDefaultTab,\n\t\tforceDisplay,\n\t\tisTabsClientSelected,\n\t\thasTabSelected,\n\t\tlastSelectedTabClientId,\n\t] );\n\n\tconst typographyProps = useTypographyProps( parentAttrs );\n\n\t/**\n\t * Props for the block container.\n\t * @type {Object}\n\t */\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx(\n\t\t\t'blablablocks-tab',\n\t\t\t'blablablocks-tab-container',\n\t\t\t'blablablocks-tabs__' + parentAttrs.orientation,\n\t\t\t'blablablocks-tabs__' + parentAttrs.verticalPosition,\n\t\t\t'blablablocks-tabs-icon__' + parentAttrs.iconPosition\n\t\t),\n\t} );\n\n\t/**\n\t * Props for the inner blocks container.\n\t * @type {Object}\n\t */\n\tconst innerBlocksProps = useInnerBlocksProps( {\n\t\tclassName: 'blablablocks-tab-content',\n\t\t'aria-labelledby': `tab-${ attributes.tabId }`,\n\t\tid: `tab-${ attributes.tabId }`,\n\t\trole: 'tabpanel',\n\t\ttabIndex: isTabSelected ? 0 : -1,\n\t} );\n\n\t/**\n\t * Sets the default tab by updating the `activeTab` attribute of the parent Tabs block.\n\t *\n\t * @param {boolean} value - The value to set for the active tab.\n\t */\n\tconst handleSetDefault = ( value ) => {\n\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\tactiveTab: value ? blockIndex : 0,\n\t\t} );\n\t};\n\n\t/**\n\t * Set the `tabId` attribute.\n\t *\n\t * This effect ensures each tab has a unique identifier by setting the tabId\n\t * attribute to the clientId.\n\t */\n\tuseEffect( () => {\n\t\t! attributes.tabId && setAttributes( { tabId: clientId } );\n\t}, [ clientId ] );\n\n\treturn (\n\t\t<>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<TabFill tabsClientId={ tabsClientId }>\n\t\t\t\t\t<div\n\t\t\t\t\t\tid={ attributes.tabId }\n\t\t\t\t\t\tclassName={ clsx( 'blablablock-tab-btn', {\n\t\t\t\t\t\t\t'is-bbb-active-tab': isTabSelected,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\ttabIndex={ 0 }\n\t\t\t\t\t\taria-selected={ isTabSelected }\n\t\t\t\t\t\taria-controls={ attributes.tabId }\n\t\t\t\t\t\tonClick={ () => selectBlock( clientId ) }\n\t\t\t\t\t\tonKeyDown={ ( e ) => {\n\t\t\t\t\t\t\tif ( e.key === 'Enter' || e.key === ' ' ) {\n\t\t\t\t\t\t\t\t// Don't handle if clicking on or inside the RichText component\n\t\t\t\t\t\t\t\tif ( e.target.closest( '.tab-button-text' ) ) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...getTabButtonStyles( parentAttrs, isTabSelected ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ /* Render the tab icon if it exists */ }\n\t\t\t\t\t\t{ attributes.tabIcon && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"bbb-tab-icon\"\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t\t\t__html: attributes.tabIcon,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ /* Render the tab name */ }\n\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'tab-button-text',\n\t\t\t\t\t\t\t\ttypographyProps.className\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\tvalue={ attributes.tabname }\n\t\t\t\t\t\t\tplaceholder={ __( 'Add Tab Label…' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\ttabname: value,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstyle={ typographyProps.style }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</TabFill>\n\t\t\t\t{ isTabSelected && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<TabsListSlot\n\t\t\t\t\t\t\tkey={ blockIndex }\n\t\t\t\t\t\t\ttabsClientId={ tabsClientId }\n\t\t\t\t\t\t\tattributes={ parentAttrs }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ hasChildBlocks ? (\n\t\t\t\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Placeholder clientId={ clientId } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</div>\n\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody\n\t\t\t\t\ttitle={ __( 'Settings', 'blablablocks-tabs-block' ) }\n\t\t\t\t\tinitialOpen={ true }\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t'Set as default tab',\n\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'This tab will be active when the page first loads.',\n\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tchecked={ isDefaultTab }\n\t\t\t\t\t\tonChange={ ( value ) => handleSetDefault( value ) }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\n\t\t\t<BlockControls>\n\t\t\t\t<IconPicker\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useCallback } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { createBlocksFromInnerBlocksTemplate, parse } from '@wordpress/blocks';\nimport {\n\tModal,\n\tPlaceholder as PlaceholderComponent,\n\tButton,\n\tNotice,\n} from '@wordpress/components';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { TabLogo, PatternSidebar, PatternList } from '../components';\n\n/**\n * This component serves as a placeholder for the Tab block, displaying a block variation picker.\n * It allows users to choose from predefined variations for initializing the block with default settings.\n *\n * @param {Object} props Component props.\n * @param {string} props.clientId The client ID for this block instance.\n * @return {JSX.Element} The placeholder component for the Tabs block.\n */\nfunction Placeholder( { clientId } ) {\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst blockProps = useBlockProps( { className: 'bbb-tab-placeholder' } );\n\tconst [ step, setStep ] = useState( null );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ selectedCategory, setSelectedCategory ] = useState( null );\n\tconst [ searchTerm, setSearchTerm ] = useState( '' );\n\tconst [ error, setError ] = useState( null );\n\n\t/**\n\t * Creates a blank tab with default content\n\t */\n\tconst handleSkip = useCallback( () => {\n\t\ttry {\n\t\t\tconst defaultTemplate = [ [ 'core/paragraph' ] ];\n\t\t\tconst blocks =\n\t\t\t\tcreateBlocksFromInnerBlocksTemplate( defaultTemplate );\n\t\t\treplaceInnerBlocks( clientId, blocks, true );\n\t\t\tsetStep( 'blank' );\n\t\t} catch ( err ) {\n\t\t\tsetError(\n\t\t\t\t__(\n\t\t\t\t\t'Failed to create blank tab. Please try again.',\n\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ clientId, replaceInnerBlocks ] );\n\n\t/**\n\t * Applies a selected pattern to the tab content\n\t *\n\t * @param {Object} pattern - The pattern object containing content to apply\n\t */\n\tconst applyPattern = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern || ! pattern.content ) {\n\t\t\t\tsetError(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Invalid pattern selected. Please choose another pattern.',\n\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst parsedBlocks = parse( pattern.content );\n\n\t\t\t\tif ( ! parsedBlocks || parsedBlocks.length === 0 ) {\n\t\t\t\t\tthrow new Error( 'No valid blocks found in pattern' );\n\t\t\t\t}\n\n\t\t\t\treplaceInnerBlocks( clientId, parsedBlocks, true );\n\t\t\t\tsetIsModalOpen( false );\n\t\t\t\tsetStep( 'pattern' );\n\t\t\t} catch ( err ) {\n\t\t\t\tsetError(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Failed to apply pattern. Please try another one.',\n\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ clientId, replaceInnerBlocks ]\n\t);\n\n\t/**\n\t * Clears current error message\n\t */\n\tconst dismissError = () => {\n\t\tsetError( null );\n\t};\n\n\t/**\n\t * Opens pattern selection modal\n\t */\n\tconst openPatternModal = () => {\n\t\tsetIsModalOpen( true );\n\t\tsetError( null );\n\t};\n\n\t/**\n\t * Closes pattern selection modal\n\t */\n\tconst closePatternModal = () => {\n\t\tsetIsModalOpen( false );\n\t};\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ error && (\n\t\t\t\t<Notice\n\t\t\t\t\tstatus=\"error\"\n\t\t\t\t\tisDismissible={ true }\n\t\t\t\t\tonRemove={ dismissError }\n\t\t\t\t>\n\t\t\t\t\t{ error }\n\t\t\t\t</Notice>\n\t\t\t) }\n\n\t\t\t{ ! step && (\n\t\t\t\t<PlaceholderComponent\n\t\t\t\t\ticon={ TabLogo }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'Choose a pattern or start blank.',\n\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t) }\n\t\t\t\t\tlabel={ __( 'Tab', 'blablablocks-tabs-block' ) }\n\t\t\t\t>\n\t\t\t\t\t<Button variant=\"primary\" onClick={ openPatternModal }>\n\t\t\t\t\t\t{ __( 'Choose', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button variant=\"secondary\" onClick={ handleSkip }>\n\t\t\t\t\t\t{ __( 'Start blank', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</PlaceholderComponent>\n\t\t\t) }\n\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Patterns', 'blablablocks-tabs-block' ) }\n\t\t\t\t\tisFullScreen\n\t\t\t\t\tonRequestClose={ closePatternModal }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"bbb-tabs-patterns-container\">\n\t\t\t\t\t\t<PatternSidebar\n\t\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\t\tsetSelectedCategory={ setSelectedCategory }\n\t\t\t\t\t\t\tsetSearchTerm={ setSearchTerm }\n\t\t\t\t\t\t\tsearchTerm={ searchTerm }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PatternList\n\t\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\t\tsearchTerm={ searchTerm }\n\t\t\t\t\t\t\tonSelect={ applyPattern }\n\t\t\t\t\t\t\tonError={ setError }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default Placeholder;\n","/**\n * Wordpress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\n/**\n * The save function defines the way in which the different attributes should\n * be combined into the final markup, which is then serialized by the block\n * editor into `post_content`.\n *\n * @return {JSX.Element}\tThe block's save component.\n */\nexport default function save() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { createSlotFill } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { getTabsContainerProps } from './style';\n\n/**\n * Create a unique SlotFill pair using a Symbol to avoid name collisions.\n */\nconst { Fill, Slot } = createSlotFill(Symbol('BlaBlaBlocksTabsList'));\n\n/**\n * TabFill Component\n *\n * This component registers a Fill for the BlaBlaBlocksTabsList Slot.\n *\n * @param {Object} props\n * @param {React.ReactNode} props.children - Elements to be rendered inside the Fill.\n * @param {string} props.tabsClientId - Unique identifier used to scope the Fill to a specific Tabs instance.\n * @return {JSX.Element} A Fill component scoped to the specified Tabs instance.\n */\nexport const TabFill = ({ children, tabsClientId }) => {\n\treturn <Fill name={`BlaBlaBlocksTabsList-${tabsClientId}`}>{children}</Fill>;\n};\n\n/**\n * BlaBlaBlocksTabsListSlot Component\n *\n * This component renders the Slot for a specific Tabs instance.\n * Any TabFill with a matching name will render inside this Slot.\n *\n * @param {Object} props\n * @param {string} props.tabsClientId - Unique identifier used to scope the Slot to a specific Tabs instance.\n * @param {Object} props.attributes - Block attributes used to derive styling props.\n * @return {JSX.Element} A Slot component that renders TabFill components matching the specified Tabs instance.\n */\nexport const TabsListSlot = ({ tabsClientId, attributes }) => {\n\tconst { className, style } = getTabsContainerProps(attributes);\n\n\treturn (\n\t\t<Slot\n\t\t\tname={`BlaBlaBlocksTabsList-${tabsClientId}`}\n\t\t\tbubblesVirtually\n\t\t\tas=\"div\"\n\t\t\trole=\"tablist\"\n\t\t\tclassName={clsx(className, 'blablablocks-tabs-buttons')}\n\t\t\tstyle={style}\n\t\t/>\n\t);\n};\n","/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGetGapCSSValue as getGapCSSValue,\t\t\t\t\t\t\t// eslint-disable-line\n\t__experimentalUseBorderProps as useBorderProps,\t\t\t\t\t\t\t// eslint-disable-line\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\t\t// eslint-disable-line\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles\t// eslint-disable-line\n} from '@wordpress/block-editor';\n\nconst DEFAULT_GAP = '0.5em';\n\n/**\n * Generates CSS gap styles for a block based on the provided gap and orientation.\n *\n * @param {string|object} blockGap - The gap value for the block. Can be a string (e.g., \"10px\") or an object with `top` and `left` properties.\n * @param {string} [orientation='horizontal'] - The orientation of the block. Can be 'horizontal' or 'vertical'.\n * @return {Array<string>} - An array containing two CSS gap values\n */\nconst generateGapStyles = ( blockGap, orientation = 'horizontal' ) => {\n\tlet tabListGap = DEFAULT_GAP;\n\tlet tabGap = DEFAULT_GAP;\n\n\tif ( typeof blockGap === 'string' ) {\n\t\ttabListGap = blockGap;\n\t\ttabGap = blockGap;\n\t} else if ( typeof blockGap === 'object' && blockGap !== null ) {\n\t\ttabListGap = blockGap.top || DEFAULT_GAP;\n\t\ttabGap = blockGap.left || DEFAULT_GAP;\n\t}\n\n\t// Convert to valid CSS values\n\tconst main = getGapCSSValue( tabListGap );\n\tconst cross = getGapCSSValue( tabGap );\n\n\t// If vertical, swap main⇄cross\n\treturn orientation === 'vertical' ? [ main, cross ] : [ cross, main ];\n};\n\n/**\n * Resolves a spacing size value into a usable CSS value.\n *\n * @param {string|number} value - The input spacing size value.\n * @param {string|number} defaultValue - The default value.\n * @return {string} - A valid CSS spacing size value.\n */\nconst resolveSpacingSizeValue = ( value, defaultValue = '0px' ) => {\n\tif ( typeof value === 'string' ) {\n\t\tif ( value.startsWith( 'var:' ) ) {\n\t\t\t// Convert \"var:some|value\" into \"var(--wp--some--value)\"\n\t\t\treturn `var(${ value\n\t\t\t\t.replace( 'var:', '--wp--' )\n\t\t\t\t.replace( /\\|/g, '--' ) })`;\n\t\t}\n\t\treturn value; // If it's a valid CSS string, return as-is\n\t}\n\n\treturn typeof value === 'number' ? `${ value }px` : defaultValue;\n};\n\n/**\n * Helper to get border props with numeric radius handling.\n *\n * @param {Object} borderAttributes - Attributes object to pass to useBorderProps\n * @param {Function} radiusPath - Function that returns the border radius value\n * @return {Object} Border props with className and style, including converted numeric radius\n */\nconst getBorderPropsWithRadius = ( borderAttributes, radiusPath ) => {\n\tconst rawBorder = useBorderProps( borderAttributes );\n\tconst borderRadius = radiusPath?.();\n\n\treturn {\n\t\t...rawBorder,\n\t\tstyle: {\n\t\t\t...rawBorder.style,\n\t\t\t...( typeof borderRadius === 'number' && {\n\t\t\t\tborderRadius: `${ borderRadius }px`,\n\t\t\t} ),\n\t\t},\n\t};\n};\n\n/**\n * Helper function to resolve color value based on slug\n *\n * @param {Object} colorObj - Color object with color and slug properties\n * @param {string} fallback - Fallback color value\n * @return {string} - CSS color value or custom property\n */\nconst resolveColorValue = ( colorObj, fallback ) => {\n\tif ( ! colorObj ) {\n\t\treturn fallback;\n\t}\n\n\t// If we have a slug, use the WordPress preset color custom property\n\tif ( colorObj.slug ) {\n\t\treturn `var(--wp--preset--color--${ colorObj.slug })`;\n\t}\n\n\t// Otherwise use the direct color value\n\treturn colorObj.color || fallback;\n};\n\n/**\n * Generates a set of CSS variable mappings based on provided attributes.\n * The returned object excludes variables with invalid or undefined values.\n *\n * @param {Object} attributes - The attributes used to customize styles.\n * @return {Object} - An object with CSS variable definitions.\n */\nexport const generateStyles = ( attributes = {} ) => {\n\tconst styles = {};\n\n\t// Padding\n\tconst padding = attributes.tabPadding || {};\n\tstyles[ '--bbb-tab-padding' ] = [\n\t\tresolveSpacingSizeValue( padding.top, '5px' ),\n\t\tresolveSpacingSizeValue( padding.right, '15px' ),\n\t\tresolveSpacingSizeValue( padding.bottom, '5px' ),\n\t\tresolveSpacingSizeValue( padding.left, '15px' ),\n\t].join( ' ' );\n\n\t// Colors for different states\n\tconst colorDefaults = {\n\t\tdefault: { text: '#000', bg: '#fff', icon: '#000' },\n\t\thover: { text: '#fff', bg: '#000', icon: '#fff' },\n\t\tactive: { text: '#fff', bg: '#000', icon: '#fff' },\n\t};\n\n\tObject.entries( colorDefaults ).forEach( ( [ state, defaults ] ) => {\n\t\tconst stateKey = state === 'default' ? 'default' : state;\n\n\t\t// Text color\n\t\tstyles[ `--bbb-tab-text-${ state }-color` ] = resolveColorValue(\n\t\t\tattributes.tabTextColor?.[ stateKey ],\n\t\t\tdefaults.text\n\t\t);\n\n\t\t// Background color\n\t\tstyles[ `--bbb-tab-background-${ state }-color` ] = resolveColorValue(\n\t\t\tattributes.tabBackgroundColor?.[ stateKey ],\n\t\t\tdefaults.bg\n\t\t);\n\n\t\t// Icon color\n\t\tconst iconColorValue =\n\t\t\tattributes.tabIconColor?.[ stateKey ] ||\n\t\t\t( state === 'active' ? attributes.tabIconColor?.default : null );\n\t\tstyles[ `--bbb-tab-icon-${ state }-color` ] = resolveColorValue(\n\t\t\ticonColorValue,\n\t\t\tdefaults.icon\n\t\t);\n\t} );\n\n\t// Other styles\n\tstyles[ '--bbb-tab-buttons-justify-content' ] =\n\t\tattributes.justification || 'left';\n\tstyles[ '--bbb-tab-icon-size' ] = `${ attributes.iconSize || 24 }px`;\n\n\t// Gap styles\n\tconst [ listGap, tabsGap ] = generateGapStyles(\n\t\tattributes.style?.spacing?.blockGap || null,\n\t\tattributes.orientation\n\t);\n\tstyles[ '--bbb-tabs-list-gap' ] = listGap;\n\tstyles[ '--bbb-tabs-gap' ] = tabsGap;\n\n\treturn styles;\n};\n\n/**\n * Return consolidated className + style for the Tabs container:\n * – spacing classes & styles\n * – border props (with numeric radius)\n * – horizontal margin based on orientation/justification\n *\n * @param {Object} attributes - The attributes used to customize styles.\n * @return {{ className: string, style: Object }} An object containing the `className` string and inline `style` object.\n */\nexport function getTabsContainerProps( attributes ) {\n\t// spacing\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\n\t// color\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\n\t// border (useBorderProps gives { className, style })\n\tconst borderProps = getBorderPropsWithRadius(\n\t\tattributes,\n\t\t() => attributes.style?.border?.radius\n\t);\n\n\t// margin\n\tconst marginStyle =\n\t\tattributes.orientation === 'horizontal'\n\t\t\t? ( () => {\n\t\t\t\t\tswitch ( attributes.justification ) {\n\t\t\t\t\t\tcase 'right':\n\t\t\t\t\t\t\treturn { margin: '0 0 0 auto' };\n\t\t\t\t\t\tcase 'center':\n\t\t\t\t\t\t\treturn { margin: '0 auto' };\n\t\t\t\t\t\tcase 'left':\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn { margin: '0 0 auto' };\n\t\t\t\t\t}\n\t\t\t } )()\n\t\t\t: {};\n\n\t// width\n\tconst width =\n\t\tattributes.orientation === 'vertical'\n\t\t\t? { minWidth: `${ attributes.width || 50 }%` }\n\t\t\t: {};\n\n\t// combine\n\treturn {\n\t\tclassName: [\n\t\t\tspacingProps.classes,\n\t\t\tborderProps.className,\n\t\t\tcolorProps.className,\n\t\t]\n\t\t\t.filter( Boolean )\n\t\t\t.join( ' ' ),\n\t\tstyle: {\n\t\t\t...spacingProps.style,\n\t\t\t...borderProps.style,\n\t\t\t...colorProps.style,\n\t\t\t...marginStyle,\n\t\t\t...width,\n\t\t},\n\t};\n}\n\n/**\n * Return consolidated style for the Tab button:\n *\n * @param {Object} attributes - The attributes used to customize styles.\n * @param {boolean} isActive - Whether this tab is currently active.\n * @return {{ style: Object }} An object containing the inline `style` for the tab button.\n */\nexport function getTabButtonStyles( attributes, isActive ) {\n\t// If tabBorder has an onActive flag and it's true, only apply border when this tab is active.\n\tconst shouldApplyBorder = attributes?.tabBorder?.onActive ? isActive : true;\n\n\t// Tab Border (only if allowed by shouldApplyBorder)\n\tconst borderInput = shouldApplyBorder\n\t\t? { style: attributes?.tabBorder }\n\t\t: { style: {} };\n\n\tconst borderProps = getBorderPropsWithRadius(\n\t\tborderInput,\n\t\t() => attributes?.tabBorder?.border?.radius\n\t);\n\n\treturn {\n\t\tstyle: { ...borderProps.style },\n\t};\n}\n","module.exports = window[\"React\"];","module.exports = window[\"ReactJSXRuntime\"];","module.exports = window[\"wp\"][\"blockEditor\"];","module.exports = window[\"wp\"][\"blocks\"];","module.exports = window[\"wp\"][\"components\"];","module.exports = window[\"wp\"][\"data\"];","module.exports = window[\"wp\"][\"element\"];","module.exports = window[\"wp\"][\"i18n\"];","module.exports = window[\"wp\"][\"primitives\"];","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Wordpress dependencies\n */\nimport { registerBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport Edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\nimport { TabLogo } from '../components';\n\n/**\n * Register a slide block\n */\nregisterBlockType( metadata.name, {\n\ticon: TabLogo,\n\tedit: Edit,\n\tsave,\n} );\n"],"names":["__","ColorPalette","__experimentalUseMultipleOriginColorsAndGradients","useMultipleOriginColorsAndGradients","Button","TabPanel","Dropdown","ColorIndicator","__experimentalZStack","ZStack","__experimentalHStack","HStack","__experimentalText","Text","jsx","_jsx","jsxs","_jsxs","resolveColorSelection","rawColor","colorGradientSettings","pickedColor","color","undefined","slug","normalize","c","String","trim","toLowerCase","target","palettes","Array","isArray","colors","palette","entry","includes","replace","ColorControlDropdown","label","colorValue","onChangeColor","hasHover","hasActive","handleChange","tabName","normalized","defaultIndicator","default","hoverIndicator","hover","activeIndicator","active","popoverProps","placement","offset","shift","contentClassName","renderToggle","isOpen","onToggle","className","onClick","children","justify","renderContent","tabs","name","title","tab","__experimentalIsRenderedInSidebar","value","onChange","enableAlpha","useState","Modal","ToolbarButton","Fragment","_Fragment","IconPicker","attributes","setAttributes","setOpen","svgCode","setSvgCode","useEffect","TextareaControl","Card","Notice","__experimentalVStack","VStack","__experimentalGrid","Grid","IconPickerModal","isSvgValid","setIsSvgValid","validationError","setValidationError","closeModal","validateSvg","svg","trimmed","matches","match","length","joinedSVGs","join","handleSvgCodeChange","handleInsertSvg","tabIcon","initialCode","size","onRequestClose","align","templateColumns","gap","style","height","__nextHasNoMarginBottom","hideLabelFromVision","placeholder","spacing","isRounded","dangerouslySetInnerHTML","__html","status","isDismissible","variant","disabled","ToolbarGroup","ToolbarDropdownMenu","code","reset","IconPickerToolbarButton","controls","icon","isDisabled","text","SVG","Path","TabLogo","width","viewBox","xmlns","fillRule","clipRule","d","TabsLogo","TabsVerticalLogo","PatternSidebar","PatternList","_n","sprintf","useSelect","useMemo","BlockPreview","Spinner","__experimentalHeading","Heading","PATTERNS_PER_PAGE","LOADING_DELAY","selectedCategory","searchTerm","onSelect","currentPage","setCurrentPage","isLoading","setIsLoading","error","setError","patterns","hasResolved","select","coreSelect","getBlockPatterns","hasFinishedResolution","err","timeout","setTimeout","clearTimeout","filteredPatterns","filter","pattern","matchesCategory","categories","matchesSearch","totalPages","Math","max","ceil","paginatedPatterns","slice","handlePatternSelect","goToPage","direction","prev","newPage","min","count","paddingBottom","columns","map","alignment","content","blocks","wp","parse","viewportWidth","id","random","SearchControl","setSelectedCategory","setSearchTerm","patternCategories","blockPatterns","core","getBlockPatternCategories","filteredCategories","category","some","__next40pxDefaultSize","isPressed","display","justifyContent","textAlign","clsx","useDispatch","useBlockProps","useInnerBlocksProps","RichText","BlockControls","store","blockEditorStore","getTypographyClassesAndStyles","useTypographyProps","InspectorControls","ToggleControl","PanelBody","TabFill","TabsListSlot","Placeholder","getTabButtonStyles","Edit","clientId","isSelected","updateBlockAttributes","selectBlock","hasChildBlocks","tabsClientId","hasTabSelected","isDefaultTab","blockIndex","isTabsClientSelected","forceDisplay","hasInnerBlocksSelected","lastSelectedTabClientId","parentAttrs","getBlockOrder","getBlockIndex","getBlockRootClientId","getBlockAttributes","hasSelectedInnerBlock","isBlockSelected","getMultiSelectedBlocksEndClientId","rootClientId","parentBlockAttrs","innerHasTabSelected","innerHasInnerBlocksSelected","innerBlockIndex","totalTabsCount","activeTab","isValidActiveTab","innerIsDefaultTab","innerIsTabsClientSelected","isTabSelected","typographyProps","blockProps","orientation","verticalPosition","iconPosition","innerBlocksProps","tabId","role","tabIndex","handleSetDefault","onKeyDown","e","key","closest","preventDefault","tagName","withoutInteractiveFormatting","tabname","initialOpen","help","checked","useCallback","createBlocksFromInnerBlocksTemplate","PlaceholderComponent","replaceInnerBlocks","step","setStep","isModalOpen","setIsModalOpen","handleSkip","defaultTemplate","applyPattern","parsedBlocks","Error","dismissError","openPatternModal","closePatternModal","onRemove","instructions","isFullScreen","onError","InnerBlocks","save","Content","React","createSlotFill","getTabsContainerProps","Fill","Slot","Symbol","bubblesVirtually","as","__experimentalGetGapCSSValue","getGapCSSValue","__experimentalUseBorderProps","useBorderProps","__experimentalGetColorClassesAndStyles","getColorClassesAndStyles","__experimentalGetSpacingClassesAndStyles","getSpacingClassesAndStyles","DEFAULT_GAP","generateGapStyles","blockGap","tabListGap","tabGap","top","left","main","cross","resolveSpacingSizeValue","defaultValue","startsWith","getBorderPropsWithRadius","borderAttributes","radiusPath","rawBorder","borderRadius","resolveColorValue","colorObj","fallback","generateStyles","styles","padding","tabPadding","right","bottom","colorDefaults","bg","Object","entries","forEach","state","defaults","stateKey","tabTextColor","tabBackgroundColor","iconColorValue","tabIconColor","justification","iconSize","listGap","tabsGap","spacingProps","colorProps","borderProps","border","radius","marginStyle","margin","minWidth","classes","Boolean","isActive","shouldApplyBorder","tabBorder","onActive","borderInput","registerBlockType","metadata","edit"],"sourceRoot":""}1 {"version":3,"file":"tab/index.js","mappings":"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","sources":["webpack://blablablocks-tabs-block/./node_modules/@wordpress/icons/build-module/library/code.js","webpack://blablablocks-tabs-block/./node_modules/@wordpress/icons/build-module/library/reset.js","webpack://blablablocks-tabs-block/./src/components/color-control.js","webpack://blablablocks-tabs-block/./src/components/icon-picker/index.js","webpack://blablablocks-tabs-block/./src/components/icon-picker/modal.js","webpack://blablablocks-tabs-block/./src/components/icon-picker/toolbar-button.js","webpack://blablablocks-tabs-block/./src/components/icons/tab-logo.js","webpack://blablablocks-tabs-block/./src/components/icons/tabs-logo.js","webpack://blablablocks-tabs-block/./src/components/icons/tabs-vertical-logo.js","webpack://blablablocks-tabs-block/./src/components/index.js","webpack://blablablocks-tabs-block/./src/components/pattern-picker/pattern-list.js","webpack://blablablocks-tabs-block/./src/components/pattern-picker/pattern-sidebar.js","webpack://blablablocks-tabs-block/./src/tab/edit.js","webpack://blablablocks-tabs-block/./src/tab/placeholder.js","webpack://blablablocks-tabs-block/./src/tab/save.js","webpack://blablablocks-tabs-block/./src/utils/slotFill.js","webpack://blablablocks-tabs-block/./src/utils/style.js","webpack://blablablocks-tabs-block/external window \"React\"","webpack://blablablocks-tabs-block/external window \"ReactJSXRuntime\"","webpack://blablablocks-tabs-block/external window [\"wp\",\"blockEditor\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"blocks\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"components\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"data\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"element\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"i18n\"]","webpack://blablablocks-tabs-block/external window [\"wp\",\"primitives\"]","webpack://blablablocks-tabs-block/./node_modules/clsx/dist/clsx.mjs","webpack://blablablocks-tabs-block/webpack/bootstrap","webpack://blablablocks-tabs-block/webpack/runtime/compat get default export","webpack://blablablocks-tabs-block/webpack/runtime/define property getters","webpack://blablablocks-tabs-block/webpack/runtime/hasOwnProperty shorthand","webpack://blablablocks-tabs-block/webpack/runtime/make namespace object","webpack://blablablocks-tabs-block/./src/tab/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst code = /*#__PURE__*/_jsx(SVG, {\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/_jsx(Path, {\n d: \"M20.8 10.7l-4.3-4.3-1.1 1.1 4.3 4.3c.1.1.1.3 0 .4l-4.3 4.3 1.1 1.1 4.3-4.3c.7-.8.7-1.9 0-2.6zM4.2 11.8l4.3-4.3-1-1-4.3 4.3c-.7.7-.7 1.8 0 2.5l4.3 4.3 1.1-1.1-4.3-4.3c-.2-.1-.2-.3-.1-.4z\"\n })\n});\nexport default code;\n//# sourceMappingURL=code.js.map","/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst reset = /*#__PURE__*/_jsx(SVG, {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/_jsx(Path, {\n d: \"M7 11.5h10V13H7z\"\n })\n});\nexport default reset;\n//# sourceMappingURL=reset.js.map","/**\n * WordPress dependencies.\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tColorPalette,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients // eslint-disable-line\n} from '@wordpress/block-editor';\nimport {\n\tButton,\n\tTabPanel,\n\tDropdown,\n\tColorIndicator,\n\t__experimentalZStack as ZStack, // eslint-disable-line\n\t__experimentalHStack as HStack, // eslint-disable-line\n\t__experimentalText as Text, // eslint-disable-line\n} from '@wordpress/components';\n\n/**\n * Resolve a raw selection from ColorPalette against the provided\n * colorGradientSettings to see if it corresponds to a theme/preset color.\n *\n * @param {string|Object} rawColor\n * @param {Array} colorGradientSettings - the array you get from useMultipleOriginColorsAndGradients()\n * @return {{ color: string|undefined, slug: string|undefined }} Object containing the selected color value and its slug if it matches a preset otherwise, both properties are undefined.\n */\nfunction resolveColorSelection( rawColor, colorGradientSettings ) {\n\tlet pickedColor = '';\n\n\tif ( typeof rawColor === 'object' ) {\n\t\tpickedColor = rawColor.color || rawColor;\n\t} else if ( typeof rawColor === 'string' ) {\n\t\tpickedColor = rawColor;\n\t}\n\n\tif ( ! pickedColor ) {\n\t\treturn { color: undefined, slug: undefined };\n\t}\n\n\tconst normalize = ( c ) => String( c ).trim().toLowerCase();\n\tconst target = normalize( pickedColor );\n\n\tconst palettes = Array.isArray( colorGradientSettings?.colors )\n\t\t? colorGradientSettings.colors\n\t\t: [];\n\n\tfor ( const palette of palettes ) {\n\t\tif ( ! Array.isArray( palette.colors ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor ( const entry of palette.colors ) {\n\t\t\tif ( ! entry || ! entry.color ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( normalize( entry.color ) === target ) {\n\t\t\t\treturn {\n\t\t\t\t\tcolor: pickedColor,\n\t\t\t\t\tslug: entry.slug,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// crude handling for function-style colors like color-mix\n\t\t\tif (\n\t\t\t\tentry.color.includes( 'color-mix' ) &&\n\t\t\t\ttarget.includes(\n\t\t\t\t\tentry.color.replace( /\\s+/g, '' ).toLowerCase()\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn {\n\t\t\t\t\tcolor: pickedColor,\n\t\t\t\t\tslug: entry.slug,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolor: pickedColor,\n\t\tslug: undefined,\n\t};\n}\n\n/**\n * Renders a color control dropdown for selecting colors.\n *\n * @param {Object} props - The component props.\n * @param {string} props.label - The label for the color control.\n * @param {Object} props.colorValue - The current color values. Should include `default` and optionally `hover` (if `hasHover` is true).\n * @param {Function} props.onChangeColor - Callback function to handle color changes. Accepts an object with updated color values.\n * @param {boolean} props.hasHover - Determines if hover color support is enabled. If true, a tab for hover colors is displayed.\n * @param {boolean} props.hasActive - Determines if active color support is enabled. If true, a tab for active colors is displayed.\n *\n * @return {JSX.Element} The rendered ColorControlDropdown component.\n */\nfunction ColorControlDropdown( {\n\tlabel,\n\tcolorValue = {},\n\tonChangeColor,\n\thasHover = false,\n\thasActive = false,\n} ) {\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\tconst handleChange = ( tabName, rawColor ) => {\n\t\tconst normalized = resolveColorSelection(\n\t\t\trawColor,\n\t\t\tcolorGradientSettings\n\t\t);\n\t\tonChangeColor( {\n\t\t\t...colorValue,\n\t\t\t[ tabName ]: normalized,\n\t\t} );\n\t};\n\n\tconst defaultIndicator = colorValue.default?.color || '';\n\tconst hoverIndicator = hasHover ? colorValue.hover?.color : null;\n\tconst activeIndicator = hasActive ? colorValue.active?.color : null;\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ {\n\t\t\t\tplacement: 'left-start',\n\t\t\t\toffset: 36,\n\t\t\t\tshift: true,\n\t\t\t} }\n\t\t\tcontentClassName=\"bbb-tabs_color_popover\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<Button\n\t\t\t\t\tclassName={ `bbb-tabs_color_button ${\n\t\t\t\t\t\tisOpen ? 'isOpen' : ''\n\t\t\t\t\t}` }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t>\n\t\t\t\t\t<HStack justify=\"left\">\n\t\t\t\t\t\t<ZStack offset={ 10 }>\n\t\t\t\t\t\t\t<ColorIndicator colorValue={ defaultIndicator } />\n\t\t\t\t\t\t\t{ hasHover && (\n\t\t\t\t\t\t\t\t<ColorIndicator colorValue={ hoverIndicator } />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t{ hasActive && (\n\t\t\t\t\t\t\t\t<ColorIndicator\n\t\t\t\t\t\t\t\t\tcolorValue={ activeIndicator }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</ZStack>\n\t\t\t\t\t\t<Text>{ label }</Text>\n\t\t\t\t\t</HStack>\n\t\t\t\t</Button>\n\t\t\t) }\n\t\t\trenderContent={ () =>\n\t\t\t\thasHover || hasActive ? (\n\t\t\t\t\t<TabPanel\n\t\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'default',\n\t\t\t\t\t\t\t\ttitle: __(\n\t\t\t\t\t\t\t\t\t'Default',\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'hover',\n\t\t\t\t\t\t\t\ttitle: __( 'Hover', 'blablablocks-tabs-block' ),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'active',\n\t\t\t\t\t\t\t\ttitle: __(\n\t\t\t\t\t\t\t\t\t'Active',\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t] }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( tab ) => (\n\t\t\t\t\t\t\t<ColorPalette\n\t\t\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\t\t\tvalue={ colorValue[ tab.name ]?.color || '' }\n\t\t\t\t\t\t\t\tonChange={ ( color ) =>\n\t\t\t\t\t\t\t\t\thandleChange( tab.name, color )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</TabPanel>\n\t\t\t\t) : (\n\t\t\t\t\t<ColorPalette\n\t\t\t\t\t\tclassName=\"bbb-color-pallete-container\"\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\tvalue={ colorValue.default?.color || '' }\n\t\t\t\t\t\tonChange={ ( color ) => {\n\t\t\t\t\t\t\tonChangeColor( { ...colorValue, default: color } );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t\t\tenableAlpha\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t/>\n\t);\n}\n\nexport default ColorControlDropdown;\n","/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Modal from './modal';\nimport ToolbarButton from './toolbar-button';\n\n/**\n * IconPicker Component\n *\n * A component that allows users to pick an SVG icon using a toolbar button\n * and modal interface. It manages the open/close state of the modal and\n * the SVG code selected.\n *\n * @param {Object} props - Component props.\n * @param {Object} props.attributes - The block attributes.\n * @param {Function} props.setAttributes - Function to update block attributes.\n *\n * @return {JSX.Element} The rendered IconPicker component.\n */\nfunction IconPicker( { attributes, setAttributes } ) {\n\tconst [ isOpen, setOpen ] = useState( false );\n\tconst [ svgCode, setSvgCode ] = useState( '' );\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tsetOpen={ setOpen }\n\t\t\t\tsetSvgCode={ setSvgCode }\n\t\t\t/>\n\t\t\t<Modal\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisOpen={ isOpen }\n\t\t\t\tsetOpen={ setOpen }\n\t\t\t\tsetSvgCode={ setSvgCode }\n\t\t\t\tsvgCode={ svgCode }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default IconPicker;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tModal,\n\tTextareaControl,\n\tCard,\n\tButton,\n\tNotice,\n\t__experimentalVStack as VStack, // eslint-disable-line\n\t__experimentalHStack as HStack, // eslint-disable-line\n\t__experimentalGrid as Grid, \t// eslint-disable-line\n} from '@wordpress/components';\n\n/**\n * IconPickerModal Component\n *\n * A modal for inputting and previewing custom SVG icons.\n * Validates the SVG code and allows users to insert it into the block attributes.\n *\n * @param {Object} props - Component props.\n * @param {Object} props.attributes - The block attributes.\n * @param {Function} props.setAttributes - Function to update block attributes.\n * @param {boolean} props.isOpen - Flag to control modal visibility.\n * @param {Function} props.setOpen - Function to toggle modal open state.\n * @param {string} props.svgCode - Current SVG code input.\n * @param {Function} props.setSvgCode - Function to update the SVG code.\n *\n * @return {JSX.Element|null} Modal component for inserting a custom SVG icon, or null if modal is closed.\n */\nfunction IconPickerModal( {\n\tattributes,\n\tsetAttributes,\n\tisOpen,\n\tsetOpen,\n\tsvgCode,\n\tsetSvgCode,\n} ) {\n\tconst [ isSvgValid, setIsSvgValid ] = useState( false );\n\tconst [ validationError, setValidationError ] = useState( '' );\n\tconst closeModal = () => setOpen( false );\n\n\t/**\n\t * Validate the SVG code.\n\t *\n\t * @param {string} svg The SVG code to validate.\n\t * @return {boolean} Whether the SVG is valid.\n\t */\n\tconst validateSvg = ( svg ) => {\n\t\tif ( ! svg ) {\n\t\t\tsetValidationError( '' );\n\t\t\treturn false;\n\t\t}\n\n\t\tconst trimmed = svg.trim();\n\n\t\tif ( ! trimmed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Match all <svg>...</svg> blocks\n\t\tconst matches = trimmed.match( /<svg[\\s\\S]*?>[\\s\\S]*?<\\/svg>/gi );\n\n\t\tif ( ! matches || matches.length === 0 ) {\n\t\t\tsetValidationError(\n\t\t\t\t__(\n\t\t\t\t\t'Invalid SVG code. Please provide valid SVG(s).',\n\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t)\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Join matched SVGs and compare with the trimmed input\n\t\tconst joinedSVGs = matches.join( '' ).trim();\n\n\t\tif ( joinedSVGs !== trimmed ) {\n\t\t\tsetValidationError(\n\t\t\t\t__(\n\t\t\t\t\t'Only SVG code is allowed. Remove any extra text outside <svg> tags.',\n\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t)\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Clear any previous error\n\t\tsetValidationError( '' );\n\t\treturn true;\n\t};\n\n\t/**\n\t * Handle SVG code changes.\n\t * Updates the SVG code state and validates the new code.\n\t *\n\t * @param {string} value The new SVG code.\n\t */\n\tconst handleSvgCodeChange = ( value ) => {\n\t\tsetSvgCode( value );\n\t\tsetIsSvgValid( validateSvg( value ) );\n\t};\n\n\t/**\n\t * Handle inserting the SVG.\n\t */\n\tconst handleInsertSvg = () => {\n\t\tif ( isSvgValid ) {\n\t\t\tsetAttributes( { tabIcon: svgCode } );\n\t\t\tcloseModal();\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tif ( isOpen ) {\n\t\t\tconst initialCode = svgCode || attributes.tabIcon || '';\n\t\t\tsetIsSvgValid( validateSvg( initialCode ) );\n\t\t}\n\t}, [ isOpen ] );\n\n\tif ( ! isOpen ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\tclassName=\"bbb-custom-icon-modal\"\n\t\t\ttitle={\n\t\t\t\tattributes.tabIcon\n\t\t\t\t\t? __( 'Edit Custom Icon', 'blablablocks-tabs-block' )\n\t\t\t\t\t: __( 'Add Custom Icon', 'blablablocks-tabs-block' )\n\t\t\t}\n\t\t\tsize={ 'large' }\n\t\t\tonRequestClose={ closeModal }\n\t\t>\n\t\t\t<Grid\n\t\t\t\talign=\"stretch\"\n\t\t\t\ttemplateColumns={ 'auto 300px' }\n\t\t\t\tgap={ 5 }\n\t\t\t\tstyle={ { height: '100%' } }\n\t\t\t>\n\t\t\t\t<TextareaControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tclassName=\"bbb-icon-textarea\"\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\tplaceholder=\"Paste your svg code here\"\n\t\t\t\t\tvalue={ svgCode || attributes.tabIcon }\n\t\t\t\t\tonChange={ handleSvgCodeChange }\n\t\t\t\t/>\n\t\t\t\t<VStack\n\t\t\t\t\tspacing={ 5 }\n\t\t\t\t\tjustify=\"space-between\"\n\t\t\t\t\tstyle={ { height: '100%' } }\n\t\t\t\t>\n\t\t\t\t\t<VStack spacing={ 5 }>\n\t\t\t\t\t\t<Card style={ { height: '200px' } } isRounded={ false }>\n\t\t\t\t\t\t\t{ isSvgValid ? (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"bbb-icon-preview\"\n\t\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t\t\t\t__html: svgCode || attributes.tabIcon,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<div className=\"bbb-icon-preview\">\n\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t'SVG Preview',\n\t\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Card>\n\t\t\t\t\t\t{ validationError && (\n\t\t\t\t\t\t\t<Notice status=\"error\" isDismissible={ false }>\n\t\t\t\t\t\t\t\t{ validationError }\n\t\t\t\t\t\t\t</Notice>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t\t<HStack justify=\"flex-end\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant={ 'primary' }\n\t\t\t\t\t\t\tonClick={ handleInsertSvg }\n\t\t\t\t\t\t\tdisabled={ ! isSvgValid }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Insert custom icon',\n\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</Grid>\n\t\t</Modal>\n\t);\n}\n\nexport default IconPickerModal;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarGroup, ToolbarDropdownMenu } from '@wordpress/components';\nimport { code, reset } from '@wordpress/icons';\n\n/**\n * IconPickerToolbarButton Component\n *\n * A toolbar button that provides a dropdown menu for managing custom SVG icons.\n * Users can open the icon picker modal or reset the selected SVG icon.\n *\n * @param {Object} props - Component props.\n * @param {Object} props.attributes - The block attributes.\n * @param {Function} props.setAttributes - Function to update block attributes.\n * @param {Function} props.setOpen - Function to toggle modal open state.\n * @param {Function} props.setSvgCode - Function to update the SVG code.\n *\n * @return {JSX.Element} A toolbar group containing icon-related actions.\n */\nfunction IconPickerToolbarButton( {\n\tattributes,\n\tsetAttributes,\n\tsetOpen,\n\tsetSvgCode,\n} ) {\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarDropdownMenu\n\t\t\t\tcontrols={ [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: code,\n\t\t\t\t\t\ttitle: attributes.tabIcon\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Edit custom SVG icon',\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Add custom SVG icon',\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t ),\n\t\t\t\t\t\tonClick: () => setOpen( true ),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: reset,\n\t\t\t\t\t\ttitle: __( 'Reset icon', 'blablablocks-tabs-block' ),\n\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\tsetAttributes( { tabIcon: '' } );\n\t\t\t\t\t\t\tsetSvgCode( '' );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tisDisabled: ! attributes.tabIcon,\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t\ttext={\n\t\t\t\t\tattributes.tabIcon\n\t\t\t\t\t\t? __( 'Replace icon', 'blablablocks-tabs-block' )\n\t\t\t\t\t\t: __( 'Add Icon', 'blablablocks-tabs-block' )\n\t\t\t\t}\n\t\t\t\ticon={ '' }\n\t\t\t/>\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default IconPickerToolbarButton;\n","/**\n * Wordpress dependencies.\n */\nimport { SVG, Path } from '@wordpress/components';\n\n/**\n * Tab logo icon\n */\nconst TabLogo = (\n\t<SVG\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M5.5498 10.3501V6.3501H9.8498V10.3501H11.3498V6.1001C11.3498 5.40974 10.7902 4.8501 10.0998 4.8501H5.2998C4.60945 4.8501 4.0498 5.40974 4.0498 6.1001V10.3501H5.5498ZM20 12.6001H4V14.1001L20 14.1001V12.6001ZM14 17.1001H4V18.6001H14V17.1001Z\"\n\t\t/>\n\t</SVG>\n);\nexport default TabLogo;\n","/**\n * Wordpress dependencies.\n */\nimport { SVG, Path } from '@wordpress/components';\n\n/**\n * Tabs logo icon\n */\nconst TabsLogo = (\n\t<SVG\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M5.2998 4.8501C4.60945 4.8501 4.0498 5.40974 4.0498 6.1001V10.3501H11.3498V6.1001C11.3498 5.40974 10.7902 4.8501 10.0998 4.8501H5.2998ZM14.2002 10.3501V7.1001H18.5002V10.3501H20.0002V6.8501C20.0002 6.15974 19.4406 5.6001 18.7502 5.6001H13.9502C13.2598 5.6001 12.7002 6.15974 12.7002 6.8501V10.3501H14.2002ZM20 12.6001H4V14.1001H20V12.6001ZM14 17.1001H4V18.6001H14V17.1001Z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default TabsLogo;\n","/**\n * Wordpress dependencies.\n */\nimport { SVG, Path } from '@wordpress/components';\n\n/**\n * Tabs Vertical logo icon\n */\nconst TabsVerticalLogo = (\n\t<SVG\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M4.8501 5.2998C4.8501 4.60945 5.40974 4.0498 6.1001 4.0498H10.3501V11.3498H6.1001C5.40974 11.3498 4.8501 10.7902 4.8501 10.0998V5.2998ZM10.3501 14.2002H7.1001V18.5002H10.3501V20.0002H6.8501C6.15974 20.0002 5.6001 19.4406 5.6001 18.7502V13.9502C5.6001 13.2598 6.15974 12.7002 6.8501 12.7002H10.3501V14.2002ZM16.1001 \n4.1001H22V5.6001H12.1001V4.1001ZM16.1001 7.1001H20V8.6001H12.1001V7.1001ZM16.1001 10.1001H18V11.6001H12.1001V10.1001Z\"\n\t\t/>\n\t</SVG>\n);\n\nexport default TabsVerticalLogo;\n","/**\n * Export Components.\n */\nexport { default as TabsLogo } from './icons/tabs-logo';\nexport { default as TabLogo } from './icons/tab-logo';\nexport { default as TabsVerticalLogo } from './icons/tabs-vertical-logo';\nexport { default as ColorControlDropdown } from './color-control';\nexport { default as PatternSidebar } from './pattern-picker/pattern-sidebar';\nexport { default as PatternList } from './pattern-picker/pattern-list';\n","/**\n * WordPress dependencies\n */\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useEffect, useState, useMemo } from '@wordpress/element';\nimport { BlockPreview } from '@wordpress/block-editor';\nimport {\n\tButton,\n\tSpinner,\n\tNotice,\n\t__experimentalGrid as Grid,\t\t\t// eslint-disable-line\n\t__experimentalVStack as VStack,\t\t// eslint-disable-line\n\t__experimentalText as Text, \t// eslint-disable-line\n\t__experimentalHeading as Heading,\t// eslint-disable-line\n} from '@wordpress/components';\n\n// Constants\nconst PATTERNS_PER_PAGE = 20;\nconst LOADING_DELAY = 300; // ms\n\n/**\n * Component for displaying a list of block patterns with search and selection functionality.\n *\n * @param {Object} props - The component props.\n * @param {string} props.selectedCategory - The currently selected category for filtering patterns.\n * @param {string} props.searchTerm - The current search term for filtering patterns by title.\n * @param {Function} props.onSelect - Callback function triggered when a pattern is selected.\n *\n * @return {JSX.Element} The rendered PatternList component.\n */\nconst PatternList = ( { selectedCategory, searchTerm, onSelect } ) => {\n\tconst [ currentPage, setCurrentPage ] = useState( 1 );\n\tconst [ isLoading, setIsLoading ] = useState( true );\n\tconst [ error, setError ] = useState( null );\n\n\t// Get patterns from store with error handling\n\tconst { patterns, hasResolved } = useSelect(\n\t\t( select ) => {\n\t\t\ttry {\n\t\t\t\tconst coreSelect = select( 'core' );\n\t\t\t\treturn {\n\t\t\t\t\tpatterns: coreSelect.getBlockPatterns(),\n\t\t\t\t\thasResolved:\n\t\t\t\t\t\tcoreSelect.hasFinishedResolution( 'getBlockPatterns' ),\n\t\t\t\t};\n\t\t\t} catch ( err ) {\n\t\t\t\treturn { patterns: [], hasResolved: true, error: err };\n\t\t\t}\n\t\t},\n\t\t[ selectedCategory ]\n\t);\n\n\t// Reset to page 1 when search or category changes\n\tuseEffect( () => {\n\t\tsetCurrentPage( 1 );\n\t}, [ searchTerm, selectedCategory ] );\n\n\t// Handle loading state\n\tuseEffect( () => {\n\t\tsetIsLoading( true );\n\n\t\tif ( ! hasResolved ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst timeout = setTimeout(\n\t\t\t() => setIsLoading( false ),\n\t\t\tLOADING_DELAY\n\t\t);\n\t\treturn () => clearTimeout( timeout );\n\t}, [ patterns, searchTerm, hasResolved ] );\n\n\t// Filter patterns based on category and search term\n\tconst filteredPatterns = useMemo( () => {\n\t\tif ( ! patterns || ! Array.isArray( patterns ) ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn patterns.filter( ( pattern ) => {\n\t\t\tif ( ! pattern ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst matchesCategory =\n\t\t\t\t! selectedCategory ||\n\t\t\t\t( pattern.categories &&\n\t\t\t\t\tpattern.categories.includes( selectedCategory ) );\n\n\t\t\tconst matchesSearch =\n\t\t\t\tpattern.title &&\n\t\t\t\tpattern.title\n\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t.includes( ( searchTerm || '' ).toLowerCase() );\n\n\t\t\treturn matchesCategory && matchesSearch;\n\t\t} );\n\t}, [ patterns, selectedCategory, searchTerm ] );\n\n\t// Calculate pagination values\n\tconst totalPages = Math.max(\n\t\t1,\n\t\tMath.ceil( ( filteredPatterns?.length || 0 ) / PATTERNS_PER_PAGE )\n\t);\n\n\t// Ensure current page is valid after filtering changes\n\tuseEffect( () => {\n\t\tif ( currentPage > totalPages ) {\n\t\t\tsetCurrentPage( totalPages );\n\t\t}\n\t}, [ totalPages, currentPage ] );\n\n\t// Get paginated patterns\n\tconst paginatedPatterns = useMemo( () => {\n\t\treturn filteredPatterns.slice(\n\t\t\t( currentPage - 1 ) * PATTERNS_PER_PAGE,\n\t\t\tcurrentPage * PATTERNS_PER_PAGE\n\t\t);\n\t}, [ filteredPatterns, currentPage ] );\n\n\t// Handle pattern selection with validation\n\tconst handlePatternSelect = ( pattern ) => {\n\t\tif ( pattern && typeof onSelect === 'function' ) {\n\t\t\ttry {\n\t\t\t\tonSelect( pattern );\n\t\t\t} catch ( err ) {\n\t\t\t\tsetError(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Failed to select pattern. Please try again.',\n\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t};\n\n\t// Handle pagination\n\tconst goToPage = ( direction ) => {\n\t\tsetCurrentPage( ( prev ) => {\n\t\t\tconst newPage = prev + direction;\n\t\t\treturn Math.max( 1, Math.min( newPage, totalPages ) );\n\t\t} );\n\t};\n\n\t// Render error message if needed\n\tif ( error ) {\n\t\treturn (\n\t\t\t<Notice status=\"error\" isDismissible={ false }>\n\t\t\t\t{ error }\n\t\t\t</Notice>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"bbb-tabs-patterns-grid\">\n\t\t\t{ isLoading ? (\n\t\t\t\t<div className=\"bbb-tabs-patterns-loading\">\n\t\t\t\t\t<Spinner />\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{ searchTerm &&\n\t\t\t\t\t\t( () => {\n\t\t\t\t\t\t\tconst count = filteredPatterns.length;\n\t\t\t\t\t\t\t/* translators: %d: Number of patterns found. */\n\t\t\t\t\t\t\tconst label = sprintf(\n\t\t\t\t\t\t\t\t/* translators: %d: Number of patterns found. */\n\t\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t\t'%d pattern found',\n\t\t\t\t\t\t\t\t\t'%d patterns found',\n\t\t\t\t\t\t\t\t\tcount,\n\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tcount\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Heading\n\t\t\t\t\t\t\t\t\tclassName=\"tabs-patterns-no-results\"\n\t\t\t\t\t\t\t\t\tstyle={ { paddingBottom: '32px' } }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )() }\n\t\t\t\t\t{ filteredPatterns?.length > 0 && (\n\t\t\t\t\t\t<Grid\n\t\t\t\t\t\t\tgap={ 8 }\n\t\t\t\t\t\t\tcolumns={ [ 1, 2, 3 ] }\n\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\tclassName=\"bbb-tabs-patterns-grid-content\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ paginatedPatterns.map( ( pattern ) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\t\t\t\tpattern.name ||\n\t\t\t\t\t\t\t\t\t\t`pattern-${\n\t\t\t\t\t\t\t\t\t\t\tpattern.id || Math.random()\n\t\t\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName=\"bbb-tabs-patterns-item\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\thandlePatternSelect( pattern )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<VStack\n\t\t\t\t\t\t\t\t\t\talignment=\"top\"\n\t\t\t\t\t\t\t\t\t\talign=\"left\"\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ pattern.content ? (\n\t\t\t\t\t\t\t\t\t\t\t<BlockPreview\n\t\t\t\t\t\t\t\t\t\t\t\tblocks={ wp.blocks.parse(\n\t\t\t\t\t\t\t\t\t\t\t\t\tpattern.content\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\tviewportWidth={ 800 }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"bbb-tabs-patterns-preview-error\">\n\t\t\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Preview not available',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t<Text align=\"left\" size={ 12 }>\n\t\t\t\t\t\t\t\t\t\t\t{ pattern.title ||\n\t\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t\t'Untitled pattern',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</VStack>\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t) }\n\t\t\t\t\t{ /* Pagination Controls */ }\n\t\t\t\t\t{ filteredPatterns.length > 0 && totalPages > 1 && (\n\t\t\t\t\t\t<div className=\"bbb-tabs-patterns-pagination\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tdisabled={ currentPage === 1 }\n\t\t\t\t\t\t\t\tonClick={ () => goToPage( -1 ) }\n\t\t\t\t\t\t\t\tclassName=\"tabs-patterns-pagination-prev\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Previous', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<span className=\"tabs-patterns-pagination-status\">\n\t\t\t\t\t\t\t\t{ `${ currentPage } / ${ totalPages }` }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tdisabled={ currentPage === totalPages }\n\t\t\t\t\t\t\t\tonClick={ () => goToPage( 1 ) }\n\t\t\t\t\t\t\t\tclassName=\"tabs-patterns-pagination-next\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Next', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport default PatternList;\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport { Button, SearchControl } from '@wordpress/components';\n\n/**\n * PatternSidebar component renders a sidebar for selecting block pattern categories\n *\n * @param {Object} props - The component props.\n * @param {string|null} props.selectedCategory - The currently selected pattern category.\n * @param {Function} props.setSelectedCategory - Function to update the selected pattern category.\n * @param {string} props.searchTerm - The current search term for filtering patterns by title.\n * @param {Function} props.setSearchTerm - Function to update the search term for filtering patterns.\n *\n * @return {JSX.Element} The rendered sidebar component.\n */\nconst PatternSidebar = ( {\n\tselectedCategory,\n\tsetSelectedCategory,\n\tsearchTerm,\n\tsetSearchTerm,\n} ) => {\n\t// Fetch pattern categories and block patterns with error handling.\n\tconst { patternCategories, blockPatterns, error } = useSelect(\n\t\t( select ) => {\n\t\t\ttry {\n\t\t\t\tconst core = select( 'core' );\n\t\t\t\treturn {\n\t\t\t\t\tpatternCategories: core.getBlockPatternCategories() || [],\n\t\t\t\t\tblockPatterns: core.getBlockPatterns() || [],\n\t\t\t\t\terror: null,\n\t\t\t\t};\n\t\t\t} catch ( err ) {\n\t\t\t\treturn {\n\t\t\t\t\tpatternCategories: [],\n\t\t\t\t\tblockPatterns: [],\n\t\t\t\t\terror: err,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t[]\n\t);\n\n\t// Memoize the filtered categories to optimize performance.\n\tconst filteredCategories = useMemo( () => {\n\t\treturn patternCategories.filter( ( category ) =>\n\t\t\tblockPatterns.some(\n\t\t\t\t( pattern ) =>\n\t\t\t\t\tArray.isArray( pattern.categories ) &&\n\t\t\t\t\tpattern.categories.includes( category.name )\n\t\t\t)\n\t\t);\n\t}, [ patternCategories, blockPatterns ] );\n\n\t// Show an error message if data fetching fails.\n\tif ( error ) {\n\t\treturn (\n\t\t\t<div className=\"bbb-tabs-patterns-sidebar--error\">\n\t\t\t\t{ __(\n\t\t\t\t\t'Failed to load block patterns.',\n\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Simple loading state when no data is available.\n\tif ( ! patternCategories.length && ! blockPatterns.length ) {\n\t\treturn (\n\t\t\t<div className=\"bbb-tabs-patterns-sidebar--loading\">\n\t\t\t\t{ __( 'Loading…', 'blablablocks-tabs-block' ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"bbb-tabs-patterns-sidebar\">\n\t\t\t<SearchControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tvalue={ searchTerm }\n\t\t\t\tplaceholder={ __( 'Search', 'blablablocks-tabs-block' ) }\n\t\t\t\tonChange={ setSearchTerm }\n\t\t\t/>\n\t\t\t{ ! searchTerm && (\n\t\t\t\t<div className=\"bbb-tabs-patterns-sidebar__list\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tisPressed={ selectedCategory === null }\n\t\t\t\t\t\tonClick={ () => setSelectedCategory( null ) }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\ttextAlign: 'left',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'All', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t\t<span className=\"bbb-tabs-patterns-sidebar__count\">\n\t\t\t\t\t\t\t{ blockPatterns.length }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</Button>\n\t\t\t\t\t{ filteredCategories.map( ( { name, label } ) => {\n\t\t\t\t\t\tconst count =\n\t\t\t\t\t\t\tblockPatterns.filter(\n\t\t\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t\t\tArray.isArray( pattern.categories ) &&\n\t\t\t\t\t\t\t\t\tpattern.categories.includes( name )\n\t\t\t\t\t\t\t).length || 0;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tkey={ name }\n\t\t\t\t\t\t\t\tisPressed={ selectedCategory === name }\n\t\t\t\t\t\t\t\tonClick={ () => setSelectedCategory( name ) }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\ttextAlign: 'left',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t<span className=\"bbb-tabs-patterns-sidebar__count\">\n\t\t\t\t\t\t\t\t\t{ count }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t</div>\n\t);\n};\n\nexport default PatternSidebar;\n","/**\n * WordPress dependencies\n */\nimport clsx from 'clsx';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useMemo } from '@wordpress/element';\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tRichText,\n\tBlockControls,\n\tstore as blockEditorStore,\n\tgetTypographyClassesAndStyles as useTypographyProps,\n\tInspectorControls,\n} from '@wordpress/block-editor';\nimport { ToggleControl, PanelBody } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { TabFill, TabsListSlot } from '../utils/slotFill';\nimport Placeholder from './placeholder';\nimport IconPicker from '../components/icon-picker';\nimport { getTabButtonStyles } from '../utils/style';\n\n/**\n * The Edit component for the Tab block.\n *\n * @param {Object} props - Component props.\n * @param {string} props.clientId - The client ID for this block instance.\n * @param {boolean} props.isSelected - Whether the block is currently selected.\n * @param {Object} props.attributes - The block attributes.\n * @param {Function} props.setAttributes - Function to update block attributes.\n * @return {JSX.Element} The component rendering for the block editor.\n */\nexport default function Edit( {\n\tclientId,\n\tisSelected,\n\tattributes,\n\tsetAttributes,\n} ) {\n\tconst { updateBlockAttributes, selectBlock } =\n\t\tuseDispatch( blockEditorStore );\n\n\t/**\n\t * Retrieve block-related data using the `useSelect` hook.\n\t */\n\tconst {\n\t\thasChildBlocks,\n\t\ttabsClientId,\n\t\thasTabSelected,\n\t\tisDefaultTab,\n\t\tblockIndex,\n\t\tisTabsClientSelected,\n\t\tforceDisplay,\n\t\thasInnerBlocksSelected,\n\t\tlastSelectedTabClientId,\n\t\tparentAttrs,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tisBlockSelected,\n\t\t\t\tgetMultiSelectedBlocksEndClientId,\n\t\t\t} = select( 'core/block-editor' );\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tconst parentBlockAttrs = getBlockAttributes( rootClientId );\n\t\t\tconst innerHasTabSelected = hasSelectedInnerBlock(\n\t\t\t\trootClientId,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tconst innerHasInnerBlocksSelected = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tconst innerBlockIndex = getBlockIndex( clientId );\n\t\t\tconst totalTabsCount = getBlockOrder( rootClientId ).length;\n\n\t\t\t// Check if activeTab is a valid index and if this tab is the active one\n\t\t\tconst activeTab = parentBlockAttrs?.activeTab;\n\t\t\tconst isValidActiveTab =\n\t\t\t\ttypeof activeTab === 'number' &&\n\t\t\t\tactiveTab >= 0 &&\n\t\t\t\tactiveTab < totalTabsCount;\n\t\t\tconst innerIsDefaultTab = isValidActiveTab\n\t\t\t\t? activeTab === innerBlockIndex\n\t\t\t\t: innerBlockIndex === 0;\n\t\t\tconst innerIsTabsClientSelected = isBlockSelected( rootClientId );\n\n\t\t\treturn {\n\t\t\t\tblockIndex: innerBlockIndex,\n\t\t\t\ttabsClientId: rootClientId,\n\t\t\t\thasChildBlocks: getBlockOrder( clientId ).length > 0,\n\t\t\t\thasInnerBlocksSelected: innerHasInnerBlocksSelected,\n\t\t\t\tisTabsClientSelected: innerIsTabsClientSelected,\n\t\t\t\tisDefaultTab: innerIsDefaultTab,\n\t\t\t\tforceDisplay: innerIsDefaultTab && innerIsTabsClientSelected,\n\t\t\t\thasTabSelected: innerHasTabSelected,\n\t\t\t\tlastSelectedTabClientId: getMultiSelectedBlocksEndClientId(),\n\t\t\t\tparentAttrs: parentBlockAttrs,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t/**\n\t * Determines if the current tab should be displayed as selected based on\n\t * various selection states and conditions.\n\t *\n\t * @type {boolean}\n\t */\n\tconst isTabSelected = useMemo( () => {\n\t\tif ( isSelected || hasInnerBlocksSelected || forceDisplay ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (\n\t\t\tisDefaultTab &&\n\t\t\t! isTabsClientSelected &&\n\t\t\t! isSelected &&\n\t\t\t! hasTabSelected\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If multiple tabs are selected, only show the last one\n\t\tif ( hasTabSelected && lastSelectedTabClientId === clientId ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}, [\n\t\tclientId,\n\t\tisSelected,\n\t\thasInnerBlocksSelected,\n\t\tisDefaultTab,\n\t\tforceDisplay,\n\t\tisTabsClientSelected,\n\t\thasTabSelected,\n\t\tlastSelectedTabClientId,\n\t] );\n\n\tconst typographyProps = useTypographyProps( parentAttrs );\n\n\t/**\n\t * Props for the block container.\n\t * @type {Object}\n\t */\n\tconst blockProps = useBlockProps( {\n\t\tclassName: clsx(\n\t\t\t'blablablocks-tab',\n\t\t\t'blablablocks-tab-container',\n\t\t\t'blablablocks-tabs__' + parentAttrs.orientation,\n\t\t\t'blablablocks-tabs__' + parentAttrs.verticalPosition,\n\t\t\t'blablablocks-tabs-icon__' + parentAttrs.iconPosition\n\t\t),\n\t} );\n\n\t/**\n\t * Props for the inner blocks container.\n\t * @type {Object}\n\t */\n\tconst innerBlocksProps = useInnerBlocksProps( {\n\t\tclassName: 'blablablocks-tab-content',\n\t\t'aria-labelledby': `tab-${ attributes.tabId }`,\n\t\tid: `tab-${ attributes.tabId }`,\n\t\trole: 'tabpanel',\n\t\ttabIndex: isTabSelected ? 0 : -1,\n\t} );\n\n\t/**\n\t * Sets the default tab by updating the `activeTab` attribute of the parent Tabs block.\n\t *\n\t * @param {boolean} value - The value to set for the active tab.\n\t */\n\tconst handleSetDefault = ( value ) => {\n\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\tactiveTab: value ? blockIndex : 0,\n\t\t} );\n\t};\n\n\t/**\n\t * Set the `tabId` attribute.\n\t *\n\t * This effect ensures each tab has a unique identifier by setting the tabId\n\t * attribute to the clientId. This also handles duplication cases where the\n\t * tabId might have been copied from another block.\n\t */\n\tuseEffect( () => {\n\t\tif ( attributes.tabId !== clientId ) {\n\t\t\tsetAttributes( { tabId: clientId } );\n\t\t}\n\t}, [ clientId, attributes.tabId ] );\n\n\treturn (\n\t\t<>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<TabFill tabsClientId={ tabsClientId }>\n\t\t\t\t\t<div\n\t\t\t\t\t\tid={ attributes.tabId }\n\t\t\t\t\t\tclassName={ clsx( 'blablablock-tab-btn', {\n\t\t\t\t\t\t\t'is-bbb-active-tab': isTabSelected,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\ttabIndex={ 0 }\n\t\t\t\t\t\taria-selected={ isTabSelected }\n\t\t\t\t\t\taria-controls={ attributes.tabId }\n\t\t\t\t\t\tonClick={ () => selectBlock( clientId ) }\n\t\t\t\t\t\tonKeyDown={ ( e ) => {\n\t\t\t\t\t\t\tif ( e.key === 'Enter' || e.key === ' ' ) {\n\t\t\t\t\t\t\t\t// Don't handle if clicking on or inside the RichText component\n\t\t\t\t\t\t\t\tif ( e.target.closest( '.tab-button-text' ) ) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tselectBlock( clientId );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...getTabButtonStyles( parentAttrs, isTabSelected ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ /* Render the tab icon if it exists */ }\n\t\t\t\t\t\t{ attributes.tabIcon && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"bbb-tab-icon\"\n\t\t\t\t\t\t\t\tdangerouslySetInnerHTML={ {\n\t\t\t\t\t\t\t\t\t__html: attributes.tabIcon,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ /* Render the tab name */ }\n\t\t\t\t\t\t<RichText\n\t\t\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'tab-button-text',\n\t\t\t\t\t\t\t\ttypographyProps.className\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\t\t\tvalue={ attributes.tabname }\n\t\t\t\t\t\t\tplaceholder={ __( 'Add Tab Label…' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\ttabname: value,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstyle={ typographyProps.style }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</TabFill>\n\t\t\t\t{ isTabSelected && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<TabsListSlot\n\t\t\t\t\t\t\tkey={ blockIndex }\n\t\t\t\t\t\t\ttabsClientId={ tabsClientId }\n\t\t\t\t\t\t\tattributes={ parentAttrs }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ hasChildBlocks ? (\n\t\t\t\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Placeholder clientId={ clientId } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</div>\n\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody\n\t\t\t\t\ttitle={ __( 'Settings', 'blablablocks-tabs-block' ) }\n\t\t\t\t\tinitialOpen={ true }\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __(\n\t\t\t\t\t\t\t'Set as default tab',\n\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'This tab will be active when the page first loads.',\n\t\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tchecked={ isDefaultTab }\n\t\t\t\t\t\tonChange={ ( value ) => handleSetDefault( value ) }\n\t\t\t\t\t/>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\n\t\t\t<BlockControls>\n\t\t\t\t<IconPicker\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useCallback } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { createBlocksFromInnerBlocksTemplate, parse } from '@wordpress/blocks';\nimport {\n\tModal,\n\tPlaceholder as PlaceholderComponent,\n\tButton,\n\tNotice,\n} from '@wordpress/components';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { TabLogo, PatternSidebar, PatternList } from '../components';\n\n/**\n * This component serves as a placeholder for the Tab block, displaying a block variation picker.\n * It allows users to choose from predefined variations for initializing the block with default settings.\n *\n * @param {Object} props Component props.\n * @param {string} props.clientId The client ID for this block instance.\n * @return {JSX.Element} The placeholder component for the Tabs block.\n */\nfunction Placeholder( { clientId } ) {\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst blockProps = useBlockProps( { className: 'bbb-tab-placeholder' } );\n\tconst [ step, setStep ] = useState( null );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ selectedCategory, setSelectedCategory ] = useState( null );\n\tconst [ searchTerm, setSearchTerm ] = useState( '' );\n\tconst [ error, setError ] = useState( null );\n\n\t/**\n\t * Creates a blank tab with default content\n\t */\n\tconst handleSkip = useCallback( () => {\n\t\ttry {\n\t\t\tconst defaultTemplate = [ [ 'core/paragraph' ] ];\n\t\t\tconst blocks =\n\t\t\t\tcreateBlocksFromInnerBlocksTemplate( defaultTemplate );\n\t\t\treplaceInnerBlocks( clientId, blocks, true );\n\t\t\tsetStep( 'blank' );\n\t\t} catch ( err ) {\n\t\t\tsetError(\n\t\t\t\t__(\n\t\t\t\t\t'Failed to create blank tab. Please try again.',\n\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ clientId, replaceInnerBlocks ] );\n\n\t/**\n\t * Applies a selected pattern to the tab content\n\t *\n\t * @param {Object} pattern - The pattern object containing content to apply\n\t */\n\tconst applyPattern = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern || ! pattern.content ) {\n\t\t\t\tsetError(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Invalid pattern selected. Please choose another pattern.',\n\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst parsedBlocks = parse( pattern.content );\n\n\t\t\t\tif ( ! parsedBlocks || parsedBlocks.length === 0 ) {\n\t\t\t\t\tthrow new Error( 'No valid blocks found in pattern' );\n\t\t\t\t}\n\n\t\t\t\treplaceInnerBlocks( clientId, parsedBlocks, true );\n\t\t\t\tsetIsModalOpen( false );\n\t\t\t\tsetStep( 'pattern' );\n\t\t\t} catch ( err ) {\n\t\t\t\tsetError(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Failed to apply pattern. Please try another one.',\n\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ clientId, replaceInnerBlocks ]\n\t);\n\n\t/**\n\t * Clears current error message\n\t */\n\tconst dismissError = () => {\n\t\tsetError( null );\n\t};\n\n\t/**\n\t * Opens pattern selection modal\n\t */\n\tconst openPatternModal = () => {\n\t\tsetIsModalOpen( true );\n\t\tsetError( null );\n\t};\n\n\t/**\n\t * Closes pattern selection modal\n\t */\n\tconst closePatternModal = () => {\n\t\tsetIsModalOpen( false );\n\t};\n\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t{ error && (\n\t\t\t\t<Notice\n\t\t\t\t\tstatus=\"error\"\n\t\t\t\t\tisDismissible={ true }\n\t\t\t\t\tonRemove={ dismissError }\n\t\t\t\t>\n\t\t\t\t\t{ error }\n\t\t\t\t</Notice>\n\t\t\t) }\n\n\t\t\t{ ! step && (\n\t\t\t\t<PlaceholderComponent\n\t\t\t\t\ticon={ TabLogo }\n\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t'Choose a pattern or start blank.',\n\t\t\t\t\t\t'blablablocks-tabs-block'\n\t\t\t\t\t) }\n\t\t\t\t\tlabel={ __( 'Tab', 'blablablocks-tabs-block' ) }\n\t\t\t\t>\n\t\t\t\t\t<Button variant=\"primary\" onClick={ openPatternModal }>\n\t\t\t\t\t\t{ __( 'Choose', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button variant=\"secondary\" onClick={ handleSkip }>\n\t\t\t\t\t\t{ __( 'Start blank', 'blablablocks-tabs-block' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</PlaceholderComponent>\n\t\t\t) }\n\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Patterns', 'blablablocks-tabs-block' ) }\n\t\t\t\t\tisFullScreen\n\t\t\t\t\tonRequestClose={ closePatternModal }\n\t\t\t\t>\n\t\t\t\t\t<div className=\"bbb-tabs-patterns-container\">\n\t\t\t\t\t\t<PatternSidebar\n\t\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\t\tsetSelectedCategory={ setSelectedCategory }\n\t\t\t\t\t\t\tsetSearchTerm={ setSearchTerm }\n\t\t\t\t\t\t\tsearchTerm={ searchTerm }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PatternList\n\t\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\t\tsearchTerm={ searchTerm }\n\t\t\t\t\t\t\tonSelect={ applyPattern }\n\t\t\t\t\t\t\tonError={ setError }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default Placeholder;\n","/**\n * Wordpress dependencies\n */\nimport { InnerBlocks } from '@wordpress/block-editor';\n\n/**\n * The save function defines the way in which the different attributes should\n * be combined into the final markup, which is then serialized by the block\n * editor into `post_content`.\n *\n * @return {JSX.Element}\tThe block's save component.\n */\nexport default function save() {\n\treturn <InnerBlocks.Content />;\n}\n","/**\n * WordPress dependencies\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { createSlotFill } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { getTabsContainerProps } from './style';\n\n/**\n * Create a unique SlotFill pair using a Symbol to avoid name collisions.\n */\nconst { Fill, Slot } = createSlotFill(Symbol('BlaBlaBlocksTabsList'));\n\n/**\n * TabFill Component\n *\n * This component registers a Fill for the BlaBlaBlocksTabsList Slot.\n *\n * @param {Object} props\n * @param {React.ReactNode} props.children - Elements to be rendered inside the Fill.\n * @param {string} props.tabsClientId - Unique identifier used to scope the Fill to a specific Tabs instance.\n * @return {JSX.Element} A Fill component scoped to the specified Tabs instance.\n */\nexport const TabFill = ({ children, tabsClientId }) => {\n\treturn <Fill name={`BlaBlaBlocksTabsList-${tabsClientId}`}>{children}</Fill>;\n};\n\n/**\n * BlaBlaBlocksTabsListSlot Component\n *\n * This component renders the Slot for a specific Tabs instance.\n * Any TabFill with a matching name will render inside this Slot.\n *\n * @param {Object} props\n * @param {string} props.tabsClientId - Unique identifier used to scope the Slot to a specific Tabs instance.\n * @param {Object} props.attributes - Block attributes used to derive styling props.\n * @return {JSX.Element} A Slot component that renders TabFill components matching the specified Tabs instance.\n */\nexport const TabsListSlot = ({ tabsClientId, attributes }) => {\n\tconst { className, style } = getTabsContainerProps(attributes);\n\n\treturn (\n\t\t<Slot\n\t\t\tname={`BlaBlaBlocksTabsList-${tabsClientId}`}\n\t\t\tbubblesVirtually\n\t\t\tas=\"div\"\n\t\t\trole=\"tablist\"\n\t\t\tclassName={clsx(className, 'blablablocks-tabs-buttons')}\n\t\t\tstyle={style}\n\t\t/>\n\t);\n};\n","/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGetGapCSSValue as getGapCSSValue,\t\t\t\t\t\t\t// eslint-disable-line\n\t__experimentalUseBorderProps as useBorderProps,\t\t\t\t\t\t\t// eslint-disable-line\n\t__experimentalGetColorClassesAndStyles as getColorClassesAndStyles,\t\t// eslint-disable-line\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles\t// eslint-disable-line\n} from '@wordpress/block-editor';\n\nconst DEFAULT_GAP = '0.5em';\n\n/**\n * Generates CSS gap styles for a block based on the provided gap and orientation.\n *\n * @param {string|object} blockGap - The gap value for the block. Can be a string (e.g., \"10px\") or an object with `top` and `left` properties.\n * @param {string} [orientation='horizontal'] - The orientation of the block. Can be 'horizontal' or 'vertical'.\n * @return {Array<string>} - An array containing two CSS gap values\n */\nconst generateGapStyles = ( blockGap, orientation = 'horizontal' ) => {\n\tlet tabListGap = DEFAULT_GAP;\n\tlet tabGap = DEFAULT_GAP;\n\n\tif ( typeof blockGap === 'string' ) {\n\t\ttabListGap = blockGap;\n\t\ttabGap = blockGap;\n\t} else if ( typeof blockGap === 'object' && blockGap !== null ) {\n\t\ttabListGap = blockGap.top || DEFAULT_GAP;\n\t\ttabGap = blockGap.left || DEFAULT_GAP;\n\t}\n\n\t// Convert to valid CSS values\n\tconst main = getGapCSSValue( tabListGap );\n\tconst cross = getGapCSSValue( tabGap );\n\n\t// If vertical, swap main⇄cross\n\treturn orientation === 'vertical' ? [ main, cross ] : [ cross, main ];\n};\n\n/**\n * Resolves a spacing size value into a usable CSS value.\n *\n * @param {string|number} value - The input spacing size value.\n * @param {string|number} defaultValue - The default value.\n * @return {string} - A valid CSS spacing size value.\n */\nconst resolveSpacingSizeValue = ( value, defaultValue = '0px' ) => {\n\tif ( typeof value === 'string' ) {\n\t\tif ( value.startsWith( 'var:' ) ) {\n\t\t\t// Convert \"var:some|value\" into \"var(--wp--some--value)\"\n\t\t\treturn `var(${ value\n\t\t\t\t.replace( 'var:', '--wp--' )\n\t\t\t\t.replace( /\\|/g, '--' ) })`;\n\t\t}\n\t\treturn value; // If it's a valid CSS string, return as-is\n\t}\n\n\treturn typeof value === 'number' ? `${ value }px` : defaultValue;\n};\n\n/**\n * Helper to get border props with numeric radius handling.\n *\n * @param {Object} borderAttributes - Attributes object to pass to useBorderProps\n * @param {Function} radiusPath - Function that returns the border radius value\n * @return {Object} Border props with className and style, including converted numeric radius\n */\nconst getBorderPropsWithRadius = ( borderAttributes, radiusPath ) => {\n\tconst rawBorder = useBorderProps( borderAttributes );\n\tconst borderRadius = radiusPath?.();\n\n\treturn {\n\t\t...rawBorder,\n\t\tstyle: {\n\t\t\t...rawBorder.style,\n\t\t\t...( typeof borderRadius === 'number' && {\n\t\t\t\tborderRadius: `${ borderRadius }px`,\n\t\t\t} ),\n\t\t},\n\t};\n};\n\n/**\n * Helper function to resolve color value based on slug\n *\n * @param {Object} colorObj - Color object with color and slug properties\n * @param {string} fallback - Fallback color value\n * @return {string} - CSS color value or custom property\n */\nconst resolveColorValue = ( colorObj, fallback ) => {\n\tif ( ! colorObj ) {\n\t\treturn fallback;\n\t}\n\n\t// If we have a slug, use the WordPress preset color custom property\n\tif ( colorObj.slug ) {\n\t\treturn `var(--wp--preset--color--${ colorObj.slug })`;\n\t}\n\n\t// Otherwise use the direct color value\n\treturn colorObj.color || fallback;\n};\n\n/**\n * Generates a set of CSS variable mappings based on provided attributes.\n * The returned object excludes variables with invalid or undefined values.\n *\n * @param {Object} attributes - The attributes used to customize styles.\n * @return {Object} - An object with CSS variable definitions.\n */\nexport const generateStyles = ( attributes = {} ) => {\n\tconst styles = {};\n\n\t// Padding\n\tconst padding = attributes.tabPadding || {};\n\tstyles[ '--bbb-tab-padding' ] = [\n\t\tresolveSpacingSizeValue( padding.top, '5px' ),\n\t\tresolveSpacingSizeValue( padding.right, '15px' ),\n\t\tresolveSpacingSizeValue( padding.bottom, '5px' ),\n\t\tresolveSpacingSizeValue( padding.left, '15px' ),\n\t].join( ' ' );\n\n\t// Colors for different states\n\tconst colorDefaults = {\n\t\tdefault: { text: '#000', bg: '#fff', icon: '#000' },\n\t\thover: { text: '#fff', bg: '#000', icon: '#fff' },\n\t\tactive: { text: '#fff', bg: '#000', icon: '#fff' },\n\t};\n\n\tObject.entries( colorDefaults ).forEach( ( [ state, defaults ] ) => {\n\t\tconst stateKey = state === 'default' ? 'default' : state;\n\n\t\t// Text color\n\t\tstyles[ `--bbb-tab-text-${ state }-color` ] = resolveColorValue(\n\t\t\tattributes.tabTextColor?.[ stateKey ],\n\t\t\tdefaults.text\n\t\t);\n\n\t\t// Background color\n\t\tstyles[ `--bbb-tab-background-${ state }-color` ] = resolveColorValue(\n\t\t\tattributes.tabBackgroundColor?.[ stateKey ],\n\t\t\tdefaults.bg\n\t\t);\n\n\t\t// Icon color\n\t\tconst iconColorValue =\n\t\t\tattributes.tabIconColor?.[ stateKey ] ||\n\t\t\t( state === 'active' ? attributes.tabIconColor?.default : null );\n\t\tstyles[ `--bbb-tab-icon-${ state }-color` ] = resolveColorValue(\n\t\t\ticonColorValue,\n\t\t\tdefaults.icon\n\t\t);\n\t} );\n\n\t// Other styles\n\tstyles[ '--bbb-tab-buttons-justify-content' ] =\n\t\tattributes.justification || 'left';\n\tstyles[ '--bbb-tab-icon-size' ] = `${ attributes.iconSize || 24 }px`;\n\n\t// Gap styles\n\tconst [ listGap, tabsGap ] = generateGapStyles(\n\t\tattributes.style?.spacing?.blockGap || null,\n\t\tattributes.orientation\n\t);\n\tstyles[ '--bbb-tabs-list-gap' ] = listGap;\n\tstyles[ '--bbb-tabs-gap' ] = tabsGap;\n\n\treturn styles;\n};\n\n/**\n * Return consolidated className + style for the Tabs container:\n * – spacing classes & styles\n * – border props (with numeric radius)\n * – horizontal margin based on orientation/justification\n *\n * @param {Object} attributes - The attributes used to customize styles.\n * @return {{ className: string, style: Object }} An object containing the `className` string and inline `style` object.\n */\nexport function getTabsContainerProps( attributes ) {\n\t// spacing\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\n\t// color\n\tconst colorProps = getColorClassesAndStyles( attributes );\n\n\t// border (useBorderProps gives { className, style })\n\tconst borderProps = getBorderPropsWithRadius(\n\t\tattributes,\n\t\t() => attributes.style?.border?.radius\n\t);\n\n\t// margin\n\tconst marginStyle =\n\t\tattributes.orientation === 'horizontal'\n\t\t\t? ( () => {\n\t\t\t\t\tswitch ( attributes.justification ) {\n\t\t\t\t\t\tcase 'right':\n\t\t\t\t\t\t\treturn { margin: '0 0 0 auto' };\n\t\t\t\t\t\tcase 'center':\n\t\t\t\t\t\t\treturn { margin: '0 auto' };\n\t\t\t\t\t\tcase 'left':\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn { margin: '0 0 auto' };\n\t\t\t\t\t}\n\t\t\t } )()\n\t\t\t: {};\n\n\t// width\n\tconst width =\n\t\tattributes.orientation === 'vertical'\n\t\t\t? { minWidth: `${ attributes.width || 50 }%` }\n\t\t\t: {};\n\n\t// combine\n\treturn {\n\t\tclassName: [\n\t\t\tspacingProps.classes,\n\t\t\tborderProps.className,\n\t\t\tcolorProps.className,\n\t\t]\n\t\t\t.filter( Boolean )\n\t\t\t.join( ' ' ),\n\t\tstyle: {\n\t\t\t...spacingProps.style,\n\t\t\t...borderProps.style,\n\t\t\t...colorProps.style,\n\t\t\t...marginStyle,\n\t\t\t...width,\n\t\t},\n\t};\n}\n\n/**\n * Return consolidated style for the Tab button:\n *\n * @param {Object} attributes - The attributes used to customize styles.\n * @param {boolean} isActive - Whether this tab is currently active.\n * @return {{ style: Object }} An object containing the inline `style` for the tab button.\n */\nexport function getTabButtonStyles( attributes, isActive ) {\n\t// If tabBorder has an onActive flag and it's true, only apply border when this tab is active.\n\tconst shouldApplyBorder = attributes?.tabBorder?.onActive ? isActive : true;\n\n\t// Tab Border (only if allowed by shouldApplyBorder)\n\tconst borderInput = shouldApplyBorder\n\t\t? { style: attributes?.tabBorder }\n\t\t: { style: {} };\n\n\tconst borderProps = getBorderPropsWithRadius(\n\t\tborderInput,\n\t\t() => attributes?.tabBorder?.border?.radius\n\t);\n\n\treturn {\n\t\tstyle: { ...borderProps.style },\n\t};\n}\n","module.exports = window[\"React\"];","module.exports = window[\"ReactJSXRuntime\"];","module.exports = window[\"wp\"][\"blockEditor\"];","module.exports = window[\"wp\"][\"blocks\"];","module.exports = window[\"wp\"][\"components\"];","module.exports = window[\"wp\"][\"data\"];","module.exports = window[\"wp\"][\"element\"];","module.exports = window[\"wp\"][\"i18n\"];","module.exports = window[\"wp\"][\"primitives\"];","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Wordpress dependencies\n */\nimport { registerBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport Edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\nimport { TabLogo } from '../components';\n\n/**\n * Register a slide block\n */\nregisterBlockType( metadata.name, {\n\ticon: TabLogo,\n\tedit: Edit,\n\tsave,\n} );\n"],"names":["__","ColorPalette","__experimentalUseMultipleOriginColorsAndGradients","useMultipleOriginColorsAndGradients","Button","TabPanel","Dropdown","ColorIndicator","__experimentalZStack","ZStack","__experimentalHStack","HStack","__experimentalText","Text","jsx","_jsx","jsxs","_jsxs","resolveColorSelection","rawColor","colorGradientSettings","pickedColor","color","undefined","slug","normalize","c","String","trim","toLowerCase","target","palettes","Array","isArray","colors","palette","entry","includes","replace","ColorControlDropdown","label","colorValue","onChangeColor","hasHover","hasActive","handleChange","tabName","normalized","defaultIndicator","default","hoverIndicator","hover","activeIndicator","active","popoverProps","placement","offset","shift","contentClassName","renderToggle","isOpen","onToggle","className","onClick","children","justify","renderContent","tabs","name","title","tab","__experimentalIsRenderedInSidebar","value","onChange","enableAlpha","useState","Modal","ToolbarButton","Fragment","_Fragment","IconPicker","attributes","setAttributes","setOpen","svgCode","setSvgCode","useEffect","TextareaControl","Card","Notice","__experimentalVStack","VStack","__experimentalGrid","Grid","IconPickerModal","isSvgValid","setIsSvgValid","validationError","setValidationError","closeModal","validateSvg","svg","trimmed","matches","match","length","joinedSVGs","join","handleSvgCodeChange","handleInsertSvg","tabIcon","initialCode","size","onRequestClose","align","templateColumns","gap","style","height","__nextHasNoMarginBottom","hideLabelFromVision","placeholder","spacing","isRounded","dangerouslySetInnerHTML","__html","status","isDismissible","variant","disabled","ToolbarGroup","ToolbarDropdownMenu","code","reset","IconPickerToolbarButton","controls","icon","isDisabled","text","SVG","Path","TabLogo","width","viewBox","xmlns","fillRule","clipRule","d","TabsLogo","TabsVerticalLogo","PatternSidebar","PatternList","_n","sprintf","useSelect","useMemo","BlockPreview","Spinner","__experimentalHeading","Heading","PATTERNS_PER_PAGE","LOADING_DELAY","selectedCategory","searchTerm","onSelect","currentPage","setCurrentPage","isLoading","setIsLoading","error","setError","patterns","hasResolved","select","coreSelect","getBlockPatterns","hasFinishedResolution","err","timeout","setTimeout","clearTimeout","filteredPatterns","filter","pattern","matchesCategory","categories","matchesSearch","totalPages","Math","max","ceil","paginatedPatterns","slice","handlePatternSelect","goToPage","direction","prev","newPage","min","count","paddingBottom","columns","map","alignment","content","blocks","wp","parse","viewportWidth","id","random","SearchControl","setSelectedCategory","setSearchTerm","patternCategories","blockPatterns","core","getBlockPatternCategories","filteredCategories","category","some","__next40pxDefaultSize","isPressed","display","justifyContent","textAlign","clsx","useDispatch","useBlockProps","useInnerBlocksProps","RichText","BlockControls","store","blockEditorStore","getTypographyClassesAndStyles","useTypographyProps","InspectorControls","ToggleControl","PanelBody","TabFill","TabsListSlot","Placeholder","getTabButtonStyles","Edit","clientId","isSelected","updateBlockAttributes","selectBlock","hasChildBlocks","tabsClientId","hasTabSelected","isDefaultTab","blockIndex","isTabsClientSelected","forceDisplay","hasInnerBlocksSelected","lastSelectedTabClientId","parentAttrs","getBlockOrder","getBlockIndex","getBlockRootClientId","getBlockAttributes","hasSelectedInnerBlock","isBlockSelected","getMultiSelectedBlocksEndClientId","rootClientId","parentBlockAttrs","innerHasTabSelected","innerHasInnerBlocksSelected","innerBlockIndex","totalTabsCount","activeTab","isValidActiveTab","innerIsDefaultTab","innerIsTabsClientSelected","isTabSelected","typographyProps","blockProps","orientation","verticalPosition","iconPosition","innerBlocksProps","tabId","role","tabIndex","handleSetDefault","onKeyDown","e","key","closest","preventDefault","tagName","withoutInteractiveFormatting","tabname","initialOpen","help","checked","useCallback","createBlocksFromInnerBlocksTemplate","PlaceholderComponent","replaceInnerBlocks","step","setStep","isModalOpen","setIsModalOpen","handleSkip","defaultTemplate","applyPattern","parsedBlocks","Error","dismissError","openPatternModal","closePatternModal","onRemove","instructions","isFullScreen","onError","InnerBlocks","save","Content","React","createSlotFill","getTabsContainerProps","Fill","Slot","Symbol","bubblesVirtually","as","__experimentalGetGapCSSValue","getGapCSSValue","__experimentalUseBorderProps","useBorderProps","__experimentalGetColorClassesAndStyles","getColorClassesAndStyles","__experimentalGetSpacingClassesAndStyles","getSpacingClassesAndStyles","DEFAULT_GAP","generateGapStyles","blockGap","tabListGap","tabGap","top","left","main","cross","resolveSpacingSizeValue","defaultValue","startsWith","getBorderPropsWithRadius","borderAttributes","radiusPath","rawBorder","borderRadius","resolveColorValue","colorObj","fallback","generateStyles","styles","padding","tabPadding","right","bottom","colorDefaults","bg","Object","entries","forEach","state","defaults","stateKey","tabTextColor","tabBackgroundColor","iconColorValue","tabIconColor","justification","iconSize","listGap","tabsGap","spacingProps","colorProps","borderProps","border","radius","marginStyle","margin","minWidth","classes","Boolean","isActive","shouldApplyBorder","tabBorder","onActive","borderInput","registerBlockType","metadata","edit"],"sourceRoot":""} -
blablablocks-tabs-block/trunk/readme.txt
r3411758 r3422441 5 5 Tested up to: 6.9 6 6 Requires PHP: 7.4 7 Stable tag: 1.1. 17 Stable tag: 1.1.2 8 8 License: MIT 9 9 License URI: https://opensource.org/licenses/MIT … … 203 203 == Changelog == 204 204 205 = 1.1.2 = 206 * Fix: Ensure tabId is always synced with clientId to prevent duplication issues by @thomasnavarro in [#32](https://github.com/lubusIN/blablablocks-tabs-block/pull/32) 207 205 208 = 1.1.1 = 206 209 * Fix: Escape special characters in tab titles to prevent block crash [#30](https://github.com/lubusIN/blablablocks-tabs-block/pull/30)
Note: See TracChangeset
for help on using the changeset viewer.