File: /www/wwwroot/www.waciwang.com/wp-content/plugins/gutenberg/build/scripts/patterns/index.js.map
{
"version": 3,
"sources": ["package-external:@wordpress/data", "package-external:@wordpress/blocks", "package-external:@wordpress/core-data", "package-external:@wordpress/block-editor", "package-external:@wordpress/private-apis", "package-external:@wordpress/components", "package-external:@wordpress/element", "package-external:@wordpress/i18n", "vendor-external:react/jsx-runtime", "package-external:@wordpress/notices", "package-external:@wordpress/compose", "package-external:@wordpress/html-entities", "package-external:@wordpress/primitives", "package-external:@wordpress/url", "package-external:@wordpress/a11y", "../../../packages/patterns/src/store/index.js", "../../../packages/patterns/src/store/reducer.js", "../../../packages/patterns/src/store/actions.js", "../../../packages/patterns/src/constants.js", "../../../packages/patterns/src/store/constants.js", "../../../packages/patterns/src/store/selectors.js", "../../../packages/patterns/src/lock-unlock.js", "../../../packages/patterns/src/components/overrides-panel.js", "../../../packages/patterns/src/api/index.js", "../../../packages/patterns/src/components/create-pattern-modal.js", "../../../packages/patterns/src/components/category-selector.js", "../../../packages/patterns/src/private-hooks.js", "../../../packages/patterns/src/components/duplicate-pattern-modal.js", "../../../packages/patterns/src/components/rename-pattern-modal.js", "../../../packages/patterns/src/components/index.js", "../../../packages/patterns/src/components/pattern-convert-button.js", "../../../packages/icons/src/library/symbol.tsx", "../../../packages/patterns/src/components/patterns-manage-button.js", "../../../packages/patterns/src/components/rename-pattern-category-modal.js", "../../../packages/patterns/src/components/pattern-overrides-controls.js", "../../../packages/patterns/src/components/allow-overrides-modal.js", "../../../packages/patterns/src/components/reset-overrides-control.js", "../../../packages/patterns/src/private-apis.js"],
"sourcesContent": ["module.exports = window.wp.data;", "module.exports = window.wp.blocks;", "module.exports = window.wp.coreData;", "module.exports = window.wp.blockEditor;", "module.exports = window.wp.privateApis;", "module.exports = window.wp.components;", "module.exports = window.wp.element;", "module.exports = window.wp.i18n;", "module.exports = window.ReactJSXRuntime;", "module.exports = window.wp.notices;", "module.exports = window.wp.compose;", "module.exports = window.wp.htmlEntities;", "module.exports = window.wp.primitives;", "module.exports = window.wp.url;", "module.exports = window.wp.a11y;", "/**\n * WordPress dependencies\n */\nimport { createReduxStore, register } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport reducer from './reducer';\nimport * as actions from './actions';\nimport { STORE_NAME } from './constants';\nimport * as selectors from './selectors';\nimport { unlock } from '../lock-unlock';\n\n/**\n * Post editor data store configuration.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore\n *\n * @type {Object}\n */\nexport const storeConfig = {\n\treducer,\n};\n\n/**\n * Store definition for the editor namespace.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore\n *\n * @type {Object}\n */\nexport const store = createReduxStore( STORE_NAME, {\n\t...storeConfig,\n} );\n\nregister( store );\nunlock( store ).registerPrivateActions( actions );\nunlock( store ).registerPrivateSelectors( selectors );\n", "/**\n * WordPress dependencies\n */\nimport { combineReducers } from '@wordpress/data';\n\nexport function isEditingPattern( state = {}, action ) {\n\tif ( action?.type === 'SET_EDITING_PATTERN' ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ action.clientId ]: action.isEditing,\n\t\t};\n\t}\n\n\treturn state;\n}\n\nexport default combineReducers( {\n\tisEditingPattern,\n} );\n", "/**\n * WordPress dependencies\n */\n\nimport { getBlockType, cloneBlock } from '@wordpress/blocks';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Returns a generator converting one or more static blocks into a pattern, or creating a new empty pattern.\n *\n * @param {string} title Pattern title.\n * @param {'full'|'unsynced'} syncType They way block is synced, 'full' or 'unsynced'.\n * @param {string|undefined} [content] Optional serialized content of blocks to convert to pattern.\n * @param {number[]|undefined} [categories] Ids of any selected categories.\n */\nexport const createPattern =\n\t( title, syncType, content, categories ) =>\n\tasync ( { registry } ) => {\n\t\tconst meta =\n\t\t\tsyncType === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t? {\n\t\t\t\t\t\twp_pattern_sync_status: syncType,\n\t\t\t\t }\n\t\t\t\t: undefined;\n\n\t\tconst reusableBlock = {\n\t\t\ttitle,\n\t\t\tcontent,\n\t\t\tstatus: 'publish',\n\t\t\tmeta,\n\t\t\twp_pattern_category: categories,\n\t\t};\n\n\t\tconst updatedRecord = await registry\n\t\t\t.dispatch( coreStore )\n\t\t\t.saveEntityRecord( 'postType', 'wp_block', reusableBlock );\n\n\t\treturn updatedRecord;\n\t};\n\n/**\n * Create a pattern from a JSON file.\n * @param {File} file The JSON file instance of the pattern.\n * @param {number[]|undefined} [categories] Ids of any selected categories.\n */\nexport const createPatternFromFile =\n\t( file, categories ) =>\n\tasync ( { dispatch } ) => {\n\t\tconst fileContent = await file.text();\n\t\t/** @type {import('./types').PatternJSON} */\n\t\tlet parsedContent;\n\t\ttry {\n\t\t\tparsedContent = JSON.parse( fileContent );\n\t\t} catch ( e ) {\n\t\t\tthrow new Error( 'Invalid JSON file' );\n\t\t}\n\t\tif (\n\t\t\tparsedContent.__file !== 'wp_block' ||\n\t\t\t! parsedContent.title ||\n\t\t\t! parsedContent.content ||\n\t\t\ttypeof parsedContent.title !== 'string' ||\n\t\t\ttypeof parsedContent.content !== 'string' ||\n\t\t\t( parsedContent.syncStatus &&\n\t\t\t\ttypeof parsedContent.syncStatus !== 'string' )\n\t\t) {\n\t\t\tthrow new Error( 'Invalid pattern JSON file' );\n\t\t}\n\n\t\tconst pattern = await dispatch.createPattern(\n\t\t\tparsedContent.title,\n\t\t\tparsedContent.syncStatus,\n\t\t\tparsedContent.content,\n\t\t\tcategories\n\t\t);\n\n\t\treturn pattern;\n\t};\n\n/**\n * Returns a generator converting a synced pattern block into a static block.\n *\n * @param {string} clientId The client ID of the block to attach.\n */\nexport const convertSyncedPatternToStatic =\n\t( clientId ) =>\n\t( { registry } ) => {\n\t\tconst patternBlock = registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlock( clientId );\n\t\tconst existingOverrides = patternBlock.attributes?.content;\n\n\t\tfunction cloneBlocksAndRemoveBindings( blocks ) {\n\t\t\treturn blocks.map( ( block ) => {\n\t\t\t\tlet metadata = block.attributes.metadata;\n\t\t\t\tif ( metadata ) {\n\t\t\t\t\tmetadata = { ...metadata };\n\t\t\t\t\tdelete metadata.id;\n\t\t\t\t\tdelete metadata.bindings;\n\t\t\t\t\t// Use overridden values of the pattern block if they exist.\n\t\t\t\t\tif ( existingOverrides?.[ metadata.name ] ) {\n\t\t\t\t\t\t// Iterate over each overridden attribute.\n\t\t\t\t\t\tfor ( const [ attributeName, value ] of Object.entries(\n\t\t\t\t\t\t\texistingOverrides[ metadata.name ]\n\t\t\t\t\t\t) ) {\n\t\t\t\t\t\t\t// Skip if the attribute does not exist in the block type.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t! getBlockType( block.name )?.attributes[\n\t\t\t\t\t\t\t\t\tattributeName\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\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Update the block attribute with the override value.\n\t\t\t\t\t\t\tblock.attributes[ attributeName ] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn cloneBlock(\n\t\t\t\t\tblock,\n\t\t\t\t\t{\n\t\t\t\t\t\tmetadata:\n\t\t\t\t\t\t\tmetadata && Object.keys( metadata ).length > 0\n\t\t\t\t\t\t\t\t? metadata\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t},\n\t\t\t\t\tcloneBlocksAndRemoveBindings( block.innerBlocks )\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tconst patternInnerBlocks = registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlocks( patternBlock.clientId );\n\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.replaceBlocks(\n\t\t\t\tpatternBlock.clientId,\n\t\t\t\tcloneBlocksAndRemoveBindings( patternInnerBlocks )\n\t\t\t);\n\t};\n\n/**\n * Returns an action descriptor for SET_EDITING_PATTERN action.\n *\n * @param {string} clientId The clientID of the pattern to target.\n * @param {boolean} isEditing Whether the block should be in editing state.\n * @return {Object} Action descriptor.\n */\nexport function setEditingPattern( clientId, isEditing ) {\n\treturn {\n\t\ttype: 'SET_EDITING_PATTERN',\n\t\tclientId,\n\t\tisEditing,\n\t};\n}\n", "export const PATTERN_TYPES = {\n\ttheme: 'pattern',\n\tuser: 'wp_block',\n};\n\nexport const PATTERN_DEFAULT_CATEGORY = 'all-patterns';\nexport const PATTERN_USER_CATEGORY = 'my-patterns';\nexport const EXCLUDED_PATTERN_SOURCES = [\n\t'core',\n\t'pattern-directory/core',\n\t'pattern-directory/featured',\n];\nexport const PATTERN_SYNC_TYPES = {\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nexport const PATTERN_OVERRIDES_BINDING_SOURCE = 'core/pattern-overrides';\n", "/**\n * Module Constants\n */\nexport const STORE_NAME = 'core/patterns';\n", "/**\n * Returns true if pattern is in the editing state.\n *\n * @param {Object} state Global application state.\n * @param {number} clientId the clientID of the block.\n * @return {boolean} Whether the pattern is in the editing state.\n */\nexport function isEditingPattern( state, clientId ) {\n\treturn state.isEditingPattern[ clientId ];\n}\n", "/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.',\n\t\t'@wordpress/patterns'\n\t);\n", "/**\n * WordPress dependencies\n */\nimport {\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { PanelBody } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isOverridableBlock } from '../api';\nimport { unlock } from '../lock-unlock';\n\nconst { BlockQuickNavigation } = unlock( blockEditorPrivateApis );\n\nexport default function OverridesPanel() {\n\tconst { allClientIds, supportedBlockTypesRaw } = useSelect(\n\t\t( select ) => ( {\n\t\t\tallClientIds:\n\t\t\t\tselect( blockEditorStore ).getClientIdsWithDescendants(),\n\t\t\tsupportedBlockTypesRaw:\n\t\t\t\tselect( blockEditorStore ).getSettings()\n\t\t\t\t\t?.__experimentalBlockBindingsSupportedAttributes,\n\t\t} ),\n\t\t[]\n\t);\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst clientIdsWithOverrides = useMemo( () => {\n\t\tconst supportedBlockTypes = Object.keys( supportedBlockTypesRaw ?? {} );\n\t\treturn allClientIds.filter( ( clientId ) => {\n\t\t\tconst block = getBlock( clientId );\n\t\t\treturn (\n\t\t\t\tsupportedBlockTypes.includes( block.name ) &&\n\t\t\t\tisOverridableBlock( block )\n\t\t\t);\n\t\t} );\n\t}, [ allClientIds, getBlock, supportedBlockTypesRaw ] );\n\n\tif ( ! clientIdsWithOverrides?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Overrides' ) }>\n\t\t\t<BlockQuickNavigation clientIds={ clientIdsWithOverrides } />\n\t\t</PanelBody>\n\t);\n}\n", "/**\n * Determines whether a block is overridable.\n *\n * @param {WPBlock} block The block to test.\n *\n * @return {boolean} `true` if a block is overridable, `false` otherwise.\n */\nexport function isOverridableBlock( block ) {\n\treturn (\n\t\t!! block.attributes.metadata?.name &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_SYNC_TYPES,\n\tPATTERN_TYPES,\n} from '../constants';\nimport { store as patternsStore } from '../store';\nimport CategorySelector from './category-selector';\nimport { useAddPatternCategory } from '../private-hooks';\nimport { unlock } from '../lock-unlock';\n\nexport default function CreatePatternModal( {\n\tclassName = 'patterns-menu-items__convert-modal',\n\tmodalTitle,\n\t...restProps\n} ) {\n\tconst defaultModalTitle = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getPostType( PATTERN_TYPES.user )?.labels\n\t\t\t\t?.add_new_item,\n\t\t[]\n\t);\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle || defaultModalTitle }\n\t\t\tonRequestClose={ restProps.onClose }\n\t\t\toverlayClassName={ className }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<CreatePatternModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nexport function CreatePatternModalContents( {\n\tconfirmLabel = __( 'Add' ),\n\tdefaultCategories = [],\n\tcontent,\n\tonClose,\n\tonError,\n\tonSuccess,\n\tdefaultSyncType = PATTERN_SYNC_TYPES.full,\n\tdefaultTitle = '',\n} ) {\n\tconst [ syncType, setSyncType ] = useState( defaultSyncType );\n\tconst [ categoryTerms, setCategoryTerms ] = useState( defaultCategories );\n\tconst [ title, setTitle ] = useState( defaultTitle );\n\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst { createPattern } = unlock( useDispatch( patternsStore ) );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst { categoryMap, findOrCreateTerm } = useAddPatternCategory();\n\n\tasync function onCreate( patternTitle, sync ) {\n\t\tif ( ! title || isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\t\t\tconst categories = await Promise.all(\n\t\t\t\tcategoryTerms.map( ( termName ) =>\n\t\t\t\t\tfindOrCreateTerm( termName )\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tconst newPattern = await createPattern(\n\t\t\t\tpatternTitle,\n\t\t\t\tsync,\n\t\t\t\ttypeof content === 'function' ? content() : content,\n\t\t\t\tcategories\n\t\t\t);\n\t\t\tonSuccess( {\n\t\t\t\tpattern: newPattern,\n\t\t\t\tcategoryId: PATTERN_DEFAULT_CATEGORY,\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-create',\n\t\t\t} );\n\t\t\tonError?.();\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetCategoryTerms( [] );\n\t\t\tsetTitle( '' );\n\t\t}\n\t}\n\n\treturn (\n\t\t<form\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonCreate( title, syncType );\n\t\t\t} }\n\t\t>\n\t\t\t<VStack spacing=\"5\">\n\t\t\t\t<TextControl\n\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\tplaceholder={ __( 'My pattern' ) }\n\t\t\t\t\tclassName=\"patterns-create-modal__name-input\"\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t/>\n\t\t\t\t<CategorySelector\n\t\t\t\t\tcategoryTerms={ categoryTerms }\n\t\t\t\t\tonChange={ setCategoryTerms }\n\t\t\t\t\tcategoryMap={ categoryMap }\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\tlabel={ _x( 'Synced', 'pattern (singular)' ) }\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Sync this pattern across multiple locations.'\n\t\t\t\t\t) }\n\t\t\t\t\tchecked={ syncType === PATTERN_SYNC_TYPES.full }\n\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\tsyncType === PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t\t\t\t\t: PATTERN_SYNC_TYPES.full\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\taria-disabled={ ! title || isSaving }\n\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ confirmLabel }\n\t\t\t\t\t</Button>\n\t\t\t\t</HStack>\n\t\t\t</VStack>\n\t\t</form>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { FormTokenField } from '@wordpress/components';\nimport { useDebounce } from '@wordpress/compose';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst unescapeString = ( arg ) => {\n\treturn decodeEntities( arg );\n};\n\nexport const CATEGORY_SLUG = 'wp_pattern_category';\n\nexport default function CategorySelector( {\n\tcategoryTerms,\n\tonChange,\n\tcategoryMap,\n} ) {\n\tconst [ search, setSearch ] = useState( '' );\n\tconst debouncedSearch = useDebounce( setSearch, 500 );\n\n\tconst suggestions = useMemo( () => {\n\t\treturn Array.from( categoryMap.values() )\n\t\t\t.map( ( category ) => unescapeString( category.label ) )\n\t\t\t.filter( ( category ) => {\n\t\t\t\tif ( search !== '' ) {\n\t\t\t\t\treturn category\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t.includes( search.toLowerCase() );\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t} )\n\t\t\t.sort( ( a, b ) => a.localeCompare( b ) );\n\t}, [ search, categoryMap ] );\n\n\tfunction handleChange( termNames ) {\n\t\tconst uniqueTerms = termNames.reduce( ( terms, newTerm ) => {\n\t\t\tif (\n\t\t\t\t! terms.some(\n\t\t\t\t\t( term ) => term.toLowerCase() === newTerm.toLowerCase()\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tterms.push( newTerm );\n\t\t\t}\n\t\t\treturn terms;\n\t\t}, [] );\n\n\t\tonChange( uniqueTerms );\n\t}\n\n\treturn (\n\t\t<FormTokenField\n\t\t\tclassName=\"patterns-menu-items__convert-modal-categories\"\n\t\t\tvalue={ categoryTerms }\n\t\t\tsuggestions={ suggestions }\n\t\t\tonChange={ handleChange }\n\t\t\tonInputChange={ debouncedSearch }\n\t\t\tlabel={ __( 'Categories' ) }\n\t\t\ttokenizeOnBlur\n\t\t\t__experimentalExpandOnFocus\n\t\t\t__next40pxDefaultSize\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { CATEGORY_SLUG } from './components/category-selector';\n\n/**\n * Helper hook that creates a Map with the core and user patterns categories\n * and removes any duplicates. It's used when we need to create new user\n * categories when creating or importing patterns.\n * This hook also provides a function to find or create a pattern category.\n *\n * @return {Object} The merged categories map and the callback function to find or create a category.\n */\nexport function useAddPatternCategory() {\n\tconst { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { corePatternCategories, userPatternCategories } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getUserPatternCategories, getBlockPatternCategories } =\n\t\t\t\tselect( coreStore );\n\n\t\t\treturn {\n\t\t\t\tcorePatternCategories: getBlockPatternCategories(),\n\t\t\t\tuserPatternCategories: getUserPatternCategories(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst categoryMap = useMemo( () => {\n\t\t// Merge the user and core pattern categories and remove any duplicates.\n\t\tconst uniqueCategories = new Map();\n\t\tuserPatternCategories.forEach( ( category ) => {\n\t\t\tuniqueCategories.set( category.label.toLowerCase(), {\n\t\t\t\tlabel: category.label,\n\t\t\t\tname: category.name,\n\t\t\t\tid: category.id,\n\t\t\t} );\n\t\t} );\n\n\t\tcorePatternCategories.forEach( ( category ) => {\n\t\t\tif (\n\t\t\t\t! uniqueCategories.has( category.label.toLowerCase() ) &&\n\t\t\t\t// There are two core categories with `Post` label so explicitly remove the one with\n\t\t\t\t// the `query` slug to avoid any confusion.\n\t\t\t\tcategory.name !== 'query'\n\t\t\t) {\n\t\t\t\tuniqueCategories.set( category.label.toLowerCase(), {\n\t\t\t\t\tlabel: category.label,\n\t\t\t\t\tname: category.name,\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t\treturn uniqueCategories;\n\t}, [ userPatternCategories, corePatternCategories ] );\n\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst existingTerm = categoryMap.get( term.toLowerCase() );\n\t\t\tif ( existingTerm?.id ) {\n\t\t\t\treturn existingTerm.id;\n\t\t\t}\n\t\t\t// If we have an existing core category we need to match the new user category to the\n\t\t\t// correct slug rather than autogenerating it to prevent duplicates, eg. the core `Headers`\n\t\t\t// category uses the singular `header` as the slug.\n\t\t\tconst termData = existingTerm\n\t\t\t\t? { name: existingTerm.label, slug: existingTerm.name }\n\t\t\t\t: { name: term };\n\t\t\tconst newTerm = await saveEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\tCATEGORY_SLUG,\n\t\t\t\ttermData,\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\treturn newTerm.id;\n\t\t} catch ( error ) {\n\t\t\tif ( error.code !== 'term_exists' ) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn error.data.term_id;\n\t\t}\n\t}\n\n\treturn { categoryMap, findOrCreateTerm };\n}\n", "/**\n * WordPress dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport CreatePatternModal from './create-pattern-modal';\nimport { PATTERN_SYNC_TYPES, PATTERN_TYPES } from '../constants';\n\nfunction getTermLabels( pattern, categories ) {\n\t// Theme patterns rely on core pattern categories.\n\tif ( pattern.type !== PATTERN_TYPES.user ) {\n\t\treturn categories.core\n\t\t\t?.filter( ( category ) =>\n\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t)\n\t\t\t.map( ( category ) => category.label );\n\t}\n\n\treturn categories.user\n\t\t?.filter( ( category ) =>\n\t\t\tpattern.wp_pattern_category?.includes( category.id )\n\t\t)\n\t\t.map( ( category ) => category.label );\n}\n\nexport function useDuplicatePatternProps( { pattern, onSuccess } ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst categories = useSelect( ( select ) => {\n\t\tconst { getUserPatternCategories, getBlockPatternCategories } =\n\t\t\tselect( coreStore );\n\n\t\treturn {\n\t\t\tcore: getBlockPatternCategories(),\n\t\t\tuser: getUserPatternCategories(),\n\t\t};\n\t} );\n\tif ( ! pattern ) {\n\t\treturn null;\n\t}\n\treturn {\n\t\tcontent: pattern.content,\n\t\tdefaultCategories: getTermLabels( pattern, categories ),\n\t\tdefaultSyncType:\n\t\t\tpattern.type !== PATTERN_TYPES.user // Theme patterns are unsynced by default.\n\t\t\t\t? PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t: pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full,\n\t\tdefaultTitle: sprintf(\n\t\t\t/* translators: %s: Existing pattern title */\n\t\t\t_x( '%s (Copy)', 'pattern' ),\n\t\t\ttypeof pattern.title === 'string'\n\t\t\t\t? pattern.title\n\t\t\t\t: pattern.title.raw\n\t\t),\n\t\tonSuccess: ( { pattern: newPattern } ) => {\n\t\t\tcreateSuccessNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: The new pattern's title e.g. 'Call to action (copy)'.\n\t\t\t\t\t_x( '\"%s\" duplicated.', 'pattern' ),\n\t\t\t\t\tnewPattern.title.raw\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\tid: 'patterns-create',\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tonSuccess?.( { pattern: newPattern } );\n\t\t},\n\t};\n}\n\nexport default function DuplicatePatternModal( {\n\tpattern,\n\tonClose,\n\tonSuccess,\n} ) {\n\tconst duplicatedProps = useDuplicatePatternProps( { pattern, onSuccess } );\n\tif ( ! pattern ) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<CreatePatternModal\n\t\t\tmodalTitle={ __( 'Duplicate pattern' ) }\n\t\t\tconfirmLabel={ __( 'Duplicate' ) }\n\t\t\tonClose={ onClose }\n\t\t\tonError={ onClose }\n\t\t\t{ ...duplicatedProps }\n\t\t/>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tModal,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\nexport default function RenamePatternModal( {\n\tonClose,\n\tonError,\n\tonSuccess,\n\tpattern,\n\t...props\n} ) {\n\tconst originalName = decodeEntities( pattern.title );\n\tconst [ name, setName ] = useState( originalName );\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\n\tconst {\n\t\teditEntityRecord,\n\t\t__experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits,\n\t} = useDispatch( coreStore );\n\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst onRename = async ( event ) => {\n\t\tevent.preventDefault();\n\n\t\tif ( ! name || name === pattern.title || isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait editEntityRecord( 'postType', pattern.type, pattern.id, {\n\t\t\t\ttitle: name,\n\t\t\t} );\n\n\t\t\tsetIsSaving( true );\n\t\t\tsetName( '' );\n\t\t\tonClose?.();\n\n\t\t\tconst savedRecord = await saveSpecifiedEntityEdits(\n\t\t\t\t'postType',\n\t\t\t\tpattern.type,\n\t\t\t\tpattern.id,\n\t\t\t\t[ 'title' ],\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\n\t\t\tonSuccess?.( savedRecord );\n\n\t\t\tcreateSuccessNotice( __( 'Pattern renamed' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-update',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError?.();\n\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: __( 'An error occurred while renaming the pattern.' );\n\n\t\t\tcreateErrorNotice( errorMessage, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-update',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetName( '' );\n\t\t}\n\t};\n\n\tconst onRequestClose = () => {\n\t\tonClose?.();\n\t\tsetName( '' );\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Rename' ) }\n\t\t\t{ ...props }\n\t\t\tonRequestClose={ onClose }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form onSubmit={ onRename }>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\tvalue={ name }\n\t\t\t\t\t\tonChange={ setName }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onRequestClose }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\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</form>\n\t\t</Modal>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { BlockSettingsMenuControls } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport PatternConvertButton from './pattern-convert-button';\nimport PatternsManageButton from './patterns-manage-button';\n\nexport default function PatternsMenuItems( { rootClientId } ) {\n\treturn (\n\t\t<BlockSettingsMenuControls>\n\t\t\t{ ( { selectedClientIds, onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<PatternConvertButton\n\t\t\t\t\t\tclientIds={ selectedClientIds }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tcloseBlockSettingsMenu={ onClose }\n\t\t\t\t\t/>\n\t\t\t\t\t{ selectedClientIds.length === 1 && (\n\t\t\t\t\t\t<PatternsManageButton\n\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</BlockSettingsMenuControls>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\thasBlockSupport,\n\tisReusableBlock,\n\tcreateBlock,\n\tserialize,\n\tgetBlockType,\n} from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useState, useCallback } from '@wordpress/element';\nimport { MenuItem } from '@wordpress/components';\nimport { symbol } from '@wordpress/icons';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport CreatePatternModal from './create-pattern-modal';\nimport { unlock } from '../lock-unlock';\nimport { PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Menu control to convert block(s) to a pattern block.\n *\n * @param {Object} props Component props.\n * @param {string[]} props.clientIds Client ids of selected blocks.\n * @param {string} props.rootClientId ID of the currently selected top-level block.\n * @param {()=>void} props.closeBlockSettingsMenu Callback to close the block settings menu dropdown.\n * @return {import('react').ComponentType} The menu control or null.\n */\nexport default function PatternConvertButton( {\n\tclientIds,\n\trootClientId,\n\tcloseBlockSettingsMenu,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { replaceBlocks, updateBlockAttributes } =\n\t\tuseDispatch( blockEditorStore );\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { setEditingPattern } = unlock( useDispatch( patternsStore ) );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst { getBlockAttributes } = useSelect( blockEditorStore );\n\tconst canConvert = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocksByClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tconst rootId =\n\t\t\t\trootClientId ||\n\t\t\t\t( clientIds.length > 0\n\t\t\t\t\t? getBlockRootClientId( clientIds[ 0 ] )\n\t\t\t\t\t: undefined );\n\n\t\t\tconst blocks = getBlocksByClientId( clientIds ) ?? [];\n\n\t\t\t// Check if the block has reusable support defined.\n\t\t\tconst hasReusableBlockSupport = ( blockName ) => {\n\t\t\t\tconst blockType = getBlockType( blockName );\n\t\t\t\tconst hasParent = blockType && 'parent' in blockType;\n\n\t\t\t\t// If the block has a parent, check with false as default, otherwise with true.\n\t\t\t\treturn hasBlockSupport( blockName, 'reusable', ! hasParent );\n\t\t\t};\n\n\t\t\tconst isSyncedPattern =\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks[ 0 ] &&\n\t\t\t\tisReusableBlock( blocks[ 0 ] ) &&\n\t\t\t\t!! select( coreStore ).getEntityRecord(\n\t\t\t\t\t'postType',\n\t\t\t\t\t'wp_block',\n\t\t\t\t\tblocks[ 0 ].attributes.ref\n\t\t\t\t);\n\n\t\t\tconst isUnsyncedPattern =\n\t\t\t\twindow?.__experimentalContentOnlyPatternInsertion &&\n\t\t\t\tblocks.length === 1 &&\n\t\t\t\tblocks?.[ 0 ]?.attributes?.metadata?.patternName;\n\n\t\t\tconst _canConvert =\n\t\t\t\t// Hide when this is already a pattern.\n\t\t\t\t! isUnsyncedPattern &&\n\t\t\t\t! isSyncedPattern &&\n\t\t\t\t// Hide when patterns are disabled.\n\t\t\t\tcanInsertBlockType( 'core/block', rootId ) &&\n\t\t\t\tblocks.every(\n\t\t\t\t\t( block ) =>\n\t\t\t\t\t\t// Guard against the case where a regular block has *just* been converted.\n\t\t\t\t\t\t!! block &&\n\t\t\t\t\t\t// Hide on invalid blocks.\n\t\t\t\t\t\tblock.isValid &&\n\t\t\t\t\t\t// Hide when block doesn't support being made into a pattern.\n\t\t\t\t\t\thasReusableBlockSupport( block.name )\n\t\t\t\t) &&\n\t\t\t\t// Hide when current doesn't have permission to do that.\n\t\t\t\t// Blocks refers to the wp_block post type, this checks the ability to create a post of that type.\n\t\t\t\t!! canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t} );\n\n\t\t\treturn _canConvert;\n\t\t},\n\t\t[ clientIds, rootClientId ]\n\t);\n\tconst { getBlocksByClientId } = useSelect( blockEditorStore );\n\tconst getContent = useCallback(\n\t\t() => serialize( getBlocksByClientId( clientIds ) ),\n\t\t[ getBlocksByClientId, clientIds ]\n\t);\n\n\tif ( ! canConvert ) {\n\t\treturn null;\n\t}\n\n\tconst handleSuccess = ( { pattern } ) => {\n\t\tif ( pattern.wp_pattern_sync_status === PATTERN_SYNC_TYPES.unsynced ) {\n\t\t\tif ( clientIds?.length === 1 ) {\n\t\t\t\tconst existingAttributes = getBlockAttributes( clientIds[ 0 ] );\n\t\t\t\tupdateBlockAttributes( clientIds[ 0 ], {\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t...( existingAttributes?.metadata\n\t\t\t\t\t\t\t? existingAttributes.metadata\n\t\t\t\t\t\t\t: {} ),\n\t\t\t\t\t\tpatternName: `core/block/${ pattern.id }`,\n\t\t\t\t\t\tname: pattern.title.raw,\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\t\t\tconst newBlock = createBlock( 'core/block', {\n\t\t\t\tref: pattern.id,\n\t\t\t} );\n\n\t\t\treplaceBlocks( clientIds, newBlock );\n\t\t\tsetEditingPattern( newBlock.clientId, true );\n\t\t\tcloseBlockSettingsMenu();\n\t\t}\n\n\t\tcreateSuccessNotice(\n\t\t\tpattern.wp_pattern_sync_status === PATTERN_SYNC_TYPES.unsynced\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Unsynced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t// translators: %s: the name the user has given to the pattern.\n\t\t\t\t\t\t__( 'Synced pattern created: %s' ),\n\t\t\t\t\t\tpattern.title.raw\n\t\t\t\t ),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'convert-to-pattern-success',\n\t\t\t}\n\t\t);\n\t\tsetIsModalOpen( false );\n\t};\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\ticon={ symbol }\n\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ __( 'Create pattern' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<CreatePatternModal\n\t\t\t\t\tcontent={ getContent }\n\t\t\t\t\tonSuccess={ ( pattern ) => {\n\t\t\t\t\t\thandleSuccess( pattern );\n\t\t\t\t\t} }\n\t\t\t\t\tonError={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { Path, SVG } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t<Path d=\"M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z\" />\n\t</SVG>\n);\n", "/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { isReusableBlock } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { addQueryArgs } from '@wordpress/url';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\nfunction PatternsManageButton( { clientId } ) {\n\tconst {\n\t\tattributes,\n\t\tcanDetach,\n\t\tisVisible,\n\t\tmanagePatternsUrl,\n\t\tisSyncedPattern,\n\t\tisUnsyncedPattern,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlock, getBlock } = select( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst block = getBlock( clientId );\n\n\t\t\tconst _isUnsyncedPattern =\n\t\t\t\twindow?.__experimentalContentOnlyPatternInsertion &&\n\t\t\t\t!! block?.attributes?.metadata?.patternName;\n\n\t\t\tconst _isSyncedPattern =\n\t\t\t\t!! block &&\n\t\t\t\tisReusableBlock( block ) &&\n\t\t\t\t!! canUser( 'update', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_block',\n\t\t\t\t\tid: block.attributes.ref,\n\t\t\t\t} );\n\n\t\t\treturn {\n\t\t\t\tattributes: block.attributes,\n\t\t\t\t// For unsynced patterns, detaching is simply removing the `patternName` attribute.\n\t\t\t\t// For synced patterns, the `core:block` block is replaced with its inner blocks,\n\t\t\t\t// so checking whether `canRemoveBlock` is possible is required.\n\t\t\t\tcanDetach:\n\t\t\t\t\t_isUnsyncedPattern ||\n\t\t\t\t\t( _isSyncedPattern && canRemoveBlock( clientId ) ),\n\t\t\t\tisUnsyncedPattern: _isUnsyncedPattern,\n\t\t\t\tisSyncedPattern: _isSyncedPattern,\n\t\t\t\tisVisible: _isUnsyncedPattern || _isSyncedPattern,\n\t\t\t\t// The site editor and templates both check whether the user\n\t\t\t\t// has edit_theme_options capabilities. We can leverage that here\n\t\t\t\t// and omit the manage patterns link if the user can't access it.\n\t\t\t\tmanagePatternsUrl: canUser( 'create', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template',\n\t\t\t\t} )\n\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\tp: '/pattern',\n\t\t\t\t\t } )\n\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// Ignore reason: false positive of the lint rule.\n\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\tconst { convertSyncedPatternToStatic } = unlock(\n\t\tuseDispatch( patternsStore )\n\t);\n\n\tif ( ! isVisible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ canDetach && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isSyncedPattern ) {\n\t\t\t\t\t\t\tconvertSyncedPatternToStatic( clientId );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( isUnsyncedPattern ) {\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\tpatternName,\n\t\t\t\t\t\t\t\t...attributesWithoutPatternName\n\t\t\t\t\t\t\t} = attributes?.metadata ?? {};\n\t\t\t\t\t\t\tupdateBlockAttributes( clientId, {\n\t\t\t\t\t\t\t\tmetadata: attributesWithoutPatternName,\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>\n\t\t\t\t\t{ __( 'Disconnect pattern' ) }\n\t\t\t\t</MenuItem>\n\t\t\t) }\n\t\t\t<MenuItem href={ managePatternsUrl }>\n\t\t\t\t{ __( 'Manage patterns' ) }\n\t\t\t</MenuItem>\n\t\t</>\n\t);\n}\n\nexport default PatternsManageButton;\n", "/**\n * WordPress dependencies\n */\nimport {\n\tModal,\n\tButton,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useId, useRef, useState } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport { CATEGORY_SLUG } from './category-selector';\n\nexport default function RenamePatternCategoryModal( {\n\tcategory,\n\texistingCategories,\n\tonClose,\n\tonError,\n\tonSuccess,\n\t...props\n} ) {\n\tconst id = useId();\n\tconst textControlRef = useRef();\n\tconst [ name, setName ] = useState( decodeEntities( category.name ) );\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst [ validationMessage, setValidationMessage ] = useState( false );\n\tconst validationMessageId = validationMessage\n\t\t? `patterns-rename-pattern-category-modal__validation-message-${ id }`\n\t\t: undefined;\n\n\tconst { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { createErrorNotice, createSuccessNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tconst onChange = ( newName ) => {\n\t\tif ( validationMessage ) {\n\t\t\tsetValidationMessage( undefined );\n\t\t}\n\t\tsetName( newName );\n\t};\n\n\tconst onSave = async ( event ) => {\n\t\tevent.preventDefault();\n\n\t\tif ( isSaving ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! name || name === category.name ) {\n\t\t\tconst message = __( 'Please enter a new name for this category.' );\n\t\t\tspeak( message, 'assertive' );\n\t\t\tsetValidationMessage( message );\n\t\t\ttextControlRef.current?.focus();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check existing categories to avoid creating duplicates.\n\t\tif (\n\t\t\texistingCategories.patternCategories.find( ( existingCategory ) => {\n\t\t\t\t// Compare the id so that the we don't disallow the user changing the case of their current category\n\t\t\t\t// (i.e. renaming 'test' to 'Test').\n\t\t\t\treturn (\n\t\t\t\t\texistingCategory.id !== category.id &&\n\t\t\t\t\texistingCategory.label.toLowerCase() === name.toLowerCase()\n\t\t\t\t);\n\t\t\t} )\n\t\t) {\n\t\t\tconst message = __(\n\t\t\t\t'This category already exists. Please use a different name.'\n\t\t\t);\n\t\t\tspeak( message, 'assertive' );\n\t\t\tsetValidationMessage( message );\n\t\t\ttextControlRef.current?.focus();\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tsetIsSaving( true );\n\n\t\t\t// User pattern category properties may differ as they can be\n\t\t\t// normalized for use alongside template part areas, core pattern\n\t\t\t// categories etc. As a result we won't just destructure the passed\n\t\t\t// category object.\n\t\t\tconst savedRecord = await saveEntityRecord(\n\t\t\t\t'taxonomy',\n\t\t\t\tCATEGORY_SLUG,\n\t\t\t\t{\n\t\t\t\t\tid: category.id,\n\t\t\t\t\tslug: category.slug,\n\t\t\t\t\tname,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tinvalidateResolution( 'getUserPatternCategories' );\n\t\t\tonSuccess?.( savedRecord );\n\t\t\tonClose();\n\n\t\t\tcreateSuccessNotice( __( 'Pattern category renamed.' ), {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-update',\n\t\t\t} );\n\t\t} catch ( error ) {\n\t\t\tonError?.();\n\t\t\tcreateErrorNotice( error.message, {\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'pattern-category-update',\n\t\t\t} );\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t\tsetName( '' );\n\t\t}\n\t};\n\n\tconst onRequestClose = () => {\n\t\tonClose();\n\t\tsetName( '' );\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Rename' ) }\n\t\t\tonRequestClose={ onRequestClose }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<form onSubmit={ onSave }>\n\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t<VStack spacing=\"2\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tref={ textControlRef }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\tvalue={ name }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\taria-describedby={ validationMessageId }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ validationMessage && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName=\"patterns-rename-pattern-category-modal__validation-message\"\n\t\t\t\t\t\t\t\tid={ validationMessageId }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ validationMessage }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VStack>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onRequestClose }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\taria-disabled={\n\t\t\t\t\t\t\t\t! name || name === category.name || isSaving\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisBusy={ isSaving }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\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</form>\n\t\t</Modal>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport { useState, useId } from '@wordpress/element';\nimport {\n\tInspectorControls,\n\tuseBlockBindingsUtils,\n} from '@wordpress/block-editor';\nimport { BaseControl, Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';\nimport {\n\tAllowOverridesModal,\n\tDisallowOverridesModal,\n} from './allow-overrides-modal';\n\nfunction PatternOverridesControls( {\n\tattributes,\n\tsetAttributes,\n\tname: blockName,\n} ) {\n\tconst controlId = useId();\n\tconst [ showAllowOverridesModal, setShowAllowOverridesModal ] =\n\t\tuseState( false );\n\tconst [ showDisallowOverridesModal, setShowDisallowOverridesModal ] =\n\t\tuseState( false );\n\n\tconst hasName = !! attributes.metadata?.name;\n\tconst defaultBindings = attributes.metadata?.bindings?.__default;\n\tconst hasOverrides =\n\t\thasName && defaultBindings?.source === PATTERN_OVERRIDES_BINDING_SOURCE;\n\tconst isConnectedToOtherSources =\n\t\tdefaultBindings?.source &&\n\t\tdefaultBindings.source !== PATTERN_OVERRIDES_BINDING_SOURCE;\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\n\tfunction updateBindings( isChecked, customName ) {\n\t\tif ( customName ) {\n\t\t\tsetAttributes( {\n\t\t\t\tmetadata: {\n\t\t\t\t\t...attributes.metadata,\n\t\t\t\t\tname: customName,\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\n\t\tupdateBlockBindings( {\n\t\t\t__default: isChecked\n\t\t\t\t? { source: PATTERN_OVERRIDES_BINDING_SOURCE }\n\t\t\t\t: undefined,\n\t\t} );\n\t}\n\n\t// Avoid overwriting other (e.g. meta) bindings.\n\tif ( isConnectedToOtherSources ) {\n\t\treturn null;\n\t}\n\n\tconst hasUnsupportedImageAttributes =\n\t\tblockName === 'core/image' && !! attributes.href?.length;\n\n\tconst helpText =\n\t\t! hasOverrides && hasUnsupportedImageAttributes\n\t\t\t? __(\n\t\t\t\t\t`Overrides currently don't support image links. Remove the link first before enabling overrides.`\n\t\t\t )\n\t\t\t: __(\n\t\t\t\t\t'Allow changes to this block throughout instances of this pattern.'\n\t\t\t );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<BaseControl\n\t\t\t\t\tid={ controlId }\n\t\t\t\t\tlabel={ __( 'Overrides' ) }\n\t\t\t\t\thelp={ helpText }\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tclassName=\"pattern-overrides-control__allow-overrides-button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tif ( hasOverrides ) {\n\t\t\t\t\t\t\t\tsetShowDisallowOverridesModal( true );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetShowAllowOverridesModal( true );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t! hasOverrides && hasUnsupportedImageAttributes\n\t\t\t\t\t\t}\n\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t>\n\t\t\t\t\t\t{ hasOverrides\n\t\t\t\t\t\t\t? __( 'Disable overrides' )\n\t\t\t\t\t\t\t: __( 'Enable overrides' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</BaseControl>\n\t\t\t</InspectorControls>\n\n\t\t\t{ showAllowOverridesModal && (\n\t\t\t\t<AllowOverridesModal\n\t\t\t\t\tinitialName={ attributes.metadata?.name }\n\t\t\t\t\tonClose={ () => setShowAllowOverridesModal( false ) }\n\t\t\t\t\tonSave={ ( newName ) => {\n\t\t\t\t\t\tupdateBindings( true, newName );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showDisallowOverridesModal && (\n\t\t\t\t<DisallowOverridesModal\n\t\t\t\t\tonClose={ () => setShowDisallowOverridesModal( false ) }\n\t\t\t\t\tonSave={ () => updateBindings( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PatternOverridesControls;\n", "/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\t__experimentalText as Text,\n\tTextControl,\n\tModal,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState, useId } from '@wordpress/element';\nimport { speak } from '@wordpress/a11y';\n\nexport function AllowOverridesModal( {\n\tplaceholder,\n\tinitialName = '',\n\tonClose,\n\tonSave,\n} ) {\n\tconst [ editedBlockName, setEditedBlockName ] = useState( initialName );\n\tconst descriptionId = useId();\n\n\tconst isNameValid = !! editedBlockName.trim();\n\n\tconst handleSubmit = () => {\n\t\tif ( editedBlockName !== initialName ) {\n\t\t\tconst message = sprintf(\n\t\t\t\t/* translators: %s: new name/label for the block */\n\t\t\t\t__( 'Block name changed to: \"%s\".' ),\n\t\t\t\teditedBlockName\n\t\t\t);\n\n\t\t\t// Must be assertive to immediately announce change.\n\t\t\tspeak( message, 'assertive' );\n\t\t}\n\t\tonSave( editedBlockName );\n\n\t\t// Immediate close avoids ability to hit save multiple times.\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Enable overrides' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t\taria={ { describedby: descriptionId } }\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\tif ( ! isNameValid ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\thandleSubmit();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<VStack spacing=\"6\">\n\t\t\t\t\t<Text id={ descriptionId }>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Overrides are changes you make to a block within a synced pattern instance. Use overrides to customize a synced pattern instance to suit its new context. Name this block to specify an override.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvalue={ editedBlockName }\n\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t'For example, if you are creating a recipe pattern, you use \"Recipe Title\", \"Recipe Description\", etc.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\tonChange={ setEditedBlockName }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\taria-disabled={ ! isNameValid }\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Enable' ) }\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</form>\n\t\t</Modal>\n\t);\n}\n\nexport function DisallowOverridesModal( { onClose, onSave } ) {\n\tconst descriptionId = useId();\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Disable overrides' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\taria={ { describedby: descriptionId } }\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tonSave();\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<VStack spacing=\"6\">\n\t\t\t\t\t<Text id={ descriptionId }>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Are you sure you want to disable overrides? Disabling overrides will revert all applied overrides for this block throughout instances of this pattern.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\n\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Disable' ) }\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</form>\n\t\t</Modal>\n\t);\n}\n", "/**\n * WordPress dependencies\n */\nimport {\n\tstore as blockEditorStore,\n\t__unstableBlockToolbarLastItem as BlockToolbarLastItem,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useRegistry, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\nconst CONTENT = 'content';\n\nexport default function ResetOverridesControl( props ) {\n\tconst name = props.attributes.metadata?.name;\n\tconst registry = useRegistry();\n\tconst isOverridden = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! name ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\t\tprops.clientId,\n\t\t\t\t'core/block',\n\t\t\t\ttrue\n\t\t\t);\n\n\t\t\tif ( ! patternClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\t\tif ( ! overrides ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn overrides.hasOwnProperty( name );\n\t\t},\n\t\t[ props.clientId, name ]\n\t);\n\n\tfunction onClick() {\n\t\tconst { getBlockAttributes, getBlockParentsByBlockName } =\n\t\t\tregistry.select( blockEditorStore );\n\t\tconst [ patternClientId ] = getBlockParentsByBlockName(\n\t\t\tprops.clientId,\n\t\t\t'core/block',\n\t\t\ttrue\n\t\t);\n\n\t\tif ( ! patternClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst overrides = getBlockAttributes( patternClientId )[ CONTENT ];\n\n\t\tif ( ! overrides.hasOwnProperty( name ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { updateBlockAttributes, __unstableMarkLastChangeAsPersistent } =\n\t\t\tregistry.dispatch( blockEditorStore );\n\t\t__unstableMarkLastChangeAsPersistent();\n\n\t\tlet newOverrides = { ...overrides };\n\t\tdelete newOverrides[ name ];\n\n\t\tif ( ! Object.keys( newOverrides ).length ) {\n\t\t\tnewOverrides = undefined;\n\t\t}\n\n\t\tupdateBlockAttributes( patternClientId, {\n\t\t\t[ CONTENT ]: newOverrides,\n\t\t} );\n\t}\n\n\treturn (\n\t\t<BlockToolbarLastItem>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton onClick={ onClick } disabled={ ! isOverridden }>\n\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockToolbarLastItem>\n\t);\n}\n", "/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\nimport OverridesPanel from './components/overrides-panel';\nimport {\n\tdefault as CreatePatternModal,\n\tCreatePatternModalContents,\n} from './components/create-pattern-modal';\nimport {\n\tdefault as DuplicatePatternModal,\n\tuseDuplicatePatternProps,\n} from './components/duplicate-pattern-modal';\nimport { isOverridableBlock } from './api';\nimport RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PatternOverridesControls from './components/pattern-overrides-controls';\nimport ResetOverridesControl from './components/reset-overrides-control';\nimport { useAddPatternCategory } from './private-hooks';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n} from './constants';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tOverridesPanel,\n\tCreatePatternModal,\n\tCreatePatternModalContents,\n\tDuplicatePatternModal,\n\tisOverridableBlock,\n\tuseDuplicatePatternProps,\n\tRenamePatternModal,\n\tPatternsMenuItems,\n\tRenamePatternCategoryModal,\n\tPatternOverridesControls,\n\tResetOverridesControl,\n\tuseAddPatternCategory,\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n} );\n"],
"mappings": "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",
"names": ["import_data", "coreStore", "blockEditorStore", "isEditingPattern", "import_block_editor", "import_data", "blockEditorPrivateApis", "blockEditorStore", "import_components", "import_i18n", "import_element", "import_data", "import_core_data", "import_i18n", "import_element", "import_components", "import_jsx_runtime", "import_data", "import_core_data", "import_element", "coreStore", "import_jsx_runtime", "coreStore", "createPattern", "noticesStore", "VStack", "HStack", "import_core_data", "import_data", "import_i18n", "import_notices", "import_jsx_runtime", "noticesStore", "coreStore", "import_components", "import_core_data", "import_data", "import_element", "import_html_entities", "import_i18n", "import_notices", "import_jsx_runtime", "coreStore", "noticesStore", "VStack", "HStack", "import_block_editor", "import_blocks", "import_block_editor", "import_element", "import_components", "import_jsx_runtime", "import_data", "import_core_data", "import_i18n", "import_notices", "import_jsx_runtime", "noticesStore", "blockEditorStore", "setEditingPattern", "coreStore", "getBlocksByClientId", "import_components", "import_i18n", "import_blocks", "import_data", "import_block_editor", "import_core_data", "import_jsx_runtime", "blockEditorStore", "coreStore", "convertSyncedPatternToStatic", "import_jsx_runtime", "import_components", "import_core_data", "import_data", "import_element", "import_html_entities", "import_i18n", "import_notices", "import_jsx_runtime", "coreStore", "noticesStore", "VStack", "HStack", "import_element", "import_block_editor", "import_components", "import_i18n", "import_components", "import_i18n", "import_element", "import_a11y", "import_jsx_runtime", "VStack", "Text", "HStack", "import_jsx_runtime", "import_block_editor", "import_components", "import_data", "import_i18n", "import_jsx_runtime", "blockEditorStore", "BlockToolbarLastItem"]
}