2023-09-26 10:23:26 -04:00
/******/ ( function ( ) { // webpackBootstrap
/******/ "use strict" ;
/******/ // The require scope
/******/ var _ _webpack _require _ _ = { } ;
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ ! function ( ) {
/******/ // define getter functions for harmony exports
/******/ _ _webpack _require _ _ . d = function ( exports , definition ) {
/******/ for ( var key in definition ) {
/******/ if ( _ _webpack _require _ _ . o ( definition , key ) && ! _ _webpack _require _ _ . o ( exports , key ) ) {
/******/ Object . defineProperty ( exports , key , { enumerable : true , get : definition [ key ] } ) ;
/******/ }
/******/ }
/******/ } ;
/******/ } ( ) ;
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ ! function ( ) {
/******/ _ _webpack _require _ _ . o = function ( obj , prop ) { return Object . prototype . hasOwnProperty . call ( obj , prop ) ; }
/******/ } ( ) ;
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ ! function ( ) {
/******/ // define __esModule on exports
/******/ _ _webpack _require _ _ . r = function ( exports ) {
/******/ if ( typeof Symbol !== 'undefined' && Symbol . toStringTag ) {
/******/ Object . defineProperty ( exports , Symbol . toStringTag , { value : 'Module' } ) ;
/******/ }
/******/ Object . defineProperty ( exports , '__esModule' , { value : true } ) ;
/******/ } ;
/******/ } ( ) ;
/******/
/************************************************************************/
var _ _webpack _exports _ _ = { } ;
// ESM COMPAT FLAG
_ _webpack _require _ _ . r ( _ _webpack _exports _ _ ) ;
// EXPORTS
_ _webpack _require _ _ . d ( _ _webpack _exports _ _ , {
privateApis : function ( ) { return /* reexport */ privateApis ; } ,
store : function ( ) { return /* reexport */ store ; }
} ) ;
// NAMESPACE OBJECT: ./node_modules/@wordpress/patterns/build-module/store/actions.js
var actions _namespaceObject = { } ;
_ _webpack _require _ _ . r ( actions _namespaceObject ) ;
_ _webpack _require _ _ . d ( actions _namespaceObject , {
convertSyncedPatternToStatic : function ( ) { return convertSyncedPatternToStatic ; } ,
createPattern : function ( ) { return createPattern ; } ,
createPatternFromFile : function ( ) { return createPatternFromFile ; } ,
setEditingPattern : function ( ) { return setEditingPattern ; }
} ) ;
// NAMESPACE OBJECT: ./node_modules/@wordpress/patterns/build-module/store/selectors.js
var selectors _namespaceObject = { } ;
_ _webpack _require _ _ . r ( selectors _namespaceObject ) ;
_ _webpack _require _ _ . d ( selectors _namespaceObject , {
isEditingPattern : function ( ) { return selectors _isEditingPattern ; }
} ) ;
; // CONCATENATED MODULE: external ["wp","data"]
var external _wp _data _namespaceObject = window [ "wp" ] [ "data" ] ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/store/reducer.js
/ * *
* WordPress dependencies
* /
function isEditingPattern ( state = { } , action ) {
if ( action ? . type === 'SET_EDITING_PATTERN' ) {
return {
... state ,
[ action . clientId ] : action . isEditing
} ;
}
return state ;
}
/* harmony default export */ var reducer = ( ( 0 , external _wp _data _namespaceObject . combineReducers ) ( {
isEditingPattern
} ) ) ;
; // CONCATENATED MODULE: external ["wp","blocks"]
var external _wp _blocks _namespaceObject = window [ "wp" ] [ "blocks" ] ;
; // CONCATENATED MODULE: external ["wp","coreData"]
var external _wp _coreData _namespaceObject = window [ "wp" ] [ "coreData" ] ;
; // CONCATENATED MODULE: external ["wp","blockEditor"]
var external _wp _blockEditor _namespaceObject = window [ "wp" ] [ "blockEditor" ] ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/constants.js
const PATTERN _TYPES = {
theme : 'pattern' ,
user : 'wp_block'
} ;
const PATTERN _DEFAULT _CATEGORY = 'all-patterns' ;
const PATTERN _USER _CATEGORY = 'my-patterns' ;
const PATTERN _CORE _SOURCES = [ 'core' , 'pattern-directory/core' , 'pattern-directory/featured' , 'pattern-directory/theme' ] ;
const PATTERN _SYNC _TYPES = {
full : 'fully' ,
unsynced : 'unsynced'
} ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/store/actions.js
/ * *
* WordPress dependencies
* /
/ * *
* Internal dependencies
* /
/ * *
* Returns a generator converting one or more static blocks into a pattern , or creating a new empty pattern .
*
* @ param { string } title Pattern title .
* @ param { 'full' | 'unsynced' } syncType They way block is synced , 'full' or 'unsynced' .
* @ param { string | undefined } [ content ] Optional serialized content of blocks to convert to pattern .
* @ param { number [ ] | undefined } [ categories ] Ids of any selected categories .
* /
const createPattern = ( title , syncType , content , categories ) => async ( {
registry
} ) => {
const meta = syncType === PATTERN _SYNC _TYPES . unsynced ? {
wp _pattern _sync _status : syncType
} : undefined ;
const reusableBlock = {
title ,
content ,
status : 'publish' ,
meta ,
wp _pattern _category : categories
} ;
const updatedRecord = await registry . dispatch ( external _wp _coreData _namespaceObject . store ) . saveEntityRecord ( 'postType' , 'wp_block' , reusableBlock ) ;
return updatedRecord ;
} ;
/ * *
* Create a pattern from a JSON file .
* @ param { File } file The JSON file instance of the pattern .
* @ param { number [ ] | undefined } [ categories ] Ids of any selected categories .
* /
const createPatternFromFile = ( file , categories ) => async ( {
dispatch
} ) => {
const fileContent = await file . text ( ) ;
/** @type {import('./types').PatternJSON} */
let parsedContent ;
try {
parsedContent = JSON . parse ( fileContent ) ;
} catch ( e ) {
throw new Error ( 'Invalid JSON file' ) ;
}
if ( parsedContent . _ _file !== 'wp_block' || ! parsedContent . title || ! parsedContent . content || typeof parsedContent . title !== 'string' || typeof parsedContent . content !== 'string' || parsedContent . syncStatus && typeof parsedContent . syncStatus !== 'string' ) {
2023-09-26 15:11:22 -04:00
throw new Error ( 'Invalid pattern JSON file' ) ;
2023-09-26 10:23:26 -04:00
}
const pattern = await dispatch . createPattern ( parsedContent . title , parsedContent . syncStatus , parsedContent . content , categories ) ;
return pattern ;
} ;
/ * *
* Returns a generator converting a synced pattern block into a static block .
*
* @ param { string } clientId The client ID of the block to attach .
* /
const convertSyncedPatternToStatic = clientId => ( {
registry
} ) => {
const oldBlock = registry . select ( external _wp _blockEditor _namespaceObject . store ) . getBlock ( clientId ) ;
const pattern = registry . select ( 'core' ) . getEditedEntityRecord ( 'postType' , 'wp_block' , oldBlock . attributes . ref ) ;
const newBlocks = ( 0 , external _wp _blocks _namespaceObject . parse ) ( typeof pattern . content === 'function' ? pattern . content ( pattern ) : pattern . content ) ;
registry . dispatch ( external _wp _blockEditor _namespaceObject . store ) . replaceBlocks ( oldBlock . clientId , newBlocks ) ;
} ;
/ * *
* Returns an action descriptor for SET _EDITING _PATTERN action .
*
* @ param { string } clientId The clientID of the pattern to target .
* @ param { boolean } isEditing Whether the block should be in editing state .
* @ return { Object } Action descriptor .
* /
function setEditingPattern ( clientId , isEditing ) {
return {
type : 'SET_EDITING_PATTERN' ,
clientId ,
isEditing
} ;
}
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/store/constants.js
/ * *
* Module Constants
* /
const STORE _NAME = 'core/patterns' ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/store/selectors.js
/ * *
* Returns true if pattern is in the editing state .
*
* @ param { Object } state Global application state .
* @ param { number } clientId the clientID of the block .
* @ return { boolean } Whether the pattern is in the editing state .
* /
function selectors _isEditingPattern ( state , clientId ) {
return state . isEditingPattern [ clientId ] ;
}
; // CONCATENATED MODULE: external ["wp","privateApis"]
var external _wp _privateApis _namespaceObject = window [ "wp" ] [ "privateApis" ] ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/lock-unlock.js
/ * *
* WordPress dependencies
* /
const {
lock ,
unlock
} = ( 0 , external _wp _privateApis _namespaceObject . _ _dangerousOptInToUnstableAPIsOnlyForCoreModules ) ( 'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.' , '@wordpress/patterns' ) ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/store/index.js
/ * *
* WordPress dependencies
* /
/ * *
* Internal dependencies
* /
/ * *
* Post editor data store configuration .
*
* @ see https : //github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore
*
* @ type { Object }
* /
const storeConfig = {
reducer : reducer
} ;
/ * *
* Store definition for the editor namespace .
*
* @ see https : //github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
*
* @ type { Object }
* /
const store = ( 0 , external _wp _data _namespaceObject . createReduxStore ) ( STORE _NAME , {
... storeConfig
} ) ;
( 0 , external _wp _data _namespaceObject . register ) ( store ) ;
unlock ( store ) . registerPrivateActions ( actions _namespaceObject ) ;
unlock ( store ) . registerPrivateSelectors ( selectors _namespaceObject ) ;
; // CONCATENATED MODULE: external ["wp","element"]
var external _wp _element _namespaceObject = window [ "wp" ] [ "element" ] ;
; // CONCATENATED MODULE: external ["wp","components"]
var external _wp _components _namespaceObject = window [ "wp" ] [ "components" ] ;
; // CONCATENATED MODULE: external ["wp","i18n"]
var external _wp _i18n _namespaceObject = window [ "wp" ] [ "i18n" ] ;
; // CONCATENATED MODULE: external ["wp","notices"]
var external _wp _notices _namespaceObject = window [ "wp" ] [ "notices" ] ;
; // CONCATENATED MODULE: external ["wp","compose"]
var external _wp _compose _namespaceObject = window [ "wp" ] [ "compose" ] ;
; // CONCATENATED MODULE: external ["wp","htmlEntities"]
var external _wp _htmlEntities _namespaceObject = window [ "wp" ] [ "htmlEntities" ] ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/components/category-selector.js
/ * *
* WordPress dependencies
* /
const unescapeString = arg => {
return ( 0 , external _wp _htmlEntities _namespaceObject . decodeEntities ) ( arg ) ;
} ;
const EMPTY _ARRAY = [ ] ;
const MAX _TERMS _SUGGESTIONS = 20 ;
const DEFAULT _QUERY = {
per _page : MAX _TERMS _SUGGESTIONS ,
_fields : 'id,name' ,
context : 'view'
} ;
const CATEGORY _SLUG = 'wp_pattern_category' ;
function CategorySelector ( {
values ,
onChange
} ) {
const [ search , setSearch ] = ( 0 , external _wp _element _namespaceObject . useState ) ( '' ) ;
const debouncedSearch = ( 0 , external _wp _compose _namespaceObject . useDebounce ) ( setSearch , 500 ) ;
const {
searchResults
} = ( 0 , external _wp _data _namespaceObject . useSelect ) ( select => {
const {
getEntityRecords
} = select ( external _wp _coreData _namespaceObject . store ) ;
return {
searchResults : ! ! search ? getEntityRecords ( 'taxonomy' , CATEGORY _SLUG , {
... DEFAULT _QUERY ,
search
} ) : EMPTY _ARRAY
} ;
} , [ search ] ) ;
const suggestions = ( 0 , external _wp _element _namespaceObject . useMemo ) ( ( ) => {
return ( searchResults !== null && searchResults !== void 0 ? searchResults : [ ] ) . map ( term => unescapeString ( term . name ) ) ;
} , [ searchResults ] ) ;
function handleChange ( termNames ) {
const uniqueTerms = termNames . reduce ( ( terms , newTerm ) => {
if ( ! terms . some ( term => term . toLowerCase ( ) === newTerm . toLowerCase ( ) ) ) {
terms . push ( newTerm ) ;
}
return terms ;
} , [ ] ) ;
onChange ( uniqueTerms ) ;
}
return ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _element _namespaceObject . Fragment , null , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . FormTokenField , {
className : "patterns-menu-items__convert-modal-categories" ,
value : values ,
suggestions : suggestions ,
onChange : handleChange ,
onInputChange : debouncedSearch ,
maxSuggestions : MAX _TERMS _SUGGESTIONS ,
label : ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Categories' ) ,
tokenizeOnBlur : true
} ) ) ;
}
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/components/create-pattern-modal.js
/ * *
* WordPress dependencies
* /
/ * *
* Internal dependencies
* /
/ * *
* Internal dependencies
* /
function CreatePatternModal ( {
onSuccess ,
onError ,
content ,
onClose ,
className = 'patterns-menu-items__convert-modal'
} ) {
const [ syncType , setSyncType ] = ( 0 , external _wp _element _namespaceObject . useState ) ( PATTERN _SYNC _TYPES . full ) ;
const [ categoryTerms , setCategoryTerms ] = ( 0 , external _wp _element _namespaceObject . useState ) ( [ ] ) ;
const [ title , setTitle ] = ( 0 , external _wp _element _namespaceObject . useState ) ( '' ) ;
const [ isSaving , setIsSaving ] = ( 0 , external _wp _element _namespaceObject . useState ) ( false ) ;
const {
createPattern
} = unlock ( ( 0 , external _wp _data _namespaceObject . useDispatch ) ( store ) ) ;
const {
saveEntityRecord ,
invalidateResolution
} = ( 0 , external _wp _data _namespaceObject . useDispatch ) ( external _wp _coreData _namespaceObject . store ) ;
const {
createErrorNotice
} = ( 0 , external _wp _data _namespaceObject . useDispatch ) ( external _wp _notices _namespaceObject . store ) ;
async function onCreate ( patternTitle , sync ) {
if ( ! title || isSaving ) {
return ;
}
try {
setIsSaving ( true ) ;
const categories = await Promise . all ( categoryTerms . map ( termName => findOrCreateTerm ( termName ) ) ) ;
const newPattern = await createPattern ( patternTitle , sync , typeof content === 'function' ? content ( ) : content , categories ) ;
onSuccess ( {
pattern : newPattern ,
categoryId : PATTERN _DEFAULT _CATEGORY
} ) ;
} catch ( error ) {
createErrorNotice ( error . message , {
type : 'snackbar' ,
id : 'convert-to-pattern-error'
} ) ;
onError ( ) ;
} finally {
setIsSaving ( false ) ;
setCategoryTerms ( [ ] ) ;
setTitle ( '' ) ;
}
}
/ * *
* @ param { string } term
* @ return { Promise < number > } The pattern category id .
* /
async function findOrCreateTerm ( term ) {
try {
const newTerm = await saveEntityRecord ( 'taxonomy' , CATEGORY _SLUG , {
name : term
} , {
throwOnError : true
} ) ;
invalidateResolution ( 'getUserPatternCategories' ) ;
return newTerm . id ;
} catch ( error ) {
if ( error . code !== 'term_exists' ) {
throw error ;
}
return error . data . term _id ;
}
}
return ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . Modal , {
title : ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Create pattern' ) ,
onRequestClose : ( ) => {
onClose ( ) ;
setTitle ( '' ) ;
} ,
overlayClassName : className
} , ( 0 , external _wp _element _namespaceObject . createElement ) ( "form" , {
onSubmit : event => {
event . preventDefault ( ) ;
onCreate ( title , syncType ) ;
}
} , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . _ _experimentalVStack , {
spacing : "5"
} , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . TextControl , {
_ _nextHasNoMarginBottom : true ,
label : ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Name' ) ,
value : title ,
onChange : setTitle ,
placeholder : ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'My pattern' ) ,
className : "patterns-create-modal__name-input"
} ) , ( 0 , external _wp _element _namespaceObject . createElement ) ( CategorySelector , {
values : categoryTerms ,
onChange : setCategoryTerms
} ) , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . ToggleControl , {
label : ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Synced' ) ,
help : ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Editing the pattern will update it anywhere it is used.' ) ,
checked : syncType === PATTERN _SYNC _TYPES . full ,
onChange : ( ) => {
setSyncType ( syncType === PATTERN _SYNC _TYPES . full ? PATTERN _SYNC _TYPES . unsynced : PATTERN _SYNC _TYPES . full ) ;
}
} ) , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . _ _experimentalHStack , {
justify : "right"
} , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . Button , {
variant : "tertiary" ,
onClick : ( ) => {
onClose ( ) ;
setTitle ( '' ) ;
}
} , ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Cancel' ) ) , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . Button , {
variant : "primary" ,
type : "submit" ,
"aria-disabled" : ! title || isSaving ,
isBusy : isSaving
} , ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Create' ) ) ) ) ) ) ;
}
; // CONCATENATED MODULE: external ["wp","primitives"]
var external _wp _primitives _namespaceObject = window [ "wp" ] [ "primitives" ] ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol.js
/ * *
* WordPress dependencies
* /
const symbol = ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _primitives _namespaceObject . SVG , {
xmlns : "http://www.w3.org/2000/svg" ,
viewBox : "0 0 24 24"
} , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _primitives _namespaceObject . 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"
} ) ) ;
/* harmony default export */ var library _symbol = ( symbol ) ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/components/pattern-convert-button.js
/ * *
* WordPress dependencies
* /
/ * *
* Internal dependencies
* /
2023-09-26 15:11:22 -04:00
2023-09-26 10:23:26 -04:00
/ * *
* Menu control to convert block ( s ) to a pattern block .
*
* @ param { Object } props Component props .
* @ param { string [ ] } props . clientIds Client ids of selected blocks .
* @ param { string } props . rootClientId ID of the currently selected top - level block .
* @ return { import ( '@wordpress/element' ) . WPComponent } The menu control or null .
* /
function PatternConvertButton ( {
clientIds ,
rootClientId
} ) {
const {
createSuccessNotice
} = ( 0 , external _wp _data _namespaceObject . useDispatch ) ( external _wp _notices _namespaceObject . store ) ;
const {
replaceBlocks
} = ( 0 , external _wp _data _namespaceObject . useDispatch ) ( external _wp _blockEditor _namespaceObject . store ) ;
// Ignore reason: false positive of the lint rule.
// eslint-disable-next-line @wordpress/no-unused-vars-before-return
const {
setEditingPattern
} = unlock ( ( 0 , external _wp _data _namespaceObject . useDispatch ) ( store ) ) ;
const [ isModalOpen , setIsModalOpen ] = ( 0 , external _wp _element _namespaceObject . useState ) ( false ) ;
const canConvert = ( 0 , external _wp _data _namespaceObject . useSelect ) ( select => {
var _getBlocksByClientId ;
const {
canUser
} = select ( external _wp _coreData _namespaceObject . store ) ;
const {
getBlocksByClientId ,
canInsertBlockType ,
getBlockRootClientId
} = select ( external _wp _blockEditor _namespaceObject . store ) ;
const rootId = rootClientId || ( clientIds . length > 0 ? getBlockRootClientId ( clientIds [ 0 ] ) : undefined ) ;
const blocks = ( _getBlocksByClientId = getBlocksByClientId ( clientIds ) ) !== null && _getBlocksByClientId !== void 0 ? _getBlocksByClientId : [ ] ;
const isReusable = blocks . length === 1 && blocks [ 0 ] && ( 0 , external _wp _blocks _namespaceObject . isReusableBlock ) ( blocks [ 0 ] ) && ! ! select ( external _wp _coreData _namespaceObject . store ) . getEntityRecord ( 'postType' , 'wp_block' , blocks [ 0 ] . attributes . ref ) ;
const _canConvert =
// Hide when this is already a synced pattern.
! isReusable &&
// Hide when patterns are disabled.
canInsertBlockType ( 'core/block' , rootId ) && blocks . every ( block =>
// Guard against the case where a regular block has *just* been converted.
! ! block &&
// Hide on invalid blocks.
block . isValid &&
// Hide when block doesn't support being made into a pattern.
( 0 , external _wp _blocks _namespaceObject . hasBlockSupport ) ( block . name , 'reusable' , true ) ) &&
// Hide when current doesn't have permission to do that.
! ! canUser ( 'create' , 'blocks' ) ;
return _canConvert ;
} , [ clientIds , rootClientId ] ) ;
const {
getBlocksByClientId
} = ( 0 , external _wp _data _namespaceObject . useSelect ) ( external _wp _blockEditor _namespaceObject . store ) ;
const getContent = ( 0 , external _wp _element _namespaceObject . useCallback ) ( ( ) => ( 0 , external _wp _blocks _namespaceObject . serialize ) ( getBlocksByClientId ( clientIds ) ) , [ getBlocksByClientId , clientIds ] ) ;
if ( ! canConvert ) {
return null ;
}
const handleSuccess = ( {
pattern
} ) => {
2023-09-26 15:11:22 -04:00
if ( pattern . wp _pattern _sync _status !== PATTERN _SYNC _TYPES . unsynced ) {
const newBlock = ( 0 , external _wp _blocks _namespaceObject . createBlock ) ( 'core/block' , {
ref : pattern . id
} ) ;
replaceBlocks ( clientIds , newBlock ) ;
setEditingPattern ( newBlock . clientId , true ) ;
}
createSuccessNotice ( pattern . wp _pattern _sync _status === PATTERN _SYNC _TYPES . unsynced ? ( 0 , external _wp _i18n _namespaceObject . sprintf ) (
2023-09-26 10:23:26 -04:00
// translators: %s: the name the user has given to the pattern.
2023-09-26 15:11:22 -04:00
( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Unsynced pattern created: %s' ) , pattern . title . raw ) : ( 0 , external _wp _i18n _namespaceObject . sprintf ) (
2023-09-26 10:23:26 -04:00
// translators: %s: the name the user has given to the pattern.
2023-09-26 15:11:22 -04:00
( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Synced pattern created: %s' ) , pattern . title . raw ) , {
2023-09-26 10:23:26 -04:00
type : 'snackbar' ,
id : 'convert-to-pattern-success'
} ) ;
setIsModalOpen ( false ) ;
} ;
return ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _element _namespaceObject . Fragment , null , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . MenuItem , {
icon : library _symbol ,
onClick : ( ) => setIsModalOpen ( true ) ,
"aria-expanded" : isModalOpen ,
"aria-haspopup" : "dialog"
} , ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Create pattern' ) ) , isModalOpen && ( 0 , external _wp _element _namespaceObject . createElement ) ( CreatePatternModal , {
content : getContent ,
onSuccess : pattern => {
handleSuccess ( pattern ) ;
} ,
onError : ( ) => {
setIsModalOpen ( false ) ;
} ,
onClose : ( ) => {
setIsModalOpen ( false ) ;
}
} ) ) ;
}
; // CONCATENATED MODULE: external ["wp","url"]
var external _wp _url _namespaceObject = window [ "wp" ] [ "url" ] ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/components/patterns-manage-button.js
/ * *
* WordPress dependencies
* /
/ * *
* Internal dependencies
* /
function PatternsManageButton ( {
clientId
} ) {
const {
canRemove ,
isVisible ,
innerBlockCount ,
managePatternsUrl
} = ( 0 , external _wp _data _namespaceObject . useSelect ) ( select => {
const {
getBlock ,
canRemoveBlock ,
getBlockCount ,
getSettings
} = select ( external _wp _blockEditor _namespaceObject . store ) ;
const {
canUser
} = select ( external _wp _coreData _namespaceObject . store ) ;
const reusableBlock = getBlock ( clientId ) ;
const isBlockTheme = getSettings ( ) . _ _unstableIsBlockBasedTheme ;
return {
canRemove : canRemoveBlock ( clientId ) ,
isVisible : ! ! reusableBlock && ( 0 , external _wp _blocks _namespaceObject . isReusableBlock ) ( reusableBlock ) && ! ! canUser ( 'update' , 'blocks' , reusableBlock . attributes . ref ) ,
innerBlockCount : getBlockCount ( clientId ) ,
// The site editor and templates both check whether the user
// has edit_theme_options capabilities. We can leverage that here
// and omit the manage patterns link if the user can't access it.
managePatternsUrl : isBlockTheme && canUser ( 'read' , 'templates' ) ? ( 0 , external _wp _url _namespaceObject . addQueryArgs ) ( 'site-editor.php' , {
path : '/patterns'
} ) : ( 0 , external _wp _url _namespaceObject . addQueryArgs ) ( 'edit.php' , {
post _type : 'wp_block'
} )
} ;
} , [ clientId ] ) ;
// Ignore reason: false positive of the lint rule.
// eslint-disable-next-line @wordpress/no-unused-vars-before-return
const {
convertSyncedPatternToStatic
} = unlock ( ( 0 , external _wp _data _namespaceObject . useDispatch ) ( store ) ) ;
if ( ! isVisible ) {
return null ;
}
return ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _element _namespaceObject . Fragment , null , ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . MenuItem , {
href : managePatternsUrl
} , ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Manage patterns' ) ) , canRemove && ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _components _namespaceObject . MenuItem , {
onClick : ( ) => convertSyncedPatternToStatic ( clientId )
} , innerBlockCount > 1 ? ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Detach patterns' ) : ( 0 , external _wp _i18n _namespaceObject . _ _ ) ( 'Detach pattern' ) ) ) ;
}
/* harmony default export */ var patterns _manage _button = ( PatternsManageButton ) ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/components/index.js
/ * *
* WordPress dependencies
* /
/ * *
* Internal dependencies
* /
function PatternsMenuItems ( {
rootClientId
} ) {
return ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _blockEditor _namespaceObject . BlockSettingsMenuControls , null , ( {
selectedClientIds
} ) => ( 0 , external _wp _element _namespaceObject . createElement ) ( external _wp _element _namespaceObject . Fragment , null , ( 0 , external _wp _element _namespaceObject . createElement ) ( PatternConvertButton , {
clientIds : selectedClientIds ,
rootClientId : rootClientId
} ) , selectedClientIds . length === 1 && ( 0 , external _wp _element _namespaceObject . createElement ) ( patterns _manage _button , {
clientId : selectedClientIds [ 0 ]
} ) ) ) ;
}
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/private-apis.js
/ * *
* Internal dependencies
* /
const privateApis = { } ;
lock ( privateApis , {
CreatePatternModal : CreatePatternModal ,
PatternsMenuItems : PatternsMenuItems ,
PATTERN _TYPES : PATTERN _TYPES ,
PATTERN _DEFAULT _CATEGORY : PATTERN _DEFAULT _CATEGORY ,
PATTERN _USER _CATEGORY : PATTERN _USER _CATEGORY ,
PATTERN _CORE _SOURCES : PATTERN _CORE _SOURCES ,
PATTERN _SYNC _TYPES : PATTERN _SYNC _TYPES
} ) ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/patterns/build-module/index.js
/ * *
* Internal dependencies
* /
( window . wp = window . wp || { } ) . patterns = _ _webpack _exports _ _ ;
/******/ } ) ( )
;