@wordpress/patterns 1.15.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/build/api/index.js +22 -0
- package/build/api/index.js.map +1 -0
- package/build/components/allow-overrides-modal.js +114 -0
- package/build/components/allow-overrides-modal.js.map +1 -0
- package/build/components/category-selector.js.map +1 -1
- package/build/components/create-pattern-modal.js.map +1 -1
- package/build/components/duplicate-pattern-modal.js.map +1 -1
- package/build/components/index.js.map +1 -1
- package/build/components/overrides-panel.js +44 -0
- package/build/components/overrides-panel.js.map +1 -0
- package/build/components/pattern-convert-button.js.map +1 -1
- package/build/components/pattern-overrides-controls.js +107 -0
- package/build/components/pattern-overrides-controls.js.map +1 -0
- package/build/components/patterns-manage-button.js.map +1 -1
- package/build/components/rename-pattern-category-modal.js.map +1 -1
- package/build/components/rename-pattern-modal.js.map +1 -1
- package/build/components/reset-overrides-control.js.map +1 -1
- package/build/constants.js +2 -1
- package/build/constants.js.map +1 -1
- package/build/index.js.map +1 -1
- package/build/index.native.js.map +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/private-apis.js +7 -3
- package/build/private-apis.js.map +1 -1
- package/build/private-hooks.js.map +1 -1
- package/build/store/actions.js.map +1 -1
- package/build/store/constants.js.map +1 -1
- package/build/store/index.js +1 -1
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js.map +1 -1
- package/build-module/api/index.js +16 -0
- package/build-module/api/index.js.map +1 -0
- package/build-module/components/allow-overrides-modal.js +106 -0
- package/build-module/components/allow-overrides-modal.js.map +1 -0
- package/build-module/components/category-selector.js.map +1 -1
- package/build-module/components/create-pattern-modal.js.map +1 -1
- package/build-module/components/duplicate-pattern-modal.js.map +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/overrides-panel.js +37 -0
- package/build-module/components/overrides-panel.js.map +1 -0
- package/build-module/components/pattern-convert-button.js.map +1 -1
- package/build-module/components/pattern-overrides-controls.js +100 -0
- package/build-module/components/pattern-overrides-controls.js.map +1 -0
- package/build-module/components/patterns-manage-button.js.map +1 -1
- package/build-module/components/rename-pattern-category-modal.js.map +1 -1
- package/build-module/components/rename-pattern-modal.js.map +1 -1
- package/build-module/components/reset-overrides-control.js.map +1 -1
- package/build-module/constants.js +1 -0
- package/build-module/constants.js.map +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/index.native.js.map +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/private-apis.js +6 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-hooks.js.map +1 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/constants.js.map +1 -1
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +6 -1
- package/build-style/style.css +6 -1
- package/package.json +16 -16
- package/src/api/index.js +24 -0
- package/src/components/allow-overrides-modal.js +149 -0
- package/src/components/overrides-panel.js +45 -0
- package/src/components/pattern-overrides-controls.js +145 -0
- package/src/components/style.scss +6 -0
- package/src/constants.js +2 -0
- package/src/private-apis.js +6 -2
- package/build/components/use-set-pattern-bindings.js +0 -103
- package/build/components/use-set-pattern-bindings.js.map +0 -1
- package/build-module/components/use-set-pattern-bindings.js +0 -96
- package/build-module/components/use-set-pattern-bindings.js.map +0 -1
- package/src/components/use-set-pattern-bindings.js +0 -120
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Modal","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","ToggleControl","__","_x","useState","useDispatch","store","noticesStore","PATTERN_DEFAULT_CATEGORY","PATTERN_SYNC_TYPES","patternsStore","CategorySelector","useAddPatternCategory","unlock","CreatePatternModal","className","modalTitle","restProps","createElement","title","onRequestClose","onClose","overlayClassName","CreatePatternModalContents","confirmLabel","defaultCategories","content","onError","onSuccess","defaultSyncType","full","defaultTitle","syncType","setSyncType","categoryTerms","setCategoryTerms","setTitle","isSaving","setIsSaving","createPattern","createErrorNotice","categoryMap","findOrCreateTerm","onCreate","patternTitle","sync","categories","Promise","all","map","termName","newPattern","pattern","categoryId","error","message","type","id","onSubmit","event","preventDefault","spacing","label","value","onChange","placeholder","__nextHasNoMarginBottom","__next40pxDefaultSize","help","checked","unsynced","justify","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/create-pattern-modal.js"],"sourcesContent":["/**\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 } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_DEFAULT_CATEGORY, PATTERN_SYNC_TYPES } 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 = __( '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 { 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__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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Modal","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","ToggleControl","__","_x","useState","useDispatch","store","noticesStore","PATTERN_DEFAULT_CATEGORY","PATTERN_SYNC_TYPES","patternsStore","CategorySelector","useAddPatternCategory","unlock","CreatePatternModal","className","modalTitle","restProps","createElement","title","onRequestClose","onClose","overlayClassName","CreatePatternModalContents","confirmLabel","defaultCategories","content","onError","onSuccess","defaultSyncType","full","defaultTitle","syncType","setSyncType","categoryTerms","setCategoryTerms","setTitle","isSaving","setIsSaving","createPattern","createErrorNotice","categoryMap","findOrCreateTerm","onCreate","patternTitle","sync","categories","Promise","all","map","termName","newPattern","pattern","categoryId","error","message","type","id","onSubmit","event","preventDefault","spacing","label","value","onChange","placeholder","__nextHasNoMarginBottom","__next40pxDefaultSize","help","checked","unsynced","justify","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/create-pattern-modal.js"],"sourcesContent":["/**\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 } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_DEFAULT_CATEGORY, PATTERN_SYNC_TYPES } 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 = __( '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 { 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__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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["store","coreStore","useDispatch","useSelect","__","sprintf","noticesStore","CreatePatternModal","PATTERN_SYNC_TYPES","PATTERN_TYPES","getTermLabels","pattern","categories","type","user","core","filter","category","includes","name","map","label","wp_pattern_category","id","useDuplicatePatternProps","onSuccess","createSuccessNotice","select","getUserPatternCategories","getBlockPatternCategories","content","defaultCategories","defaultSyncType","unsynced","wp_pattern_sync_status","full","defaultTitle","title","raw","newPattern","DuplicatePatternModal","onClose","duplicatedProps","createElement","modalTitle","confirmLabel","onError"],"sources":["@wordpress/patterns/src/components/duplicate-pattern-modal.js"],"sourcesContent":["/**\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["store","coreStore","useDispatch","useSelect","__","sprintf","noticesStore","CreatePatternModal","PATTERN_SYNC_TYPES","PATTERN_TYPES","getTermLabels","pattern","categories","type","user","core","filter","category","includes","name","map","label","wp_pattern_category","id","useDuplicatePatternProps","onSuccess","createSuccessNotice","select","getUserPatternCategories","getBlockPatternCategories","content","defaultCategories","defaultSyncType","unsynced","wp_pattern_sync_status","full","defaultTitle","title","raw","newPattern","DuplicatePatternModal","onClose","duplicatedProps","createElement","modalTitle","confirmLabel","onError"],"sources":["@wordpress/patterns/src/components/duplicate-pattern-modal.js"],"sourcesContent":["/**\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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BlockSettingsMenuControls","PatternConvertButton","PatternsManageButton","PatternsMenuItems","rootClientId","createElement","selectedClientIds","onClose","Fragment","clientIds","closeBlockSettingsMenu","length","clientId"],"sources":["@wordpress/patterns/src/components/index.js"],"sourcesContent":["/**\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"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,yBAAyB,QAAQ,yBAAyB;;AAEnE;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,OAAOC,oBAAoB,MAAM,0BAA0B;AAE3D,eAAe,SAASC,iBAAiBA,CAAE;EAAEC;AAAa,CAAC,EAAG;EAC7D,OACCC,aAAA,CAACL,yBAAyB,QACvB,CAAE;IAAEM,iBAAiB;IAAEC;EAAQ,CAAC,KACjCF,aAAA,CAAAG,QAAA,QACCH,aAAA,CAACJ,oBAAoB;IACpBQ,SAAS,EAAGH,iBAAmB;IAC/BF,YAAY,EAAGA,YAAc;IAC7BM,sBAAsB,EAAGH;EAAS,CAClC,CAAC,EACAD,iBAAiB,CAACK,MAAM,KAAK,CAAC,IAC/BN,aAAA,CAACH,oBAAoB;IACpBU,QAAQ,EAAGN,iBAAiB,CAAE,CAAC;EAAI,CACnC,CAED,CAEuB,CAAC;AAE9B"}
|
|
1
|
+
{"version":3,"names":["BlockSettingsMenuControls","PatternConvertButton","PatternsManageButton","PatternsMenuItems","rootClientId","createElement","selectedClientIds","onClose","Fragment","clientIds","closeBlockSettingsMenu","length","clientId"],"sources":["@wordpress/patterns/src/components/index.js"],"sourcesContent":["/**\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"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,yBAAyB,QAAQ,yBAAyB;;AAEnE;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,OAAOC,oBAAoB,MAAM,0BAA0B;AAE3D,eAAe,SAASC,iBAAiBA,CAAE;EAAEC;AAAa,CAAC,EAAG;EAC7D,OACCC,aAAA,CAACL,yBAAyB,QACvB,CAAE;IAAEM,iBAAiB;IAAEC;EAAQ,CAAC,KACjCF,aAAA,CAAAG,QAAA,QACCH,aAAA,CAACJ,oBAAoB;IACpBQ,SAAS,EAAGH,iBAAmB;IAC/BF,YAAY,EAAGA,YAAc;IAC7BM,sBAAsB,EAAGH;EAAS,CAClC,CAAC,EACAD,iBAAiB,CAACK,MAAM,KAAK,CAAC,IAC/BN,aAAA,CAACH,oBAAoB;IACpBU,QAAQ,EAAGN,iBAAiB,CAAE,CAAC;EAAI,CACnC,CAED,CAEuB,CAAC;AAE9B","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* WordPress dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { privateApis as blockEditorPrivateApis, store as blockEditorStore } from '@wordpress/block-editor';
|
|
6
|
+
import { PanelBody } from '@wordpress/components';
|
|
7
|
+
import { useSelect } from '@wordpress/data';
|
|
8
|
+
import { useMemo } from '@wordpress/element';
|
|
9
|
+
import { __ } from '@wordpress/i18n';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal dependencies
|
|
13
|
+
*/
|
|
14
|
+
import { isOverridableBlock } from '../api';
|
|
15
|
+
import { unlock } from '../lock-unlock';
|
|
16
|
+
const {
|
|
17
|
+
BlockQuickNavigation
|
|
18
|
+
} = unlock(blockEditorPrivateApis);
|
|
19
|
+
export default function OverridesPanel() {
|
|
20
|
+
const allClientIds = useSelect(select => select(blockEditorStore).getClientIdsWithDescendants(), []);
|
|
21
|
+
const {
|
|
22
|
+
getBlock
|
|
23
|
+
} = useSelect(blockEditorStore);
|
|
24
|
+
const clientIdsWithOverrides = useMemo(() => allClientIds.filter(clientId => {
|
|
25
|
+
const block = getBlock(clientId);
|
|
26
|
+
return isOverridableBlock(block);
|
|
27
|
+
}), [allClientIds, getBlock]);
|
|
28
|
+
if (!clientIdsWithOverrides?.length) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return createElement(PanelBody, {
|
|
32
|
+
title: __('Overrides')
|
|
33
|
+
}, createElement(BlockQuickNavigation, {
|
|
34
|
+
clientIds: clientIdsWithOverrides
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=overrides-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["privateApis","blockEditorPrivateApis","store","blockEditorStore","PanelBody","useSelect","useMemo","__","isOverridableBlock","unlock","BlockQuickNavigation","OverridesPanel","allClientIds","select","getClientIdsWithDescendants","getBlock","clientIdsWithOverrides","filter","clientId","block","length","createElement","title","clientIds"],"sources":["@wordpress/patterns/src/components/overrides-panel.js"],"sourcesContent":["/**\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 = useSelect(\n\t\t( select ) => select( blockEditorStore ).getClientIdsWithDescendants(),\n\t\t[]\n\t);\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst clientIdsWithOverrides = useMemo(\n\t\t() =>\n\t\t\tallClientIds.filter( ( clientId ) => {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\treturn isOverridableBlock( block );\n\t\t\t} ),\n\t\t[ allClientIds, getBlock ]\n\t);\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"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,WAAW,IAAIC,sBAAsB,EACrCC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SAASC,SAAS,QAAQ,uBAAuB;AACjD,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,kBAAkB,QAAQ,QAAQ;AAC3C,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,MAAM;EAAEC;AAAqB,CAAC,GAAGD,MAAM,CAAER,sBAAuB,CAAC;AAEjE,eAAe,SAASU,cAAcA,CAAA,EAAG;EACxC,MAAMC,YAAY,GAAGP,SAAS,CAC3BQ,MAAM,IAAMA,MAAM,CAAEV,gBAAiB,CAAC,CAACW,2BAA2B,CAAC,CAAC,EACtE,EACD,CAAC;EACD,MAAM;IAAEC;EAAS,CAAC,GAAGV,SAAS,CAAEF,gBAAiB,CAAC;EAClD,MAAMa,sBAAsB,GAAGV,OAAO,CACrC,MACCM,YAAY,CAACK,MAAM,CAAIC,QAAQ,IAAM;IACpC,MAAMC,KAAK,GAAGJ,QAAQ,CAAEG,QAAS,CAAC;IAClC,OAAOV,kBAAkB,CAAEW,KAAM,CAAC;EACnC,CAAE,CAAC,EACJ,CAAEP,YAAY,EAAEG,QAAQ,CACzB,CAAC;EAED,IAAK,CAAEC,sBAAsB,EAAEI,MAAM,EAAG;IACvC,OAAO,IAAI;EACZ;EAEA,OACCC,aAAA,CAACjB,SAAS;IAACkB,KAAK,EAAGf,EAAE,CAAE,WAAY;EAAG,GACrCc,aAAA,CAACX,oBAAoB;IAACa,SAAS,EAAGP;EAAwB,CAAE,CAClD,CAAC;AAEd","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["hasBlockSupport","isReusableBlock","createBlock","serialize","store","blockEditorStore","useState","useCallback","MenuItem","symbol","useSelect","useDispatch","coreStore","__","sprintf","noticesStore","patternsStore","CreatePatternModal","unlock","PATTERN_SYNC_TYPES","PatternConvertButton","clientIds","rootClientId","closeBlockSettingsMenu","createSuccessNotice","replaceBlocks","setEditingPattern","isModalOpen","setIsModalOpen","canConvert","select","_getBlocksByClientId","canUser","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","rootId","length","undefined","blocks","isReusable","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","getContent","handleSuccess","pattern","wp_pattern_sync_status","unsynced","newBlock","id","clientId","title","raw","type","createElement","Fragment","icon","onClick","content","onSuccess","onError","onClose"],"sources":["@wordpress/patterns/src/components/pattern-convert-button.js"],"sourcesContent":["/**\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"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,eAAe,EACfC,eAAe,EACfC,WAAW,EACXC,SAAS,QACH,mBAAmB;AAC1B,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,QAAQ,EAAEC,WAAW,QAAQ,oBAAoB;AAC1D,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASP,KAAK,IAAIQ,SAAS,QAAQ,sBAAsB;AACzD,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASV,KAAK,IAAIW,YAAY,QAAQ,oBAAoB;AAC1D;AACA;AACA;AACA,SAASX,KAAK,IAAIY,aAAa,QAAQ,UAAU;AACjD,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,kBAAkB,QAAQ,cAAc;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASC,oBAAoBA,CAAE;EAC7CC,SAAS;EACTC,YAAY;EACZC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAoB,CAAC,GAAGb,WAAW,CAAEI,YAAa,CAAC;EAC3D,MAAM;IAAEU;EAAc,CAAC,GAAGd,WAAW,CAAEN,gBAAiB,CAAC;EACzD;EACA;EACA,MAAM;IAAEqB;EAAkB,CAAC,GAAGR,MAAM,CAAEP,WAAW,CAAEK,aAAc,CAAE,CAAC;EACpE,MAAM,CAAEW,WAAW,EAAEC,cAAc,CAAE,GAAGtB,QAAQ,CAAE,KAAM,CAAC;EACzD,MAAMuB,UAAU,GAAGnB,SAAS,CACzBoB,MAAM,IAAM;IAAA,IAAAC,oBAAA;IACb,MAAM;MAAEC;IAAQ,CAAC,GAAGF,MAAM,CAAElB,SAAU,CAAC;IACvC,MAAM;MACLqB,mBAAmB;MACnBC,kBAAkB;MAClBC;IACD,CAAC,GAAGL,MAAM,CAAEzB,gBAAiB,CAAC;IAE9B,MAAM+B,MAAM,GACXd,YAAY,KACVD,SAAS,CAACgB,MAAM,GAAG,CAAC,GACnBF,oBAAoB,CAAEd,SAAS,CAAE,CAAC,CAAG,CAAC,GACtCiB,SAAS,CAAE;IAEf,MAAMC,MAAM,IAAAR,oBAAA,GAAGE,mBAAmB,CAAEZ,SAAU,CAAC,cAAAU,oBAAA,cAAAA,oBAAA,GAAI,EAAE;IAErD,MAAMS,UAAU,GACfD,MAAM,CAACF,MAAM,KAAK,CAAC,IACnBE,MAAM,CAAE,CAAC,CAAE,IACXtC,eAAe,CAAEsC,MAAM,CAAE,CAAC,CAAG,CAAC,IAC9B,CAAC,CAAET,MAAM,CAAElB,SAAU,CAAC,CAAC6B,eAAe,CACrC,UAAU,EACV,UAAU,EACVF,MAAM,CAAE,CAAC,CAAE,CAACG,UAAU,CAACC,GACxB,CAAC;IAEF,MAAMC,WAAW;IAChB;IACA,CAAEJ,UAAU;IACZ;IACAN,kBAAkB,CAAE,YAAY,EAAEE,MAAO,CAAC,IAC1CG,MAAM,CAACM,KAAK,CACTC,KAAK;IACN;IACA,CAAC,CAAEA,KAAK;IACR;IACAA,KAAK,CAACC,OAAO;IACb;IACA/C,eAAe,CAAE8C,KAAK,CAACE,IAAI,EAAE,UAAU,EAAE,IAAK,CAChD,CAAC;IACD;IACA,CAAC,CAAEhB,OAAO,CAAE,QAAQ,EAAE,QAAS,CAAC;IAEjC,OAAOY,WAAW;EACnB,CAAC,EACD,CAAEvB,SAAS,EAAEC,YAAY,CAC1B,CAAC;EACD,MAAM;IAAEW;EAAoB,CAAC,GAAGvB,SAAS,CAAEL,gBAAiB,CAAC;EAC7D,MAAM4C,UAAU,GAAG1C,WAAW,CAC7B,MAAMJ,SAAS,CAAE8B,mBAAmB,CAAEZ,SAAU,CAAE,CAAC,EACnD,CAAEY,mBAAmB,EAAEZ,SAAS,CACjC,CAAC;EAED,IAAK,CAAEQ,UAAU,EAAG;IACnB,OAAO,IAAI;EACZ;EAEA,MAAMqB,aAAa,GAAGA,CAAE;IAAEC;EAAQ,CAAC,KAAM;IACxC,IAAKA,OAAO,CAACC,sBAAsB,KAAKjC,kBAAkB,CAACkC,QAAQ,EAAG;MACrE,MAAMC,QAAQ,GAAGpD,WAAW,CAAE,YAAY,EAAE;QAC3CyC,GAAG,EAAEQ,OAAO,CAACI;MACd,CAAE,CAAC;MAEH9B,aAAa,CAAEJ,SAAS,EAAEiC,QAAS,CAAC;MACpC5B,iBAAiB,CAAE4B,QAAQ,CAACE,QAAQ,EAAE,IAAK,CAAC;MAC5CjC,sBAAsB,CAAC,CAAC;IACzB;IAEAC,mBAAmB,CAClB2B,OAAO,CAACC,sBAAsB,KAAKjC,kBAAkB,CAACkC,QAAQ,GAC3DvC,OAAO;IACP;IACAD,EAAE,CAAE,8BAA+B,CAAC,EACpCsC,OAAO,CAACM,KAAK,CAACC,GACd,CAAC,GACD5C,OAAO;IACP;IACAD,EAAE,CAAE,4BAA6B,CAAC,EAClCsC,OAAO,CAACM,KAAK,CAACC,GACd,CAAC,EACJ;MACCC,IAAI,EAAE,UAAU;MAChBJ,EAAE,EAAE;IACL,CACD,CAAC;IACD3B,cAAc,CAAE,KAAM,CAAC;EACxB,CAAC;EACD,OACCgC,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACpD,QAAQ;IACRsD,IAAI,EAAGrD,MAAQ;IACfsD,OAAO,EAAGA,CAAA,KAAMnC,cAAc,CAAE,IAAK,CAAG;IACxC,iBAAgBD,WAAa;IAC7B,iBAAc;EAAQ,GAEpBd,EAAE,CAAE,gBAAiB,CACd,CAAC,EACTc,WAAW,IACZiC,aAAA,CAAC3C,kBAAkB;IAClB+C,OAAO,EAAGf,UAAY;IACtBgB,SAAS,EAAKd,OAAO,IAAM;MAC1BD,aAAa,CAAEC,OAAQ,CAAC;IACzB,CAAG;IACHe,OAAO,EAAGA,CAAA,KAAM;MACftC,cAAc,CAAE,KAAM,CAAC;IACxB,CAAG;IACHuC,OAAO,EAAGA,CAAA,KAAM;MACfvC,cAAc,CAAE,KAAM,CAAC;IACxB;EAAG,CACH,CAED,CAAC;AAEL"}
|
|
1
|
+
{"version":3,"names":["hasBlockSupport","isReusableBlock","createBlock","serialize","store","blockEditorStore","useState","useCallback","MenuItem","symbol","useSelect","useDispatch","coreStore","__","sprintf","noticesStore","patternsStore","CreatePatternModal","unlock","PATTERN_SYNC_TYPES","PatternConvertButton","clientIds","rootClientId","closeBlockSettingsMenu","createSuccessNotice","replaceBlocks","setEditingPattern","isModalOpen","setIsModalOpen","canConvert","select","_getBlocksByClientId","canUser","getBlocksByClientId","canInsertBlockType","getBlockRootClientId","rootId","length","undefined","blocks","isReusable","getEntityRecord","attributes","ref","_canConvert","every","block","isValid","name","getContent","handleSuccess","pattern","wp_pattern_sync_status","unsynced","newBlock","id","clientId","title","raw","type","createElement","Fragment","icon","onClick","content","onSuccess","onError","onClose"],"sources":["@wordpress/patterns/src/components/pattern-convert-button.js"],"sourcesContent":["/**\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"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createElement, Fragment } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* WordPress dependencies
|
|
4
|
+
*/
|
|
5
|
+
import { useState, useId } from '@wordpress/element';
|
|
6
|
+
import { InspectorControls } from '@wordpress/block-editor';
|
|
7
|
+
import { BaseControl, Button } from '@wordpress/components';
|
|
8
|
+
import { __ } from '@wordpress/i18n';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies
|
|
12
|
+
*/
|
|
13
|
+
import { PARTIAL_SYNCING_SUPPORTED_BLOCKS, PATTERN_OVERRIDES_BINDING_SOURCE } from '../constants';
|
|
14
|
+
import { AllowOverridesModal, DisallowOverridesModal } from './allow-overrides-modal';
|
|
15
|
+
function removeBindings(bindings, syncedAttributes) {
|
|
16
|
+
let updatedBindings = {};
|
|
17
|
+
for (const attributeName of syncedAttributes) {
|
|
18
|
+
// Omit any bindings that's not the same source from the `updatedBindings` object.
|
|
19
|
+
if (bindings?.[attributeName]?.source !== PATTERN_OVERRIDES_BINDING_SOURCE && bindings?.[attributeName]?.source !== undefined) {
|
|
20
|
+
updatedBindings[attributeName] = bindings[attributeName];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (!Object.keys(updatedBindings).length) {
|
|
24
|
+
updatedBindings = undefined;
|
|
25
|
+
}
|
|
26
|
+
return updatedBindings;
|
|
27
|
+
}
|
|
28
|
+
function addBindings(bindings, syncedAttributes) {
|
|
29
|
+
const updatedBindings = {
|
|
30
|
+
...bindings
|
|
31
|
+
};
|
|
32
|
+
for (const attributeName of syncedAttributes) {
|
|
33
|
+
if (!bindings?.[attributeName]) {
|
|
34
|
+
updatedBindings[attributeName] = {
|
|
35
|
+
source: PATTERN_OVERRIDES_BINDING_SOURCE
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return updatedBindings;
|
|
40
|
+
}
|
|
41
|
+
function PatternOverridesControls({
|
|
42
|
+
attributes,
|
|
43
|
+
name,
|
|
44
|
+
setAttributes
|
|
45
|
+
}) {
|
|
46
|
+
const controlId = useId();
|
|
47
|
+
const [showAllowOverridesModal, setShowAllowOverridesModal] = useState(false);
|
|
48
|
+
const [showDisallowOverridesModal, setShowDisallowOverridesModal] = useState(false);
|
|
49
|
+
const syncedAttributes = PARTIAL_SYNCING_SUPPORTED_BLOCKS[name];
|
|
50
|
+
const attributeSources = syncedAttributes.map(attributeName => attributes.metadata?.bindings?.[attributeName]?.source);
|
|
51
|
+
const isConnectedToOtherSources = attributeSources.every(source => source && source !== 'core/pattern-overrides');
|
|
52
|
+
function updateBindings(isChecked, customName) {
|
|
53
|
+
const prevBindings = attributes?.metadata?.bindings;
|
|
54
|
+
const updatedBindings = isChecked ? addBindings(prevBindings, syncedAttributes) : removeBindings(prevBindings, syncedAttributes);
|
|
55
|
+
const updatedMetadata = {
|
|
56
|
+
...attributes.metadata,
|
|
57
|
+
bindings: updatedBindings
|
|
58
|
+
};
|
|
59
|
+
if (customName) {
|
|
60
|
+
updatedMetadata.name = customName;
|
|
61
|
+
}
|
|
62
|
+
setAttributes({
|
|
63
|
+
metadata: updatedMetadata
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Avoid overwriting other (e.g. meta) bindings.
|
|
68
|
+
if (isConnectedToOtherSources) return null;
|
|
69
|
+
const hasName = !!attributes.metadata?.name;
|
|
70
|
+
const allowOverrides = hasName && attributeSources.some(source => source === PATTERN_OVERRIDES_BINDING_SOURCE);
|
|
71
|
+
return createElement(Fragment, null, createElement(InspectorControls, {
|
|
72
|
+
group: "advanced"
|
|
73
|
+
}, createElement(BaseControl, {
|
|
74
|
+
id: controlId,
|
|
75
|
+
label: __('Overrides'),
|
|
76
|
+
help: __('Allow changes to this block throughout instances of this pattern.')
|
|
77
|
+
}, createElement(Button, {
|
|
78
|
+
__next40pxDefaultSize: true,
|
|
79
|
+
className: "pattern-overrides-control__allow-overrides-button",
|
|
80
|
+
variant: "secondary",
|
|
81
|
+
onClick: () => {
|
|
82
|
+
if (allowOverrides) {
|
|
83
|
+
setShowDisallowOverridesModal(true);
|
|
84
|
+
} else {
|
|
85
|
+
setShowAllowOverridesModal(true);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}, allowOverrides ? __('Disable overrides') : __('Enable overrides')))), showAllowOverridesModal && createElement(AllowOverridesModal, {
|
|
89
|
+
initialName: attributes.metadata?.name,
|
|
90
|
+
onClose: () => setShowAllowOverridesModal(false),
|
|
91
|
+
onSave: newName => {
|
|
92
|
+
updateBindings(true, newName);
|
|
93
|
+
}
|
|
94
|
+
}), showDisallowOverridesModal && createElement(DisallowOverridesModal, {
|
|
95
|
+
onClose: () => setShowDisallowOverridesModal(false),
|
|
96
|
+
onSave: () => updateBindings(false)
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
export default PatternOverridesControls;
|
|
100
|
+
//# sourceMappingURL=pattern-overrides-controls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","useId","InspectorControls","BaseControl","Button","__","PARTIAL_SYNCING_SUPPORTED_BLOCKS","PATTERN_OVERRIDES_BINDING_SOURCE","AllowOverridesModal","DisallowOverridesModal","removeBindings","bindings","syncedAttributes","updatedBindings","attributeName","source","undefined","Object","keys","length","addBindings","PatternOverridesControls","attributes","name","setAttributes","controlId","showAllowOverridesModal","setShowAllowOverridesModal","showDisallowOverridesModal","setShowDisallowOverridesModal","attributeSources","map","metadata","isConnectedToOtherSources","every","updateBindings","isChecked","customName","prevBindings","updatedMetadata","hasName","allowOverrides","some","createElement","Fragment","group","id","label","help","__next40pxDefaultSize","className","variant","onClick","initialName","onClose","onSave","newName"],"sources":["@wordpress/patterns/src/components/pattern-overrides-controls.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useId } from '@wordpress/element';\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { BaseControl, Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n\tPATTERN_OVERRIDES_BINDING_SOURCE,\n} from '../constants';\nimport {\n\tAllowOverridesModal,\n\tDisallowOverridesModal,\n} from './allow-overrides-modal';\n\nfunction removeBindings( bindings, syncedAttributes ) {\n\tlet updatedBindings = {};\n\tfor ( const attributeName of syncedAttributes ) {\n\t\t// Omit any bindings that's not the same source from the `updatedBindings` object.\n\t\tif (\n\t\t\tbindings?.[ attributeName ]?.source !==\n\t\t\t\tPATTERN_OVERRIDES_BINDING_SOURCE &&\n\t\t\tbindings?.[ attributeName ]?.source !== undefined\n\t\t) {\n\t\t\tupdatedBindings[ attributeName ] = bindings[ attributeName ];\n\t\t}\n\t}\n\tif ( ! Object.keys( updatedBindings ).length ) {\n\t\tupdatedBindings = undefined;\n\t}\n\treturn updatedBindings;\n}\n\nfunction addBindings( bindings, syncedAttributes ) {\n\tconst updatedBindings = { ...bindings };\n\tfor ( const attributeName of syncedAttributes ) {\n\t\tif ( ! bindings?.[ attributeName ] ) {\n\t\t\tupdatedBindings[ attributeName ] = {\n\t\t\t\tsource: PATTERN_OVERRIDES_BINDING_SOURCE,\n\t\t\t};\n\t\t}\n\t}\n\treturn updatedBindings;\n}\n\nfunction PatternOverridesControls( { attributes, name, setAttributes } ) {\n\tconst controlId = useId();\n\tconst [ showAllowOverridesModal, setShowAllowOverridesModal ] =\n\t\tuseState( false );\n\tconst [ showDisallowOverridesModal, setShowDisallowOverridesModal ] =\n\t\tuseState( false );\n\n\tconst syncedAttributes = PARTIAL_SYNCING_SUPPORTED_BLOCKS[ name ];\n\tconst attributeSources = syncedAttributes.map(\n\t\t( attributeName ) =>\n\t\t\tattributes.metadata?.bindings?.[ attributeName ]?.source\n\t);\n\tconst isConnectedToOtherSources = attributeSources.every(\n\t\t( source ) => source && source !== 'core/pattern-overrides'\n\t);\n\n\tfunction updateBindings( isChecked, customName ) {\n\t\tconst prevBindings = attributes?.metadata?.bindings;\n\t\tconst updatedBindings = isChecked\n\t\t\t? addBindings( prevBindings, syncedAttributes )\n\t\t\t: removeBindings( prevBindings, syncedAttributes );\n\n\t\tconst updatedMetadata = {\n\t\t\t...attributes.metadata,\n\t\t\tbindings: updatedBindings,\n\t\t};\n\n\t\tif ( customName ) {\n\t\t\tupdatedMetadata.name = customName;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\tmetadata: updatedMetadata,\n\t\t} );\n\t}\n\n\t// Avoid overwriting other (e.g. meta) bindings.\n\tif ( isConnectedToOtherSources ) return null;\n\n\tconst hasName = !! attributes.metadata?.name;\n\tconst allowOverrides =\n\t\thasName &&\n\t\tattributeSources.some(\n\t\t\t( source ) => source === PATTERN_OVERRIDES_BINDING_SOURCE\n\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={ __(\n\t\t\t\t\t\t'Allow changes to this block throughout instances of this pattern.'\n\t\t\t\t\t) }\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\tonClick={ () => {\n\t\t\t\t\t\t\tif ( allowOverrides ) {\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>\n\t\t\t\t\t\t{ allowOverrides\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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MenuItem","__","isReusableBlock","useSelect","useDispatch","store","blockEditorStore","addQueryArgs","coreStore","patternsStore","unlock","PatternsManageButton","clientId","canRemove","isVisible","managePatternsUrl","select","getBlock","canRemoveBlock","getBlockCount","getSettings","canUser","reusableBlock","isBlockTheme","__unstableIsBlockBasedTheme","attributes","ref","innerBlockCount","path","post_type","convertSyncedPatternToStatic","createElement","Fragment","onClick","href"],"sources":["@wordpress/patterns/src/components/patterns-manage-button.js"],"sourcesContent":["/**\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"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASF,KAAK,IAAIG,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASH,KAAK,IAAII,aAAa,QAAQ,UAAU;AACjD,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,SAASC,oBAAoBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC7C,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAGZ,SAAS,CAC1Da,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC,aAAa;MAAEC;IAAY,CAAC,GAC7DJ,MAAM,CAAEV,gBAAiB,CAAC;IAC3B,MAAM;MAAEe;IAAQ,CAAC,GAAGL,MAAM,CAAER,SAAU,CAAC;IACvC,MAAMc,aAAa,GAAGL,QAAQ,CAAEL,QAAS,CAAC;IAC1C,MAAMW,YAAY,GAAGH,WAAW,CAAC,CAAC,CAACI,2BAA2B;IAE9D,OAAO;MACNX,SAAS,EAAEK,cAAc,CAAEN,QAAS,CAAC;MACrCE,SAAS,EACR,CAAC,CAAEQ,aAAa,IAChBpB,eAAe,CAAEoB,aAAc,CAAC,IAChC,CAAC,CAAED,OAAO,CACT,QAAQ,EACR,QAAQ,EACRC,aAAa,CAACG,UAAU,CAACC,GAC1B,CAAC;MACFC,eAAe,EAAER,aAAa,CAAEP,QAAS,CAAC;MAC1C;MACA;MACA;MACAG,iBAAiB,EAChBQ,YAAY,IAAIF,OAAO,CAAE,MAAM,EAAE,WAAY,CAAC,GAC3Cd,YAAY,CAAE,iBAAiB,EAAE;QACjCqB,IAAI,EAAE;MACN,CAAE,CAAC,GACHrB,YAAY,CAAE,UAAU,EAAE;QAC1BsB,SAAS,EAAE;MACX,CAAE;IACP,CAAC;EACF,CAAC,EACD,CAAEjB,QAAQ,CACX,CAAC;;EAED;EACA;EACA,MAAM;IAAEkB;EAA6B,CAAC,GAAGpB,MAAM,CAC9CN,WAAW,CAAEK,aAAc,CAC5B,CAAC;EAED,IAAK,CAAEK,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,OACCiB,aAAA,CAAAC,QAAA,QACGnB,SAAS,IACVkB,aAAA,CAAC/B,QAAQ;IACRiC,OAAO,EAAGA,CAAA,KAAMH,4BAA4B,CAAElB,QAAS;EAAG,GAExDX,EAAE,CAAE,QAAS,CACN,CACV,EACD8B,aAAA,CAAC/B,QAAQ;IAACkC,IAAI,EAAGnB;EAAmB,GACjCd,EAAE,CAAE,iBAAkB,CACf,CACT,CAAC;AAEL;AAEA,eAAeU,oBAAoB"}
|
|
1
|
+
{"version":3,"names":["MenuItem","__","isReusableBlock","useSelect","useDispatch","store","blockEditorStore","addQueryArgs","coreStore","patternsStore","unlock","PatternsManageButton","clientId","canRemove","isVisible","managePatternsUrl","select","getBlock","canRemoveBlock","getBlockCount","getSettings","canUser","reusableBlock","isBlockTheme","__unstableIsBlockBasedTheme","attributes","ref","innerBlockCount","path","post_type","convertSyncedPatternToStatic","createElement","Fragment","onClick","href"],"sources":["@wordpress/patterns/src/components/patterns-manage-button.js"],"sourcesContent":["/**\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"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASF,KAAK,IAAIG,SAAS,QAAQ,sBAAsB;;AAEzD;AACA;AACA;AACA,SAASH,KAAK,IAAII,aAAa,QAAQ,UAAU;AACjD,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,SAASC,oBAAoBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC7C,MAAM;IAAEC,SAAS;IAAEC,SAAS;IAAEC;EAAkB,CAAC,GAAGZ,SAAS,CAC1Da,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,cAAc;MAAEC,aAAa;MAAEC;IAAY,CAAC,GAC7DJ,MAAM,CAAEV,gBAAiB,CAAC;IAC3B,MAAM;MAAEe;IAAQ,CAAC,GAAGL,MAAM,CAAER,SAAU,CAAC;IACvC,MAAMc,aAAa,GAAGL,QAAQ,CAAEL,QAAS,CAAC;IAC1C,MAAMW,YAAY,GAAGH,WAAW,CAAC,CAAC,CAACI,2BAA2B;IAE9D,OAAO;MACNX,SAAS,EAAEK,cAAc,CAAEN,QAAS,CAAC;MACrCE,SAAS,EACR,CAAC,CAAEQ,aAAa,IAChBpB,eAAe,CAAEoB,aAAc,CAAC,IAChC,CAAC,CAAED,OAAO,CACT,QAAQ,EACR,QAAQ,EACRC,aAAa,CAACG,UAAU,CAACC,GAC1B,CAAC;MACFC,eAAe,EAAER,aAAa,CAAEP,QAAS,CAAC;MAC1C;MACA;MACA;MACAG,iBAAiB,EAChBQ,YAAY,IAAIF,OAAO,CAAE,MAAM,EAAE,WAAY,CAAC,GAC3Cd,YAAY,CAAE,iBAAiB,EAAE;QACjCqB,IAAI,EAAE;MACN,CAAE,CAAC,GACHrB,YAAY,CAAE,UAAU,EAAE;QAC1BsB,SAAS,EAAE;MACX,CAAE;IACP,CAAC;EACF,CAAC,EACD,CAAEjB,QAAQ,CACX,CAAC;;EAED;EACA;EACA,MAAM;IAAEkB;EAA6B,CAAC,GAAGpB,MAAM,CAC9CN,WAAW,CAAEK,aAAc,CAC5B,CAAC;EAED,IAAK,CAAEK,SAAS,EAAG;IAClB,OAAO,IAAI;EACZ;EAEA,OACCiB,aAAA,CAAAC,QAAA,QACGnB,SAAS,IACVkB,aAAA,CAAC/B,QAAQ;IACRiC,OAAO,EAAGA,CAAA,KAAMH,4BAA4B,CAAElB,QAAS;EAAG,GAExDX,EAAE,CAAE,QAAS,CACN,CACV,EACD8B,aAAA,CAAC/B,QAAQ;IAACkC,IAAI,EAAGnB;EAAmB,GACjCd,EAAE,CAAE,iBAAkB,CACf,CACT,CAAC;AAEL;AAEA,eAAeU,oBAAoB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Modal","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","store","coreStore","useDispatch","useId","useRef","useState","decodeEntities","__","noticesStore","speak","CATEGORY_SLUG","RenamePatternCategoryModal","category","existingCategories","onClose","onError","onSuccess","props","id","textControlRef","name","setName","isSaving","setIsSaving","validationMessage","setValidationMessage","validationMessageId","undefined","saveEntityRecord","invalidateResolution","createErrorNotice","createSuccessNotice","onChange","newName","onSave","event","preventDefault","message","current","focus","patternCategories","find","existingCategory","label","toLowerCase","savedRecord","slug","type","error","onRequestClose","createElement","title","onSubmit","spacing","ref","__nextHasNoMarginBottom","__next40pxDefaultSize","value","required","className","justify","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/rename-pattern-category-modal.js"],"sourcesContent":["/**\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Modal","Button","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","store","coreStore","useDispatch","useId","useRef","useState","decodeEntities","__","noticesStore","speak","CATEGORY_SLUG","RenamePatternCategoryModal","category","existingCategories","onClose","onError","onSuccess","props","id","textControlRef","name","setName","isSaving","setIsSaving","validationMessage","setValidationMessage","validationMessageId","undefined","saveEntityRecord","invalidateResolution","createErrorNotice","createSuccessNotice","onChange","newName","onSave","event","preventDefault","message","current","focus","patternCategories","find","existingCategory","label","toLowerCase","savedRecord","slug","type","error","onRequestClose","createElement","title","onSubmit","spacing","ref","__nextHasNoMarginBottom","__next40pxDefaultSize","value","required","className","justify","variant","onClick","isBusy"],"sources":["@wordpress/patterns/src/components/rename-pattern-category-modal.js"],"sourcesContent":["/**\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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Button","Modal","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","store","coreStore","useDispatch","useState","decodeEntities","__","noticesStore","RenamePatternModal","onClose","onError","onSuccess","pattern","props","originalName","title","name","setName","isSaving","setIsSaving","editEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","createSuccessNotice","createErrorNotice","onRename","event","preventDefault","type","id","savedRecord","throwOnError","error","errorMessage","message","code","onRequestClose","createElement","onSubmit","spacing","__nextHasNoMarginBottom","__next40pxDefaultSize","label","value","onChange","required","justify","variant","onClick"],"sources":["@wordpress/patterns/src/components/rename-pattern-modal.js"],"sourcesContent":["/**\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Button","Modal","TextControl","__experimentalHStack","HStack","__experimentalVStack","VStack","store","coreStore","useDispatch","useState","decodeEntities","__","noticesStore","RenamePatternModal","onClose","onError","onSuccess","pattern","props","originalName","title","name","setName","isSaving","setIsSaving","editEntityRecord","__experimentalSaveSpecifiedEntityEdits","saveSpecifiedEntityEdits","createSuccessNotice","createErrorNotice","onRename","event","preventDefault","type","id","savedRecord","throwOnError","error","errorMessage","message","code","onRequestClose","createElement","onSubmit","spacing","__nextHasNoMarginBottom","__next40pxDefaultSize","label","value","onChange","required","justify","variant","onClick"],"sources":["@wordpress/patterns/src/components/rename-pattern-modal.js"],"sourcesContent":["/**\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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["store","blockEditorStore","BlockControls","ToolbarButton","ToolbarGroup","useSelect","useRegistry","coreStore","parse","__","recursivelyFindBlockWithName","blocks","name","block","attributes","metadata","found","innerBlocks","ResetOverridesControl","props","registry","patternWithOverrides","select","undefined","getBlockParentsByBlockName","getBlocksByClientId","patternBlock","clientId","content","resetOverrides","_editedRecord$blocks","editedRecord","resolveSelect","getEditedEntityRecord","ref","newAttributes","Object","assign","fromEntries","keys","map","key","setAttributes","createElement","group","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/patterns/src/components/reset-overrides-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\nfunction recursivelyFindBlockWithName( blocks, name ) {\n\tfor ( const block of blocks ) {\n\t\tif ( block.attributes.metadata?.name === name ) {\n\t\t\treturn block;\n\t\t}\n\n\t\tconst found = recursivelyFindBlockWithName( block.innerBlocks, name );\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n}\n\nexport default function ResetOverridesControl( props ) {\n\tconst registry = useRegistry();\n\tconst name = props.attributes.metadata?.name;\n\tconst patternWithOverrides = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! name ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst { getBlockParentsByBlockName, getBlocksByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst patternBlock = getBlocksByClientId(\n\t\t\t\tgetBlockParentsByBlockName( props.clientId, 'core/block' )\n\t\t\t)[ 0 ];\n\n\t\t\tif ( ! patternBlock?.attributes.content?.[ name ] ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn patternBlock;\n\t\t},\n\t\t[ props.clientId, name ]\n\t);\n\n\tconst resetOverrides = async () => {\n\t\tconst editedRecord = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\tpatternWithOverrides.attributes.ref\n\t\t\t);\n\t\tconst blocks = editedRecord.blocks ?? parse( editedRecord.content );\n\t\tconst block = recursivelyFindBlockWithName( blocks, name );\n\n\t\tconst newAttributes = Object.assign(\n\t\t\t// Reset every existing attribute to undefined.\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.keys( props.attributes ).map( ( key ) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tundefined,\n\t\t\t\t] )\n\t\t\t),\n\t\t\t// Then assign the original attributes.\n\t\t\tblock.attributes\n\t\t);\n\n\t\tprops.setAttributes( newAttributes );\n\t};\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ resetOverrides }\n\t\t\t\t\tdisabled={ ! patternWithOverrides }\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,KAAK,IAAIC,gBAAgB,EACzBC,aAAa,QACP,yBAAyB;AAChC,SAASC,aAAa,EAAEC,YAAY,QAAQ,uBAAuB;AACnE,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASN,KAAK,IAAIO,SAAS,QAAQ,sBAAsB;AACzD,SAASC,KAAK,QAAQ,mBAAmB;AACzC,SAASC,EAAE,QAAQ,iBAAiB;AAEpC,SAASC,4BAA4BA,CAAEC,MAAM,EAAEC,IAAI,EAAG;EACrD,KAAM,MAAMC,KAAK,IAAIF,MAAM,EAAG;IAC7B,IAAKE,KAAK,CAACC,UAAU,CAACC,QAAQ,EAAEH,IAAI,KAAKA,IAAI,EAAG;MAC/C,OAAOC,KAAK;IACb;IAEA,MAAMG,KAAK,GAAGN,4BAA4B,CAAEG,KAAK,CAACI,WAAW,EAAEL,IAAK,CAAC;IACrE,IAAKI,KAAK,EAAG;MACZ,OAAOA,KAAK;IACb;EACD;AACD;AAEA,eAAe,SAASE,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,QAAQ,GAAGd,WAAW,CAAC,CAAC;EAC9B,MAAMM,IAAI,GAAGO,KAAK,CAACL,UAAU,CAACC,QAAQ,EAAEH,IAAI;EAC5C,MAAMS,oBAAoB,GAAGhB,SAAS,CACnCiB,MAAM,IAAM;IACb,IAAK,CAAEV,IAAI,EAAG;MACb,OAAOW,SAAS;IACjB;IAEA,MAAM;MAAEC,0BAA0B;MAAEC;IAAoB,CAAC,GACxDH,MAAM,CAAErB,gBAAiB,CAAC;IAC3B,MAAMyB,YAAY,GAAGD,mBAAmB,CACvCD,0BAA0B,CAAEL,KAAK,CAACQ,QAAQ,EAAE,YAAa,CAC1D,CAAC,CAAE,CAAC,CAAE;IAEN,IAAK,CAAED,YAAY,EAAEZ,UAAU,CAACc,OAAO,GAAIhB,IAAI,CAAE,EAAG;MACnD,OAAOW,SAAS;IACjB;IAEA,OAAOG,YAAY;EACpB,CAAC,EACD,CAAEP,KAAK,CAACQ,QAAQ,EAAEf,IAAI,CACvB,CAAC;EAED,MAAMiB,cAAc,GAAG,MAAAA,CAAA,KAAY;IAAA,IAAAC,oBAAA;IAClC,MAAMC,YAAY,GAAG,MAAMX,QAAQ,CACjCY,aAAa,CAAEzB,SAAU,CAAC,CAC1B0B,qBAAqB,CACrB,UAAU,EACV,UAAU,EACVZ,oBAAoB,CAACP,UAAU,CAACoB,GACjC,CAAC;IACF,MAAMvB,MAAM,IAAAmB,oBAAA,GAAGC,YAAY,CAACpB,MAAM,cAAAmB,oBAAA,cAAAA,oBAAA,GAAItB,KAAK,CAAEuB,YAAY,CAACH,OAAQ,CAAC;IACnE,MAAMf,KAAK,GAAGH,4BAA4B,CAAEC,MAAM,EAAEC,IAAK,CAAC;IAE1D,MAAMuB,aAAa,GAAGC,MAAM,CAACC,MAAM;IAClC;IACAD,MAAM,CAACE,WAAW,CACjBF,MAAM,CAACG,IAAI,CAAEpB,KAAK,CAACL,UAAW,CAAC,CAAC0B,GAAG,CAAIC,GAAG,IAAM,CAC/CA,GAAG,EACHlB,SAAS,CACR,CACH,CAAC;IACD;IACAV,KAAK,CAACC,UACP,CAAC;IAEDK,KAAK,CAACuB,aAAa,CAAEP,aAAc,CAAC;EACrC,CAAC;EAED,OACCQ,aAAA,CAACzC,aAAa;IAAC0C,KAAK,EAAC;EAAO,GAC3BD,aAAA,CAACvC,YAAY,QACZuC,aAAA,CAACxC,aAAa;IACb0C,OAAO,EAAGhB,cAAgB;IAC1BiB,QAAQ,EAAG,CAAEzB,oBAAsB;IACnC0B,yBAAyB;EAAA,GAEvBtC,EAAE,CAAE,OAAQ,CACA,CACF,CACA,CAAC;AAElB"}
|
|
1
|
+
{"version":3,"names":["store","blockEditorStore","BlockControls","ToolbarButton","ToolbarGroup","useSelect","useRegistry","coreStore","parse","__","recursivelyFindBlockWithName","blocks","name","block","attributes","metadata","found","innerBlocks","ResetOverridesControl","props","registry","patternWithOverrides","select","undefined","getBlockParentsByBlockName","getBlocksByClientId","patternBlock","clientId","content","resetOverrides","_editedRecord$blocks","editedRecord","resolveSelect","getEditedEntityRecord","ref","newAttributes","Object","assign","fromEntries","keys","map","key","setAttributes","createElement","group","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/patterns/src/components/reset-overrides-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useSelect, useRegistry } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { parse } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\nfunction recursivelyFindBlockWithName( blocks, name ) {\n\tfor ( const block of blocks ) {\n\t\tif ( block.attributes.metadata?.name === name ) {\n\t\t\treturn block;\n\t\t}\n\n\t\tconst found = recursivelyFindBlockWithName( block.innerBlocks, name );\n\t\tif ( found ) {\n\t\t\treturn found;\n\t\t}\n\t}\n}\n\nexport default function ResetOverridesControl( props ) {\n\tconst registry = useRegistry();\n\tconst name = props.attributes.metadata?.name;\n\tconst patternWithOverrides = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! name ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst { getBlockParentsByBlockName, getBlocksByClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst patternBlock = getBlocksByClientId(\n\t\t\t\tgetBlockParentsByBlockName( props.clientId, 'core/block' )\n\t\t\t)[ 0 ];\n\n\t\t\tif ( ! patternBlock?.attributes.content?.[ name ] ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn patternBlock;\n\t\t},\n\t\t[ props.clientId, name ]\n\t);\n\n\tconst resetOverrides = async () => {\n\t\tconst editedRecord = await registry\n\t\t\t.resolveSelect( coreStore )\n\t\t\t.getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_block',\n\t\t\t\tpatternWithOverrides.attributes.ref\n\t\t\t);\n\t\tconst blocks = editedRecord.blocks ?? parse( editedRecord.content );\n\t\tconst block = recursivelyFindBlockWithName( blocks, name );\n\n\t\tconst newAttributes = Object.assign(\n\t\t\t// Reset every existing attribute to undefined.\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.keys( props.attributes ).map( ( key ) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tundefined,\n\t\t\t\t] )\n\t\t\t),\n\t\t\t// Then assign the original attributes.\n\t\t\tblock.attributes\n\t\t);\n\n\t\tprops.setAttributes( newAttributes );\n\t};\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ resetOverrides }\n\t\t\t\t\tdisabled={ ! patternWithOverrides }\n\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,KAAK,IAAIC,gBAAgB,EACzBC,aAAa,QACP,yBAAyB;AAChC,SAASC,aAAa,EAAEC,YAAY,QAAQ,uBAAuB;AACnE,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASN,KAAK,IAAIO,SAAS,QAAQ,sBAAsB;AACzD,SAASC,KAAK,QAAQ,mBAAmB;AACzC,SAASC,EAAE,QAAQ,iBAAiB;AAEpC,SAASC,4BAA4BA,CAAEC,MAAM,EAAEC,IAAI,EAAG;EACrD,KAAM,MAAMC,KAAK,IAAIF,MAAM,EAAG;IAC7B,IAAKE,KAAK,CAACC,UAAU,CAACC,QAAQ,EAAEH,IAAI,KAAKA,IAAI,EAAG;MAC/C,OAAOC,KAAK;IACb;IAEA,MAAMG,KAAK,GAAGN,4BAA4B,CAAEG,KAAK,CAACI,WAAW,EAAEL,IAAK,CAAC;IACrE,IAAKI,KAAK,EAAG;MACZ,OAAOA,KAAK;IACb;EACD;AACD;AAEA,eAAe,SAASE,qBAAqBA,CAAEC,KAAK,EAAG;EACtD,MAAMC,QAAQ,GAAGd,WAAW,CAAC,CAAC;EAC9B,MAAMM,IAAI,GAAGO,KAAK,CAACL,UAAU,CAACC,QAAQ,EAAEH,IAAI;EAC5C,MAAMS,oBAAoB,GAAGhB,SAAS,CACnCiB,MAAM,IAAM;IACb,IAAK,CAAEV,IAAI,EAAG;MACb,OAAOW,SAAS;IACjB;IAEA,MAAM;MAAEC,0BAA0B;MAAEC;IAAoB,CAAC,GACxDH,MAAM,CAAErB,gBAAiB,CAAC;IAC3B,MAAMyB,YAAY,GAAGD,mBAAmB,CACvCD,0BAA0B,CAAEL,KAAK,CAACQ,QAAQ,EAAE,YAAa,CAC1D,CAAC,CAAE,CAAC,CAAE;IAEN,IAAK,CAAED,YAAY,EAAEZ,UAAU,CAACc,OAAO,GAAIhB,IAAI,CAAE,EAAG;MACnD,OAAOW,SAAS;IACjB;IAEA,OAAOG,YAAY;EACpB,CAAC,EACD,CAAEP,KAAK,CAACQ,QAAQ,EAAEf,IAAI,CACvB,CAAC;EAED,MAAMiB,cAAc,GAAG,MAAAA,CAAA,KAAY;IAAA,IAAAC,oBAAA;IAClC,MAAMC,YAAY,GAAG,MAAMX,QAAQ,CACjCY,aAAa,CAAEzB,SAAU,CAAC,CAC1B0B,qBAAqB,CACrB,UAAU,EACV,UAAU,EACVZ,oBAAoB,CAACP,UAAU,CAACoB,GACjC,CAAC;IACF,MAAMvB,MAAM,IAAAmB,oBAAA,GAAGC,YAAY,CAACpB,MAAM,cAAAmB,oBAAA,cAAAA,oBAAA,GAAItB,KAAK,CAAEuB,YAAY,CAACH,OAAQ,CAAC;IACnE,MAAMf,KAAK,GAAGH,4BAA4B,CAAEC,MAAM,EAAEC,IAAK,CAAC;IAE1D,MAAMuB,aAAa,GAAGC,MAAM,CAACC,MAAM;IAClC;IACAD,MAAM,CAACE,WAAW,CACjBF,MAAM,CAACG,IAAI,CAAEpB,KAAK,CAACL,UAAW,CAAC,CAAC0B,GAAG,CAAIC,GAAG,IAAM,CAC/CA,GAAG,EACHlB,SAAS,CACR,CACH,CAAC;IACD;IACAV,KAAK,CAACC,UACP,CAAC;IAEDK,KAAK,CAACuB,aAAa,CAAEP,aAAc,CAAC;EACrC,CAAC;EAED,OACCQ,aAAA,CAACzC,aAAa;IAAC0C,KAAK,EAAC;EAAO,GAC3BD,aAAA,CAACvC,YAAY,QACZuC,aAAA,CAACxC,aAAa;IACb0C,OAAO,EAAGhB,cAAgB;IAC1BiB,QAAQ,EAAG,CAAEzB,oBAAsB;IACnC0B,yBAAyB;EAAA,GAEvBtC,EAAE,CAAE,OAAQ,CACA,CACF,CACA,CAAC;AAElB","ignoreList":[]}
|
|
@@ -17,4 +17,5 @@ export const PARTIAL_SYNCING_SUPPORTED_BLOCKS = {
|
|
|
17
17
|
'core/button': ['text', 'url', 'linkTarget', 'rel'],
|
|
18
18
|
'core/image': ['id', 'url', 'title', 'alt']
|
|
19
19
|
};
|
|
20
|
+
export const PATTERN_OVERRIDES_BINDING_SOURCE = 'core/pattern-overrides';
|
|
20
21
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PATTERN_TYPES","theme","user","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","full","unsynced","PARTIAL_SYNCING_SUPPORTED_BLOCKS"],"sources":["@wordpress/patterns/src/constants.js"],"sourcesContent":["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\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' ],\n\t'core/heading': [ 'content' ],\n\t'core/button': [ 'text', 'url', 'linkTarget', 'rel' ],\n\t'core/image': [ 'id', 'url', 'title', 'alt' ],\n};\n"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG;EAC5BC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE;AACP,CAAC;AAED,OAAO,MAAMC,wBAAwB,GAAG,cAAc;AACtD,OAAO,MAAMC,qBAAqB,GAAG,aAAa;AAClD,OAAO,MAAMC,wBAAwB,GAAG,CACvC,MAAM,EACN,wBAAwB,EACxB,4BAA4B,CAC5B;AACD,OAAO,MAAMC,kBAAkB,GAAG;EACjCC,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE;AACX,CAAC;;AAED;AACA,OAAO,MAAMC,gCAAgC,GAAG;EAC/C,gBAAgB,EAAE,CAAE,SAAS,CAAE;EAC/B,cAAc,EAAE,CAAE,SAAS,CAAE;EAC7B,aAAa,EAAE,CAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAE;EACrD,YAAY,EAAE,CAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"names":["PATTERN_TYPES","theme","user","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","full","unsynced","PARTIAL_SYNCING_SUPPORTED_BLOCKS","PATTERN_OVERRIDES_BINDING_SOURCE"],"sources":["@wordpress/patterns/src/constants.js"],"sourcesContent":["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\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' ],\n\t'core/heading': [ 'content' ],\n\t'core/button': [ 'text', 'url', 'linkTarget', 'rel' ],\n\t'core/image': [ 'id', 'url', 'title', 'alt' ],\n};\n\nexport const PATTERN_OVERRIDES_BINDING_SOURCE = 'core/pattern-overrides';\n"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG;EAC5BC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE;AACP,CAAC;AAED,OAAO,MAAMC,wBAAwB,GAAG,cAAc;AACtD,OAAO,MAAMC,qBAAqB,GAAG,aAAa;AAClD,OAAO,MAAMC,wBAAwB,GAAG,CACvC,MAAM,EACN,wBAAwB,EACxB,4BAA4B,CAC5B;AACD,OAAO,MAAMC,kBAAkB,GAAG;EACjCC,IAAI,EAAE,OAAO;EACbC,QAAQ,EAAE;AACX,CAAC;;AAED;AACA,OAAO,MAAMC,gCAAgC,GAAG;EAC/C,gBAAgB,EAAE,CAAE,SAAS,CAAE;EAC/B,cAAc,EAAE,CAAE,SAAS,CAAE;EAC7B,aAAa,EAAE,CAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAE;EACrD,YAAY,EAAE,CAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK;AAC5C,CAAC;AAED,OAAO,MAAMC,gCAAgC,GAAG,wBAAwB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["store"],"sources":["@wordpress/patterns/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nexport { store } from './store';\nexport * from './private-apis';\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,SAAS;AAC/B,cAAc,gBAAgB"}
|
|
1
|
+
{"version":3,"names":["store"],"sources":["@wordpress/patterns/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nexport { store } from './store';\nexport * from './private-apis';\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,QAAQ,SAAS;AAC/B,cAAc,gBAAgB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["lock","privateApis","CreatePatternModal","PatternsMenuItems"],"sources":["@wordpress/patterns/src/index.native.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './store';\nimport { lock } from './lock-unlock';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tCreatePatternModal: () => null,\n\tPatternsMenuItems: () => null,\n} );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,SAAS;AAChB,SAASA,IAAI,QAAQ,eAAe;AAEpC,OAAO,MAAMC,WAAW,GAAG,CAAC,CAAC;AAC7BD,IAAI,CAAEC,WAAW,EAAE;EAClBC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,iBAAiB,EAAEA,CAAA,KAAM;AAC1B,CAAE,CAAC"}
|
|
1
|
+
{"version":3,"names":["lock","privateApis","CreatePatternModal","PatternsMenuItems"],"sources":["@wordpress/patterns/src/index.native.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './store';\nimport { lock } from './lock-unlock';\n\nexport const privateApis = {};\nlock( privateApis, {\n\tCreatePatternModal: () => null,\n\tPatternsMenuItems: () => null,\n} );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,SAAS;AAChB,SAASA,IAAI,QAAQ,eAAe;AAEpC,OAAO,MAAMC,WAAW,GAAG,CAAC,CAAC;AAC7BD,IAAI,CAAEC,WAAW,EAAE;EAClBC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,iBAAiB,EAAEA,CAAA,KAAM;AAC1B,CAAE,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__dangerousOptInToUnstableAPIsOnlyForCoreModules","lock","unlock"],"sources":["@wordpress/patterns/src/lock-unlock.js"],"sourcesContent":["/**\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"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gDAAgD,QAAQ,yBAAyB;AAC1F,OAAO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5BF,gDAAgD,CAC/C,iHAAiH,EACjH,qBACD,CAAC"}
|
|
1
|
+
{"version":3,"names":["__dangerousOptInToUnstableAPIsOnlyForCoreModules","lock","unlock"],"sources":["@wordpress/patterns/src/lock-unlock.js"],"sourcesContent":["/**\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"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gDAAgD,QAAQ,yBAAyB;AAC1F,OAAO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5BF,gDAAgD,CAC/C,iHAAiH,EACjH,qBACD,CAAC","ignoreList":[]}
|
|
@@ -2,25 +2,29 @@
|
|
|
2
2
|
* Internal dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { lock } from './lock-unlock';
|
|
5
|
+
import OverridesPanel from './components/overrides-panel';
|
|
5
6
|
import { default as CreatePatternModal, CreatePatternModalContents } from './components/create-pattern-modal';
|
|
6
7
|
import { default as DuplicatePatternModal, useDuplicatePatternProps } from './components/duplicate-pattern-modal';
|
|
8
|
+
import { isOverridableBlock } from './api';
|
|
7
9
|
import RenamePatternModal from './components/rename-pattern-modal';
|
|
8
10
|
import PatternsMenuItems from './components';
|
|
9
11
|
import RenamePatternCategoryModal from './components/rename-pattern-category-modal';
|
|
10
|
-
import
|
|
12
|
+
import PatternOverridesControls from './components/pattern-overrides-controls';
|
|
11
13
|
import ResetOverridesControl from './components/reset-overrides-control';
|
|
12
14
|
import { useAddPatternCategory } from './private-hooks';
|
|
13
15
|
import { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY, PATTERN_USER_CATEGORY, EXCLUDED_PATTERN_SOURCES, PATTERN_SYNC_TYPES, PARTIAL_SYNCING_SUPPORTED_BLOCKS } from './constants';
|
|
14
16
|
export const privateApis = {};
|
|
15
17
|
lock(privateApis, {
|
|
18
|
+
OverridesPanel,
|
|
16
19
|
CreatePatternModal,
|
|
17
20
|
CreatePatternModalContents,
|
|
18
21
|
DuplicatePatternModal,
|
|
22
|
+
isOverridableBlock,
|
|
19
23
|
useDuplicatePatternProps,
|
|
20
24
|
RenamePatternModal,
|
|
21
25
|
PatternsMenuItems,
|
|
22
26
|
RenamePatternCategoryModal,
|
|
23
|
-
|
|
27
|
+
PatternOverridesControls,
|
|
24
28
|
ResetOverridesControl,
|
|
25
29
|
useAddPatternCategory,
|
|
26
30
|
PATTERN_TYPES,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["lock","default","CreatePatternModal","CreatePatternModalContents","DuplicatePatternModal","useDuplicatePatternProps","RenamePatternModal","PatternsMenuItems","RenamePatternCategoryModal","
|
|
1
|
+
{"version":3,"names":["lock","OverridesPanel","default","CreatePatternModal","CreatePatternModalContents","DuplicatePatternModal","useDuplicatePatternProps","isOverridableBlock","RenamePatternModal","PatternsMenuItems","RenamePatternCategoryModal","PatternOverridesControls","ResetOverridesControl","useAddPatternCategory","PATTERN_TYPES","PATTERN_DEFAULT_CATEGORY","PATTERN_USER_CATEGORY","EXCLUDED_PATTERN_SOURCES","PATTERN_SYNC_TYPES","PARTIAL_SYNCING_SUPPORTED_BLOCKS","privateApis"],"sources":["@wordpress/patterns/src/private-apis.js"],"sourcesContent":["/**\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\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\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\tPARTIAL_SYNCING_SUPPORTED_BLOCKS,\n} );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,eAAe;AACpC,OAAOC,cAAc,MAAM,8BAA8B;AACzD,SACCC,OAAO,IAAIC,kBAAkB,EAC7BC,0BAA0B,QACpB,mCAAmC;AAC1C,SACCF,OAAO,IAAIG,qBAAqB,EAChCC,wBAAwB,QAClB,sCAAsC;AAC7C,SAASC,kBAAkB,QAAQ,OAAO;AAC1C,OAAOC,kBAAkB,MAAM,mCAAmC;AAClE,OAAOC,iBAAiB,MAAM,cAAc;AAC5C,OAAOC,0BAA0B,MAAM,4CAA4C;AACnF,OAAOC,wBAAwB,MAAM,yCAAyC;AAC9E,OAAOC,qBAAqB,MAAM,sCAAsC;AACxE,SAASC,qBAAqB,QAAQ,iBAAiB;AACvD,SACCC,aAAa,EACbC,wBAAwB,EACxBC,qBAAqB,EACrBC,wBAAwB,EACxBC,kBAAkB,EAClBC,gCAAgC,QAC1B,aAAa;AAEpB,OAAO,MAAMC,WAAW,GAAG,CAAC,CAAC;AAC7BpB,IAAI,CAAEoB,WAAW,EAAE;EAClBnB,cAAc;EACdE,kBAAkB;EAClBC,0BAA0B;EAC1BC,qBAAqB;EACrBE,kBAAkB;EAClBD,wBAAwB;EACxBE,kBAAkB;EAClBC,iBAAiB;EACjBC,0BAA0B;EAC1BC,wBAAwB;EACxBC,qBAAqB;EACrBC,qBAAqB;EACrBC,aAAa;EACbC,wBAAwB;EACxBC,qBAAqB;EACrBC,wBAAwB;EACxBC,kBAAkB;EAClBC;AACD,CAAE,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSelect","useDispatch","store","coreStore","useMemo","CATEGORY_SLUG","useAddPatternCategory","saveEntityRecord","invalidateResolution","corePatternCategories","userPatternCategories","select","getUserPatternCategories","getBlockPatternCategories","categoryMap","uniqueCategories","Map","forEach","category","set","label","toLowerCase","name","id","has","findOrCreateTerm","term","existingTerm","get","termData","slug","newTerm","throwOnError","error","code","data","term_id"],"sources":["@wordpress/patterns/src/private-hooks.js"],"sourcesContent":["/**\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useSelect","useDispatch","store","coreStore","useMemo","CATEGORY_SLUG","useAddPatternCategory","saveEntityRecord","invalidateResolution","corePatternCategories","userPatternCategories","select","getUserPatternCategories","getBlockPatternCategories","categoryMap","uniqueCategories","Map","forEach","category","set","label","toLowerCase","name","id","has","findOrCreateTerm","term","existingTerm","get","termData","slug","newTerm","throwOnError","error","code","data","term_id"],"sources":["@wordpress/patterns/src/private-hooks.js"],"sourcesContent":["/**\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"],"mappings":"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","ignoreList":[]}
|