File: /www/wwwroot/www.waciwang.com/wp-content/plugins/gutenberg/build/scripts/patterns/index.min.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": ["require_data", "__commonJSMin", "exports", "module", "require_blocks", "__commonJSMin", "exports", "module", "require_core_data", "__commonJSMin", "exports", "module", "require_block_editor", "__commonJSMin", "exports", "module", "require_private_apis", "__commonJSMin", "exports", "module", "require_components", "__commonJSMin", "exports", "module", "require_element", "__commonJSMin", "exports", "module", "require_i18n", "__commonJSMin", "exports", "module", "require_jsx_runtime", "__commonJSMin", "exports", "module", "require_notices", "__commonJSMin", "exports", "module", "require_compose", "__commonJSMin", "exports", "module", "require_html_entities", "__commonJSMin", "exports", "module", "require_primitives", "__commonJSMin", "exports", "module", "require_url", "__commonJSMin", "exports", "module", "require_a11y", "__commonJSMin", "exports", "module", "import_data", "import_data", "isEditingPattern", "state", "action", "reducer_default", "import_blocks", "import_core_data", "import_block_editor", "PATTERN_TYPES", "PATTERN_DEFAULT_CATEGORY", "PATTERN_USER_CATEGORY", "EXCLUDED_PATTERN_SOURCES", "PATTERN_SYNC_TYPES", "PATTERN_OVERRIDES_BINDING_SOURCE", "createPattern", "title", "syncType", "content", "categories", "registry", "meta", "PATTERN_SYNC_TYPES", "reusableBlock", "coreStore", "createPatternFromFile", "file", "dispatch", "fileContent", "parsedContent", "convertSyncedPatternToStatic", "clientId", "patternBlock", "blockEditorStore", "existingOverrides", "cloneBlocksAndRemoveBindings", "blocks", "block", "metadata", "attributeName", "value", "patternInnerBlocks", "setEditingPattern", "isEditing", "STORE_NAME", "isEditingPattern", "state", "clientId", "import_private_apis", "lock", "unlock", "storeConfig", "reducer_default", "store", "STORE_NAME", "unlock", "actions_exports", "selectors_exports", "import_block_editor", "import_components", "import_data", "import_element", "import_i18n", "isOverridableBlock", "block", "binding", "import_jsx_runtime", "BlockQuickNavigation", "unlock", "blockEditorPrivateApis", "OverridesPanel", "allClientIds", "supportedBlockTypesRaw", "select", "blockEditorStore", "getBlock", "clientIdsWithOverrides", "supportedBlockTypes", "clientId", "block", "isOverridableBlock", "import_components", "import_i18n", "import_element", "import_data", "import_notices", "import_core_data", "import_i18n", "import_element", "import_components", "import_compose", "import_html_entities", "import_jsx_runtime", "unescapeString", "arg", "CATEGORY_SLUG", "CategorySelector", "categoryTerms", "onChange", "categoryMap", "search", "setSearch", "debouncedSearch", "suggestions", "category", "a", "b", "handleChange", "termNames", "uniqueTerms", "terms", "newTerm", "term", "import_data", "import_core_data", "import_element", "useAddPatternCategory", "saveEntityRecord", "invalidateResolution", "coreStore", "corePatternCategories", "userPatternCategories", "select", "getUserPatternCategories", "getBlockPatternCategories", "categoryMap", "uniqueCategories", "category", "findOrCreateTerm", "term", "existingTerm", "termData", "newTerm", "CATEGORY_SLUG", "error", "import_jsx_runtime", "CreatePatternModal", "className", "modalTitle", "restProps", "defaultModalTitle", "select", "coreStore", "PATTERN_TYPES", "CreatePatternModalContents", "confirmLabel", "defaultCategories", "content", "onClose", "onError", "onSuccess", "defaultSyncType", "PATTERN_SYNC_TYPES", "defaultTitle", "syncType", "setSyncType", "categoryTerms", "setCategoryTerms", "title", "setTitle", "isSaving", "setIsSaving", "createPattern", "unlock", "store", "createErrorNotice", "noticesStore", "categoryMap", "findOrCreateTerm", "useAddPatternCategory", "onCreate", "patternTitle", "sync", "categories", "termName", "newPattern", "PATTERN_DEFAULT_CATEGORY", "error", "event", "VStack", "CategorySelector", "HStack", "import_core_data", "import_data", "import_i18n", "import_notices", "import_jsx_runtime", "getTermLabels", "pattern", "categories", "PATTERN_TYPES", "category", "useDuplicatePatternProps", "onSuccess", "createSuccessNotice", "noticesStore", "select", "getUserPatternCategories", "getBlockPatternCategories", "coreStore", "PATTERN_SYNC_TYPES", "newPattern", "DuplicatePatternModal", "onClose", "duplicatedProps", "CreatePatternModal", "import_components", "import_core_data", "import_data", "import_element", "import_html_entities", "import_i18n", "import_notices", "import_jsx_runtime", "RenamePatternModal", "onClose", "onError", "onSuccess", "pattern", "props", "originalName", "name", "setName", "isSaving", "setIsSaving", "editEntityRecord", "saveSpecifiedEntityEdits", "coreStore", "createSuccessNotice", "createErrorNotice", "noticesStore", "onRename", "event", "savedRecord", "error", "errorMessage", "onRequestClose", "VStack", "HStack", "import_block_editor", "import_blocks", "import_block_editor", "import_element", "import_components", "import_primitives", "import_jsx_runtime", "symbol_default", "import_data", "import_core_data", "import_i18n", "import_notices", "import_jsx_runtime", "PatternConvertButton", "clientIds", "rootClientId", "closeBlockSettingsMenu", "createSuccessNotice", "noticesStore", "replaceBlocks", "updateBlockAttributes", "blockEditorStore", "setEditingPattern", "unlock", "store", "isModalOpen", "setIsModalOpen", "getBlockAttributes", "canConvert", "select", "canUser", "coreStore", "getBlocksByClientId", "canInsertBlockType", "getBlockRootClientId", "rootId", "blocks", "hasReusableBlockSupport", "blockName", "blockType", "hasParent", "isSyncedPattern", "block", "getContent", "handleSuccess", "pattern", "PATTERN_SYNC_TYPES", "existingAttributes", "newBlock", "symbol_default", "CreatePatternModal", "import_components", "import_i18n", "import_blocks", "import_data", "import_block_editor", "import_url", "import_core_data", "import_jsx_runtime", "PatternsManageButton", "clientId", "attributes", "canDetach", "isVisible", "managePatternsUrl", "isSyncedPattern", "isUnsyncedPattern", "select", "canRemoveBlock", "getBlock", "blockEditorStore", "canUser", "coreStore", "block", "_isUnsyncedPattern", "_isSyncedPattern", "updateBlockAttributes", "convertSyncedPatternToStatic", "unlock", "store", "patternName", "attributesWithoutPatternName", "patterns_manage_button_default", "import_jsx_runtime", "PatternsMenuItems", "rootClientId", "selectedClientIds", "onClose", "PatternConvertButton", "patterns_manage_button_default", "import_components", "import_core_data", "import_data", "import_element", "import_html_entities", "import_i18n", "import_notices", "import_a11y", "import_jsx_runtime", "RenamePatternCategoryModal", "category", "existingCategories", "onClose", "onError", "onSuccess", "props", "id", "textControlRef", "name", "setName", "isSaving", "setIsSaving", "validationMessage", "setValidationMessage", "validationMessageId", "saveEntityRecord", "invalidateResolution", "coreStore", "createErrorNotice", "createSuccessNotice", "noticesStore", "onChange", "newName", "onSave", "event", "message", "existingCategory", "savedRecord", "CATEGORY_SLUG", "error", "onRequestClose", "VStack", "HStack", "import_element", "import_block_editor", "import_components", "import_i18n", "import_components", "import_i18n", "import_element", "import_a11y", "import_jsx_runtime", "AllowOverridesModal", "placeholder", "initialName", "onClose", "onSave", "editedBlockName", "setEditedBlockName", "descriptionId", "isNameValid", "handleSubmit", "message", "event", "VStack", "Text", "HStack", "DisallowOverridesModal", "import_jsx_runtime", "PatternOverridesControls", "attributes", "setAttributes", "blockName", "controlId", "showAllowOverridesModal", "setShowAllowOverridesModal", "showDisallowOverridesModal", "setShowDisallowOverridesModal", "hasName", "defaultBindings", "hasOverrides", "PATTERN_OVERRIDES_BINDING_SOURCE", "isConnectedToOtherSources", "updateBlockBindings", "updateBindings", "isChecked", "customName", "hasUnsupportedImageAttributes", "helpText", "AllowOverridesModal", "newName", "DisallowOverridesModal", "pattern_overrides_controls_default", "import_block_editor", "import_components", "import_data", "import_i18n", "import_jsx_runtime", "CONTENT", "ResetOverridesControl", "props", "name", "registry", "isOverridden", "select", "getBlockAttributes", "getBlockParentsByBlockName", "blockEditorStore", "patternClientId", "overrides", "onClick", "updateBlockAttributes", "__unstableMarkLastChangeAsPersistent", "newOverrides", "BlockToolbarLastItem", "privateApis", "lock", "OverridesPanel", "CreatePatternModal", "CreatePatternModalContents", "DuplicatePatternModal", "isOverridableBlock", "useDuplicatePatternProps", "RenamePatternModal", "PatternsMenuItems", "RenamePatternCategoryModal", "pattern_overrides_controls_default", "ResetOverridesControl", "useAddPatternCategory", "PATTERN_TYPES", "PATTERN_DEFAULT_CATEGORY", "PATTERN_USER_CATEGORY", "EXCLUDED_PATTERN_SOURCES", "PATTERN_SYNC_TYPES"]
}