Current File : /home/resuelf/www/wp-content/plugins/gutenberg/build/patterns/index.min.js.map |
{"version":3,"file":"./build/patterns/index.min.js","mappings":"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","sources":["webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/external window [\"wp\",\"data\"]","../../packages/patterns/src/store/reducer.js","webpack://wp/external window [\"wp\",\"blocks\"]","webpack://wp/external window [\"wp\",\"coreData\"]","webpack://wp/external window [\"wp\",\"blockEditor\"]","webpack://wp/external window [\"wp\",\"i18n\"]","../../packages/patterns/src/constants.js","../../packages/patterns/src/store/actions.js","../../packages/patterns/src/store/selectors.js","webpack://wp/external window [\"wp\",\"privateApis\"]","../../packages/patterns/src/lock-unlock.js","../../packages/patterns/src/store/index.js","../../packages/patterns/src/store/constants.js","webpack://wp/external window \"React\"","webpack://wp/external window [\"wp\",\"components\"]","webpack://wp/external window [\"wp\",\"element\"]","webpack://wp/external window [\"wp\",\"notices\"]","webpack://wp/external window [\"wp\",\"compose\"]","webpack://wp/external window [\"wp\",\"htmlEntities\"]","../../packages/patterns/src/components/category-selector.js","../../packages/patterns/src/components/create-pattern-modal.js","../../packages/patterns/src/components/duplicate-pattern-modal.js","webpack://wp/external window [\"wp\",\"primitives\"]","../../packages/icons/src/library/symbol.js","../../packages/patterns/src/components/pattern-convert-button.js","webpack://wp/external window [\"wp\",\"url\"]","../../packages/patterns/src/components/patterns-manage-button.js","webpack://wp/external window [\"wp\",\"a11y\"]","../../packages/patterns/src/private-apis.js","../../packages/patterns/src/components/rename-pattern-modal.js","../../packages/patterns/src/components/index.js","../../packages/patterns/src/components/rename-pattern-category-modal.js","../../packages/patterns/src/components/partial-syncing-controls.js","webpack://wp/./node_modules/nanoid/index.browser.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"data\"];","/**\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","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blocks\"];","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"coreData\"];","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"blockEditor\"];","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"i18n\"];","/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nexport 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\n// TODO: This should not be hardcoded. Maybe there should be a config and/or an UI.\nexport const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {\n\t'core/paragraph': { content: __( 'Content' ) },\n};\n","/**\n * WordPress dependencies\n */\n\nimport { parse } 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 oldBlock = registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlock( clientId );\n\t\tconst pattern = registry\n\t\t\t.select( 'core' )\n\t\t\t.getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\toldBlock.attributes.ref\n\t\t\t);\n\n\t\tconst newBlocks = parse(\n\t\t\ttypeof pattern.content === 'function'\n\t\t\t\t? pattern.content( pattern )\n\t\t\t\t: pattern.content\n\t\t);\n\t\tregistry\n\t\t\t.dispatch( blockEditorStore )\n\t\t\t.replaceBlocks( oldBlock.clientId, newBlocks );\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","/**\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","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"privateApis\"];","/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.',\n\t\t'@wordpress/patterns'\n\t);\n","/**\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 * Module Constants\n */\nexport const STORE_NAME = 'core/patterns';\n","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"React\"];","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"components\"];","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"element\"];","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"notices\"];","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"compose\"];","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"htmlEntities\"];","/**\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\t__nextHasNoMarginBottom\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, useMemo } 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 { PATTERN_DEFAULT_CATEGORY, PATTERN_SYNC_TYPES } from '../constants';\n\n/**\n * Internal dependencies\n */\nimport { store as patternsStore } from '../store';\nimport CategorySelector, { CATEGORY_SLUG } from './category-selector';\nimport { unlock } from '../lock-unlock';\n\nexport default function CreatePatternModal( {\n\tclassName = 'patterns-menu-items__convert-modal',\n\tmodalTitle = __( 'Create pattern' ),\n\t...restProps\n} ) {\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ modalTitle }\n\t\t\tonRequestClose={ restProps.onClose }\n\t\t\toverlayClassName={ className }\n\t\t>\n\t\t\t<CreatePatternModalContents { ...restProps } />\n\t\t</Modal>\n\t);\n}\n\nexport function CreatePatternModalContents( {\n\tconfirmLabel = __( 'Create' ),\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 { saveEntityRecord, invalidateResolution } = useDispatch( coreStore );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\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);\n\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 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\t/**\n\t * @param {string} term\n\t * @return {Promise<number>} The pattern category id.\n\t */\n\tasync function findOrCreateTerm( term ) {\n\t\ttry {\n\t\t\tconst existingTerm = categoryMap.get( term.toLowerCase() );\n\t\t\tif ( existingTerm && 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\n\t\t\treturn error.data.term_id;\n\t\t}\n\t}\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__nextHasNoMarginBottom\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(\n\t\t\t\t\t\t'Synced',\n\t\t\t\t\t\t'Option that makes an individual pattern synchronized'\n\t\t\t\t\t) }\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 { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, 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__( '%s (Copy)' ),\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__( '\"%s\" duplicated.' ),\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","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"primitives\"];","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst symbol = (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\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\nexport default symbol;\n","/**\n * WordPress dependencies\n */\nimport {\n\thasBlockSupport,\n\tisReusableBlock,\n\tcreateBlock,\n\tserialize,\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 } = useDispatch( 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 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\tconst isReusable =\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 _canConvert =\n\t\t\t\t// Hide when this is already a synced pattern.\n\t\t\t\t! isReusable &&\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\thasBlockSupport( block.name, 'reusable', true )\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!! canUser( 'create', 'blocks' );\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\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","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"url\"];","/**\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 { canRemove, isVisible, managePatternsUrl } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, canRemoveBlock, getBlockCount, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst reusableBlock = getBlock( clientId );\n\t\t\tconst isBlockTheme = getSettings().__unstableIsBlockBasedTheme;\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlock( clientId ),\n\t\t\t\tisVisible:\n\t\t\t\t\t!! reusableBlock &&\n\t\t\t\t\tisReusableBlock( reusableBlock ) &&\n\t\t\t\t\t!! canUser(\n\t\t\t\t\t\t'update',\n\t\t\t\t\t\t'blocks',\n\t\t\t\t\t\treusableBlock.attributes.ref\n\t\t\t\t\t),\n\t\t\t\tinnerBlockCount: getBlockCount( clientId ),\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:\n\t\t\t\t\tisBlockTheme && canUser( 'read', 'templates' )\n\t\t\t\t\t\t? addQueryArgs( 'site-editor.php', {\n\t\t\t\t\t\t\t\tpath: '/patterns',\n\t\t\t\t\t\t } )\n\t\t\t\t\t\t: addQueryArgs( 'edit.php', {\n\t\t\t\t\t\t\t\tpost_type: 'wp_block',\n\t\t\t\t\t\t } ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\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{ canRemove && (\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={ () => convertSyncedPatternToStatic( clientId ) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Detach' ) }\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","var __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"a11y\"];","/**\n * Internal dependencies\n */\nimport { lock } from './lock-unlock';\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 RenamePatternModal from './components/rename-pattern-modal';\nimport PatternsMenuItems from './components';\nimport RenamePatternCategoryModal from './components/rename-pattern-category-modal';\nimport PartialSyncingControls from './components/partial-syncing-controls';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} from './constants';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tCreatePatternModal,\n\tCreatePatternModalContents,\n\tDuplicatePatternModal,\n\tuseDuplicatePatternProps,\n\tRenamePatternModal,\n\tPatternsMenuItems,\n\tRenamePatternCategoryModal,\n\tPartialSyncingControls,\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tEXCLUDED_PATTERN_SOURCES,\n\tPATTERN_SYNC_TYPES,\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\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 title={ __( 'Rename' ) } { ...props } onRequestClose={ onClose }>\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__nextHasNoMarginBottom\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\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__nextHasNoMarginBottom\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 * External dependencies\n */\nimport { nanoid } from 'nanoid';\n\n/**\n * WordPress dependencies\n */\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { BaseControl, CheckboxControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { PARTIAL_SYNCING_SUPPORTED_BLOCKS } from '../constants';\n\nfunction PartialSyncingControls( { name, attributes, setAttributes } ) {\n\tconst syncedAttributes = PARTIAL_SYNCING_SUPPORTED_BLOCKS[ name ];\n\tconst attributeSources = Object.keys( syncedAttributes ).map(\n\t\t( attributeName ) =>\n\t\t\tattributes.connections?.attributes?.[ attributeName ]?.source\n\t);\n\tconst isConnectedToOtherSources = attributeSources.every(\n\t\t( source ) => source && source !== 'pattern_attributes'\n\t);\n\n\t// Render nothing if all supported attributes are connected to other sources.\n\tif ( isConnectedToOtherSources ) {\n\t\treturn null;\n\t}\n\n\tfunction updateConnections( isChecked ) {\n\t\tlet updatedConnections = {\n\t\t\t...attributes.connections,\n\t\t\tattributes: { ...attributes.connections?.attributes },\n\t\t};\n\n\t\tif ( ! isChecked ) {\n\t\t\tfor ( const attributeName of Object.keys( syncedAttributes ) ) {\n\t\t\t\tif (\n\t\t\t\t\tupdatedConnections.attributes[ attributeName ]?.source ===\n\t\t\t\t\t'pattern_attributes'\n\t\t\t\t) {\n\t\t\t\t\tdelete updatedConnections.attributes[ attributeName ];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( ! Object.keys( updatedConnections.attributes ).length ) {\n\t\t\t\tdelete updatedConnections.attributes;\n\t\t\t}\n\t\t\tif ( ! Object.keys( updatedConnections ).length ) {\n\t\t\t\tupdatedConnections = undefined;\n\t\t\t}\n\t\t\tsetAttributes( {\n\t\t\t\tconnections: updatedConnections,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( const attributeName of Object.keys( syncedAttributes ) ) {\n\t\t\tif ( ! updatedConnections.attributes[ attributeName ] ) {\n\t\t\t\tupdatedConnections.attributes[ attributeName ] = {\n\t\t\t\t\tsource: 'pattern_attributes',\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( typeof attributes.metadata?.id === 'string' ) {\n\t\t\tsetAttributes( { connections: updatedConnections } );\n\t\t\treturn;\n\t\t}\n\n\t\tconst id = nanoid( 6 );\n\t\tsetAttributes( {\n\t\t\tconnections: updatedConnections,\n\t\t\tmetadata: {\n\t\t\t\t...attributes.metadata,\n\t\t\t\tid,\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"advanced\">\n\t\t\t<BaseControl __nextHasNoMarginBottom>\n\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t{ __( 'Pattern overrides' ) }\n\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t<CheckboxControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Allow instance overrides' ) }\n\t\t\t\t\tchecked={ attributeSources.some(\n\t\t\t\t\t\t( source ) => source === 'pattern_attributes'\n\t\t\t\t\t) }\n\t\t\t\t\tonChange={ ( isChecked ) => {\n\t\t\t\t\t\tupdateConnections( isChecked );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BaseControl>\n\t\t</InspectorControls>\n\t);\n}\n\nexport default PartialSyncingControls;\n","import { urlAlphabet } from './url-alphabet/index.js'\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nlet nanoid = (size = 21) =>\n crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n byte &= 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte > 62) {\n id += '-'\n } else {\n id += '_'\n }\n return id\n }, '')\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","window","combineReducers","isEditingPattern","state","action","type","clientId","isEditing","PATTERN_TYPES","theme","user","PATTERN_DEFAULT_CATEGORY","PATTERN_SYNC_TYPES","full","unsynced","PARTIAL_SYNCING_SUPPORTED_BLOCKS","content","__","createPattern","title","syncType","categories","async","registry","meta","wp_pattern_sync_status","undefined","reusableBlock","status","wp_pattern_category","dispatch","coreStore","saveEntityRecord","createPatternFromFile","file","fileContent","text","parsedContent","JSON","parse","e","Error","__file","syncStatus","convertSyncedPatternToStatic","oldBlock","select","blockEditorStore","getBlock","pattern","getEditedEntityRecord","attributes","ref","newBlocks","replaceBlocks","setEditingPattern","lock","unlock","__dangerousOptInToUnstableAPIsOnlyForCoreModules","storeConfig","reducer","store","createReduxStore","register","registerPrivateActions","actions","registerPrivateSelectors","selectors","unescapeString","arg","decodeEntities","CATEGORY_SLUG","CategorySelector","categoryTerms","onChange","categoryMap","search","setSearch","useState","debouncedSearch","useDebounce","suggestions","useMemo","Array","from","values","map","category","label","filter","toLowerCase","includes","sort","a","b","localeCompare","createElement","FormTokenField","className","termNames","uniqueTerms","reduce","terms","newTerm","some","term","push","onInputChange","tokenizeOnBlur","__experimentalExpandOnFocus","__next40pxDefaultSize","__nextHasNoMarginBottom","CreatePatternModal","modalTitle","restProps","Modal","onRequestClose","onClose","overlayClassName","CreatePatternModalContents","confirmLabel","defaultCategories","onError","onSuccess","defaultSyncType","defaultTitle","setSyncType","setCategoryTerms","setTitle","isSaving","setIsSaving","useDispatch","patternsStore","invalidateResolution","createErrorNotice","noticesStore","corePatternCategories","userPatternCategories","useSelect","getUserPatternCategories","getBlockPatternCategories","uniqueCategories","Map","forEach","set","name","id","has","onSubmit","event","preventDefault","patternTitle","sync","Promise","all","termName","existingTerm","termData","slug","throwOnError","error","code","data","term_id","findOrCreateTerm","newPattern","categoryId","message","onCreate","VStack","spacing","TextControl","placeholder","ToggleControl","_x","help","checked","HStack","justify","Button","variant","onClick","isBusy","getTermLabels","core","useDuplicatePatternProps","createSuccessNotice","sprintf","raw","SVG","xmlns","viewBox","Path","d","PatternConvertButton","clientIds","rootClientId","closeBlockSettingsMenu","isModalOpen","setIsModalOpen","canConvert","_getBlocksByClientId","canUser","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","rootId","length","blocks","isReusableBlock","getEntityRecord","every","block","isValid","hasBlockSupport","getContent","useCallback","serialize","Fragment","MenuItem","icon","symbol","handleSuccess","newBlock","createBlock","canRemove","isVisible","managePatternsUrl","canRemoveBlock","getBlockCount","getSettings","isBlockTheme","__unstableIsBlockBasedTheme","innerBlockCount","addQueryArgs","path","post_type","href","privateApis","DuplicatePatternModal","duplicatedProps","RenamePatternModal","props","originalName","setName","editEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","savedRecord","errorMessage","required","PatternsMenuItems","BlockSettingsMenuControls","selectedClientIds","PatternsManageButton","RenamePatternCategoryModal","existingCategories","useId","textControlRef","useRef","validationMessage","setValidationMessage","validationMessageId","speak","current","focus","patternCategories","find","existingCategory","newName","PartialSyncingControls","setAttributes","syncedAttributes","attributeSources","keys","attributeName","connections","source","InspectorControls","group","BaseControl","VisualLabel","CheckboxControl","isChecked","updatedConnections","metadata","size","crypto","getRandomValues","Uint8Array","byte","toString","toUpperCase","nanoid","updateConnections","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES"],"sourceRoot":""}