@wordpress/block-library 8.28.5 → 8.28.6
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/build/block/edit.js +17 -8
- package/build/block/edit.js.map +1 -1
- package/build/code/save.js +3 -1
- package/build/code/save.js.map +1 -1
- package/build/navigation/edit/index.js +2 -2
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/navigation-menu-selector.js +20 -19
- package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/build-module/block/edit.js +18 -9
- package/build-module/block/edit.js.map +1 -1
- package/build-module/code/save.js +3 -1
- package/build-module/code/save.js.map +1 -1
- package/build-module/navigation/edit/index.js +2 -2
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-selector.js +20 -19
- package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/package.json +13 -13
- package/src/block/edit.js +38 -15
- package/src/code/save.js +7 -1
- package/src/navigation/edit/index.js +2 -2
- package/src/navigation/edit/navigation-menu-selector.js +34 -16
- package/src/navigation/edit/test/navigation-menu-selector.js +61 -39
- package/src/navigation/index.php +18 -12
|
@@ -45,7 +45,7 @@ function NavigationMenuSelector({
|
|
|
45
45
|
}) {
|
|
46
46
|
/* translators: %s: The name of a menu. */
|
|
47
47
|
const createActionLabel = (0, _i18n.__)("Create from '%s'");
|
|
48
|
-
const [
|
|
48
|
+
const [isUpdatingMenuRef, setIsUpdatingMenuRef] = (0, _element.useState)(false);
|
|
49
49
|
actionLabel = actionLabel || createActionLabel;
|
|
50
50
|
const {
|
|
51
51
|
menus: classicMenus
|
|
@@ -68,10 +68,11 @@ function NavigationMenuSelector({
|
|
|
68
68
|
return {
|
|
69
69
|
value: id,
|
|
70
70
|
label,
|
|
71
|
-
ariaLabel: (0, _i18n.sprintf)(actionLabel, label)
|
|
71
|
+
ariaLabel: (0, _i18n.sprintf)(actionLabel, label),
|
|
72
|
+
disabled: isUpdatingMenuRef || isResolvingNavigationMenus || !hasResolvedNavigationMenus
|
|
72
73
|
};
|
|
73
74
|
}) || [];
|
|
74
|
-
}, [navigationMenus, actionLabel]);
|
|
75
|
+
}, [navigationMenus, actionLabel, isResolvingNavigationMenus, hasResolvedNavigationMenus, isUpdatingMenuRef]);
|
|
75
76
|
const hasNavigationMenus = !!navigationMenus?.length;
|
|
76
77
|
const hasClassicMenus = !!classicMenus?.length;
|
|
77
78
|
const showNavigationMenus = !!canSwitchNavigationMenu;
|
|
@@ -80,7 +81,7 @@ function NavigationMenuSelector({
|
|
|
80
81
|
const noBlockMenus = !hasNavigationMenus && hasResolvedNavigationMenus;
|
|
81
82
|
const menuUnavailable = hasResolvedNavigationMenus && currentMenuId === null;
|
|
82
83
|
let selectorLabel = '';
|
|
83
|
-
if (
|
|
84
|
+
if (isResolvingNavigationMenus) {
|
|
84
85
|
selectorLabel = (0, _i18n.__)('Loading…');
|
|
85
86
|
} else if (noMenuSelected || noBlockMenus || menuUnavailable) {
|
|
86
87
|
// Note: classic Menus may be available.
|
|
@@ -90,10 +91,10 @@ function NavigationMenuSelector({
|
|
|
90
91
|
selectorLabel = currentTitle;
|
|
91
92
|
}
|
|
92
93
|
(0, _element.useEffect)(() => {
|
|
93
|
-
if (
|
|
94
|
-
|
|
94
|
+
if (isUpdatingMenuRef && (createNavigationMenuIsSuccess || createNavigationMenuIsError)) {
|
|
95
|
+
setIsUpdatingMenuRef(false);
|
|
95
96
|
}
|
|
96
|
-
}, [hasResolvedNavigationMenus, createNavigationMenuIsSuccess, canUserCreateNavigationMenu, createNavigationMenuIsError,
|
|
97
|
+
}, [hasResolvedNavigationMenus, createNavigationMenuIsSuccess, canUserCreateNavigationMenu, createNavigationMenuIsError, isUpdatingMenuRef, menuUnavailable, noBlockMenus, noMenuSelected]);
|
|
97
98
|
const NavigationMenuSelectorDropdown = (0, _react.createElement)(_components.DropdownMenu, {
|
|
98
99
|
label: selectorLabel,
|
|
99
100
|
icon: _icons.moreVertical,
|
|
@@ -107,35 +108,35 @@ function NavigationMenuSelector({
|
|
|
107
108
|
}, (0, _react.createElement)(_components.MenuItemsChoice, {
|
|
108
109
|
value: currentMenuId,
|
|
109
110
|
onSelect: menuId => {
|
|
110
|
-
setIsCreatingMenu(true);
|
|
111
111
|
onSelectNavigationMenu(menuId);
|
|
112
112
|
onClose();
|
|
113
113
|
},
|
|
114
|
-
choices: menuChoices
|
|
115
|
-
disabled: isCreatingMenu
|
|
114
|
+
choices: menuChoices
|
|
116
115
|
})), showClassicMenus && hasClassicMenus && (0, _react.createElement)(_components.MenuGroup, {
|
|
117
116
|
label: (0, _i18n.__)('Import Classic Menus')
|
|
118
117
|
}, classicMenus?.map(menu => {
|
|
119
118
|
const label = (0, _htmlEntities.decodeEntities)(menu.name);
|
|
120
119
|
return (0, _react.createElement)(_components.MenuItem, {
|
|
121
|
-
onClick: () => {
|
|
122
|
-
|
|
123
|
-
onSelectClassicMenu(menu);
|
|
120
|
+
onClick: async () => {
|
|
121
|
+
setIsUpdatingMenuRef(true);
|
|
122
|
+
await onSelectClassicMenu(menu);
|
|
123
|
+
setIsUpdatingMenuRef(false);
|
|
124
124
|
onClose();
|
|
125
125
|
},
|
|
126
126
|
key: menu.id,
|
|
127
127
|
"aria-label": (0, _i18n.sprintf)(createActionLabel, label),
|
|
128
|
-
disabled:
|
|
128
|
+
disabled: isUpdatingMenuRef || isResolvingNavigationMenus || !hasResolvedNavigationMenus
|
|
129
129
|
}, label);
|
|
130
130
|
})), canUserCreateNavigationMenu && (0, _react.createElement)(_components.MenuGroup, {
|
|
131
131
|
label: (0, _i18n.__)('Tools')
|
|
132
132
|
}, (0, _react.createElement)(_components.MenuItem, {
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
onClick: async () => {
|
|
134
|
+
setIsUpdatingMenuRef(true);
|
|
135
|
+
await onCreateNew();
|
|
136
|
+
setIsUpdatingMenuRef(false);
|
|
135
137
|
onClose();
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
138
|
+
},
|
|
139
|
+
disabled: isUpdatingMenuRef || isResolvingNavigationMenus || !hasResolvedNavigationMenus
|
|
139
140
|
}, (0, _i18n.__)('Create new menu')))));
|
|
140
141
|
return NavigationMenuSelectorDropdown;
|
|
141
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","_icons","_i18n","_htmlEntities","_element","_coreData","_useNavigationMenu","_interopRequireDefault","_useNavigationEntities","buildMenuLabel","title","id","status","sprintf","__","decodeEntities","NavigationMenuSelector","currentMenuId","onSelectNavigationMenu","onSelectClassicMenu","onCreateNew","actionLabel","createNavigationMenuIsSuccess","createNavigationMenuIsError","createActionLabel","isCreatingMenu","setIsCreatingMenu","useState","menus","classicMenus","useNavigationEntities","navigationMenus","isResolvingNavigationMenus","hasResolvedNavigationMenus","canUserCreateNavigationMenu","canSwitchNavigationMenu","useNavigationMenu","currentTitle","useEntityProp","menuChoices","useMemo","map","index","label","rendered","value","ariaLabel","hasNavigationMenus","length","hasClassicMenus","showNavigationMenus","showClassicMenus","noMenuSelected","noBlockMenus","menuUnavailable","selectorLabel","useEffect","NavigationMenuSelectorDropdown","_react","createElement","DropdownMenu","icon","moreVertical","toggleProps","isSmall","onClose","Fragment","MenuGroup","MenuItemsChoice","onSelect","menuId","choices","disabled","menu","name","MenuItem","onClick","key","_default","exports","default"],"sources":["@wordpress/block-library/src/navigation/edit/navigation-menu-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tMenuGroup,\n\tMenuItem,\n\tMenuItemsChoice,\n\tDropdownMenu,\n} from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\nimport { useEntityProp } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport useNavigationEntities from '../use-navigation-entities';\n\nfunction buildMenuLabel( title, id, status ) {\n\tif ( ! title ) {\n\t\t/* translators: %s is the index of the menu in the list of menus. */\n\t\treturn sprintf( __( '(no title %s)' ), id );\n\t}\n\n\tif ( status === 'publish' ) {\n\t\treturn decodeEntities( title );\n\t}\n\n\treturn sprintf(\n\t\t// translators: %1s: title of the menu; %2s: status of the menu (draft, pending, etc.).\n\t\t__( '%1$s (%2$s)' ),\n\t\tdecodeEntities( title ),\n\t\tstatus\n\t);\n}\n\nfunction NavigationMenuSelector( {\n\tcurrentMenuId,\n\tonSelectNavigationMenu,\n\tonSelectClassicMenu,\n\tonCreateNew,\n\tactionLabel,\n\tcreateNavigationMenuIsSuccess,\n\tcreateNavigationMenuIsError,\n} ) {\n\t/* translators: %s: The name of a menu. */\n\tconst createActionLabel = __( \"Create from '%s'\" );\n\n\tconst [ isCreatingMenu, setIsCreatingMenu ] = useState( false );\n\n\tactionLabel = actionLabel || createActionLabel;\n\n\tconst { menus: classicMenus } = useNavigationEntities();\n\n\tconst {\n\t\tnavigationMenus,\n\t\tisResolvingNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tcanUserCreateNavigationMenu,\n\t\tcanSwitchNavigationMenu,\n\t} = useNavigationMenu();\n\n\tconst [ currentTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_navigation',\n\t\t'title'\n\t);\n\n\tconst menuChoices = useMemo( () => {\n\t\treturn (\n\t\t\tnavigationMenus?.map( ( { id, title, status }, index ) => {\n\t\t\t\tconst label = buildMenuLabel(\n\t\t\t\t\ttitle?.rendered,\n\t\t\t\t\tindex + 1,\n\t\t\t\t\tstatus\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tvalue: id,\n\t\t\t\t\tlabel,\n\t\t\t\t\tariaLabel: sprintf( actionLabel, label ),\n\t\t\t\t};\n\t\t\t} ) || []\n\t\t);\n\t}, [ navigationMenus, actionLabel ] );\n\n\tconst hasNavigationMenus = !! navigationMenus?.length;\n\tconst hasClassicMenus = !! classicMenus?.length;\n\tconst showNavigationMenus = !! canSwitchNavigationMenu;\n\tconst showClassicMenus = !! canUserCreateNavigationMenu;\n\n\tconst noMenuSelected = hasNavigationMenus && ! currentMenuId;\n\tconst noBlockMenus = ! hasNavigationMenus && hasResolvedNavigationMenus;\n\tconst menuUnavailable =\n\t\thasResolvedNavigationMenus && currentMenuId === null;\n\n\tlet selectorLabel = '';\n\n\tif ( isCreatingMenu || isResolvingNavigationMenus ) {\n\t\tselectorLabel = __( 'Loading…' );\n\t} else if ( noMenuSelected || noBlockMenus || menuUnavailable ) {\n\t\t// Note: classic Menus may be available.\n\t\tselectorLabel = __( 'Choose or create a Navigation menu' );\n\t} else {\n\t\t// Current Menu's title.\n\t\tselectorLabel = currentTitle;\n\t}\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tisCreatingMenu &&\n\t\t\t( createNavigationMenuIsSuccess || createNavigationMenuIsError )\n\t\t) {\n\t\t\tsetIsCreatingMenu( false );\n\t\t}\n\t}, [\n\t\thasResolvedNavigationMenus,\n\t\tcreateNavigationMenuIsSuccess,\n\t\tcanUserCreateNavigationMenu,\n\t\tcreateNavigationMenuIsError,\n\t\tisCreatingMenu,\n\t\tmenuUnavailable,\n\t\tnoBlockMenus,\n\t\tnoMenuSelected,\n\t] );\n\n\tconst NavigationMenuSelectorDropdown = (\n\t\t<DropdownMenu\n\t\t\tlabel={ selectorLabel }\n\t\t\ticon={ moreVertical }\n\t\t\ttoggleProps={ { isSmall: true } }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ showNavigationMenus && hasNavigationMenus && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Menus' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tvalue={ currentMenuId }\n\t\t\t\t\t\t\t\tonSelect={ ( menuId ) => {\n\t\t\t\t\t\t\t\t\tsetIsCreatingMenu( true );\n\t\t\t\t\t\t\t\t\tonSelectNavigationMenu( menuId );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tchoices={ menuChoices }\n\t\t\t\t\t\t\t\tdisabled={ isCreatingMenu }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showClassicMenus && hasClassicMenus && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Import Classic Menus' ) }>\n\t\t\t\t\t\t\t{ classicMenus?.map( ( menu ) => {\n\t\t\t\t\t\t\t\tconst label = decodeEntities( menu.name );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetIsCreatingMenu( true );\n\t\t\t\t\t\t\t\t\t\t\tonSelectClassicMenu( menu );\n\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t\t\t\tcreateActionLabel,\n\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tdisabled={ isCreatingMenu }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ canUserCreateNavigationMenu && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Tools' ) }>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tdisabled={ isCreatingMenu }\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\tonCreateNew();\n\t\t\t\t\t\t\t\t\tsetIsCreatingMenu( true );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Create new menu' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n\n\treturn NavigationMenuSelectorDropdown;\n}\n\nexport default NavigationMenuSelector;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_components","require","_icons","_i18n","_htmlEntities","_element","_coreData","_useNavigationMenu","_interopRequireDefault","_useNavigationEntities","buildMenuLabel","title","id","status","sprintf","__","decodeEntities","NavigationMenuSelector","currentMenuId","onSelectNavigationMenu","onSelectClassicMenu","onCreateNew","actionLabel","createNavigationMenuIsSuccess","createNavigationMenuIsError","createActionLabel","isUpdatingMenuRef","setIsUpdatingMenuRef","useState","menus","classicMenus","useNavigationEntities","navigationMenus","isResolvingNavigationMenus","hasResolvedNavigationMenus","canUserCreateNavigationMenu","canSwitchNavigationMenu","useNavigationMenu","currentTitle","useEntityProp","menuChoices","useMemo","map","index","label","rendered","value","ariaLabel","disabled","hasNavigationMenus","length","hasClassicMenus","showNavigationMenus","showClassicMenus","noMenuSelected","noBlockMenus","menuUnavailable","selectorLabel","useEffect","NavigationMenuSelectorDropdown","_react","createElement","DropdownMenu","icon","moreVertical","toggleProps","isSmall","onClose","Fragment","MenuGroup","MenuItemsChoice","onSelect","menuId","choices","menu","name","MenuItem","onClick","key","_default","exports","default"],"sources":["@wordpress/block-library/src/navigation/edit/navigation-menu-selector.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tMenuGroup,\n\tMenuItem,\n\tMenuItemsChoice,\n\tDropdownMenu,\n} from '@wordpress/components';\nimport { moreVertical } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { useEffect, useMemo, useState } from '@wordpress/element';\nimport { useEntityProp } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport useNavigationEntities from '../use-navigation-entities';\n\nfunction buildMenuLabel( title, id, status ) {\n\tif ( ! title ) {\n\t\t/* translators: %s is the index of the menu in the list of menus. */\n\t\treturn sprintf( __( '(no title %s)' ), id );\n\t}\n\n\tif ( status === 'publish' ) {\n\t\treturn decodeEntities( title );\n\t}\n\n\treturn sprintf(\n\t\t// translators: %1s: title of the menu; %2s: status of the menu (draft, pending, etc.).\n\t\t__( '%1$s (%2$s)' ),\n\t\tdecodeEntities( title ),\n\t\tstatus\n\t);\n}\n\nfunction NavigationMenuSelector( {\n\tcurrentMenuId,\n\tonSelectNavigationMenu,\n\tonSelectClassicMenu,\n\tonCreateNew,\n\tactionLabel,\n\tcreateNavigationMenuIsSuccess,\n\tcreateNavigationMenuIsError,\n} ) {\n\t/* translators: %s: The name of a menu. */\n\tconst createActionLabel = __( \"Create from '%s'\" );\n\n\tconst [ isUpdatingMenuRef, setIsUpdatingMenuRef ] = useState( false );\n\n\tactionLabel = actionLabel || createActionLabel;\n\n\tconst { menus: classicMenus } = useNavigationEntities();\n\n\tconst {\n\t\tnavigationMenus,\n\t\tisResolvingNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tcanUserCreateNavigationMenu,\n\t\tcanSwitchNavigationMenu,\n\t} = useNavigationMenu();\n\n\tconst [ currentTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_navigation',\n\t\t'title'\n\t);\n\n\tconst menuChoices = useMemo( () => {\n\t\treturn (\n\t\t\tnavigationMenus?.map( ( { id, title, status }, index ) => {\n\t\t\t\tconst label = buildMenuLabel(\n\t\t\t\t\ttitle?.rendered,\n\t\t\t\t\tindex + 1,\n\t\t\t\t\tstatus\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tvalue: id,\n\t\t\t\t\tlabel,\n\t\t\t\t\tariaLabel: sprintf( actionLabel, label ),\n\t\t\t\t\tdisabled:\n\t\t\t\t\t\tisUpdatingMenuRef ||\n\t\t\t\t\t\tisResolvingNavigationMenus ||\n\t\t\t\t\t\t! hasResolvedNavigationMenus,\n\t\t\t\t};\n\t\t\t} ) || []\n\t\t);\n\t}, [\n\t\tnavigationMenus,\n\t\tactionLabel,\n\t\tisResolvingNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tisUpdatingMenuRef,\n\t] );\n\n\tconst hasNavigationMenus = !! navigationMenus?.length;\n\tconst hasClassicMenus = !! classicMenus?.length;\n\tconst showNavigationMenus = !! canSwitchNavigationMenu;\n\tconst showClassicMenus = !! canUserCreateNavigationMenu;\n\n\tconst noMenuSelected = hasNavigationMenus && ! currentMenuId;\n\tconst noBlockMenus = ! hasNavigationMenus && hasResolvedNavigationMenus;\n\tconst menuUnavailable =\n\t\thasResolvedNavigationMenus && currentMenuId === null;\n\n\tlet selectorLabel = '';\n\n\tif ( isResolvingNavigationMenus ) {\n\t\tselectorLabel = __( 'Loading…' );\n\t} else if ( noMenuSelected || noBlockMenus || menuUnavailable ) {\n\t\t// Note: classic Menus may be available.\n\t\tselectorLabel = __( 'Choose or create a Navigation menu' );\n\t} else {\n\t\t// Current Menu's title.\n\t\tselectorLabel = currentTitle;\n\t}\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tisUpdatingMenuRef &&\n\t\t\t( createNavigationMenuIsSuccess || createNavigationMenuIsError )\n\t\t) {\n\t\t\tsetIsUpdatingMenuRef( false );\n\t\t}\n\t}, [\n\t\thasResolvedNavigationMenus,\n\t\tcreateNavigationMenuIsSuccess,\n\t\tcanUserCreateNavigationMenu,\n\t\tcreateNavigationMenuIsError,\n\t\tisUpdatingMenuRef,\n\t\tmenuUnavailable,\n\t\tnoBlockMenus,\n\t\tnoMenuSelected,\n\t] );\n\n\tconst NavigationMenuSelectorDropdown = (\n\t\t<DropdownMenu\n\t\t\tlabel={ selectorLabel }\n\t\t\ticon={ moreVertical }\n\t\t\ttoggleProps={ { isSmall: true } }\n\t\t>\n\t\t\t{ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t{ showNavigationMenus && hasNavigationMenus && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Menus' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tvalue={ currentMenuId }\n\t\t\t\t\t\t\t\tonSelect={ ( menuId ) => {\n\t\t\t\t\t\t\t\t\tonSelectNavigationMenu( menuId );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tchoices={ menuChoices }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showClassicMenus && hasClassicMenus && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Import Classic Menus' ) }>\n\t\t\t\t\t\t\t{ classicMenus?.map( ( menu ) => {\n\t\t\t\t\t\t\t\tconst label = decodeEntities( menu.name );\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\t\t\t\t\tsetIsUpdatingMenuRef( true );\n\t\t\t\t\t\t\t\t\t\t\tawait onSelectClassicMenu( menu );\n\t\t\t\t\t\t\t\t\t\t\tsetIsUpdatingMenuRef( false );\n\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\tkey={ menu.id }\n\t\t\t\t\t\t\t\t\t\taria-label={ sprintf(\n\t\t\t\t\t\t\t\t\t\t\tcreateActionLabel,\n\t\t\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\t\tisUpdatingMenuRef ||\n\t\t\t\t\t\t\t\t\t\t\tisResolvingNavigationMenus ||\n\t\t\t\t\t\t\t\t\t\t\t! hasResolvedNavigationMenus\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ canUserCreateNavigationMenu && (\n\t\t\t\t\t\t<MenuGroup label={ __( 'Tools' ) }>\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={ async () => {\n\t\t\t\t\t\t\t\t\tsetIsUpdatingMenuRef( true );\n\t\t\t\t\t\t\t\t\tawait onCreateNew();\n\t\t\t\t\t\t\t\t\tsetIsUpdatingMenuRef( false );\n\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\tisUpdatingMenuRef ||\n\t\t\t\t\t\t\t\t\tisResolvingNavigationMenus ||\n\t\t\t\t\t\t\t\t\t! hasResolvedNavigationMenus\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Create new menu' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n\n\treturn NavigationMenuSelectorDropdown;\n}\n\nexport default NavigationMenuSelector;\n"],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import { Placeholder, Spinner, ToolbarButton, ToolbarGroup } from '@wordpress/co
|
|
|
14
14
|
import { __ } from '@wordpress/i18n';
|
|
15
15
|
import { useInnerBlocksProps, RecursionProvider, useHasRecursion, InnerBlocks, useBlockProps, Warning, privateApis as blockEditorPrivateApis, store as blockEditorStore, BlockControls } from '@wordpress/block-editor';
|
|
16
16
|
import { privateApis as patternsPrivateApis } from '@wordpress/patterns';
|
|
17
|
-
import { parse, cloneBlock } from '@wordpress/blocks';
|
|
17
|
+
import { parse, cloneBlock, store as blocksStore } from '@wordpress/blocks';
|
|
18
18
|
import { RichTextData } from '@wordpress/rich-text';
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -196,7 +196,8 @@ export default function ReusableBlockEdit({
|
|
|
196
196
|
userCanEdit,
|
|
197
197
|
getBlockEditingMode,
|
|
198
198
|
onNavigateToEntityRecord,
|
|
199
|
-
editingMode
|
|
199
|
+
editingMode,
|
|
200
|
+
hasPatternOverridesSource
|
|
200
201
|
} = useSelect(select => {
|
|
201
202
|
const {
|
|
202
203
|
canUser
|
|
@@ -206,6 +207,9 @@ export default function ReusableBlockEdit({
|
|
|
206
207
|
getSettings,
|
|
207
208
|
getBlockEditingMode: _getBlockEditingMode
|
|
208
209
|
} = select(blockEditorStore);
|
|
210
|
+
const {
|
|
211
|
+
getBlockBindingsSource
|
|
212
|
+
} = unlock(select(blocksStore));
|
|
209
213
|
const blocks = getBlocks(patternClientId);
|
|
210
214
|
const canEdit = canUser('update', 'blocks', ref);
|
|
211
215
|
|
|
@@ -215,7 +219,8 @@ export default function ReusableBlockEdit({
|
|
|
215
219
|
userCanEdit: canEdit,
|
|
216
220
|
getBlockEditingMode: _getBlockEditingMode,
|
|
217
221
|
onNavigateToEntityRecord: getSettings().onNavigateToEntityRecord,
|
|
218
|
-
editingMode: _getBlockEditingMode(patternClientId)
|
|
222
|
+
editingMode: _getBlockEditingMode(patternClientId),
|
|
223
|
+
hasPatternOverridesSource: !!getBlockBindingsSource('core/pattern-overrides')
|
|
219
224
|
};
|
|
220
225
|
}, [patternClientId, ref]);
|
|
221
226
|
|
|
@@ -223,9 +228,9 @@ export default function ReusableBlockEdit({
|
|
|
223
228
|
useEffect(() => {
|
|
224
229
|
setBlockEditMode(setBlockEditingMode, innerBlocks,
|
|
225
230
|
// Disable editing if the pattern itself is disabled.
|
|
226
|
-
editingMode === 'disabled' ? 'disabled' : undefined);
|
|
227
|
-
}, [editingMode, innerBlocks, setBlockEditingMode]);
|
|
228
|
-
const canOverrideBlocks = useMemo(() => hasOverridableBlocks(innerBlocks), [innerBlocks]);
|
|
231
|
+
editingMode === 'disabled' || !hasPatternOverridesSource ? 'disabled' : undefined);
|
|
232
|
+
}, [editingMode, innerBlocks, setBlockEditingMode, hasPatternOverridesSource]);
|
|
233
|
+
const canOverrideBlocks = useMemo(() => hasPatternOverridesSource && hasOverridableBlocks(innerBlocks), [hasPatternOverridesSource, innerBlocks]);
|
|
229
234
|
const initialBlocks = useMemo(() => {
|
|
230
235
|
var _editedRecord$blocks$;
|
|
231
236
|
return (// Clone the blocks to generate new client IDs.
|
|
@@ -244,11 +249,12 @@ export default function ReusableBlockEdit({
|
|
|
244
249
|
registry.batch(() => {
|
|
245
250
|
setBlockEditingMode(patternClientId, 'default');
|
|
246
251
|
syncDerivedUpdates(() => {
|
|
247
|
-
|
|
252
|
+
const blocks = hasPatternOverridesSource ? applyInitialContentValuesToInnerBlocks(initialBlocks, initialContent.current, defaultContent.current, legacyIdMap.current) : initialBlocks;
|
|
253
|
+
replaceInnerBlocks(patternClientId, blocks);
|
|
248
254
|
});
|
|
249
255
|
setBlockEditingMode(patternClientId, originalEditingMode);
|
|
250
256
|
});
|
|
251
|
-
}, [__unstableMarkNextChangeAsNotPersistent, patternClientId, initialBlocks, replaceInnerBlocks, registry, getBlockEditingMode, setBlockEditingMode, syncDerivedUpdates]);
|
|
257
|
+
}, [hasPatternOverridesSource, __unstableMarkNextChangeAsNotPersistent, patternClientId, initialBlocks, replaceInnerBlocks, registry, getBlockEditingMode, setBlockEditingMode, syncDerivedUpdates]);
|
|
252
258
|
const {
|
|
253
259
|
alignment,
|
|
254
260
|
layout
|
|
@@ -270,6 +276,9 @@ export default function ReusableBlockEdit({
|
|
|
270
276
|
// Sync the `content` attribute from the updated blocks to the pattern block.
|
|
271
277
|
// `syncDerivedUpdates` is used here to avoid creating an additional undo level.
|
|
272
278
|
useEffect(() => {
|
|
279
|
+
if (!hasPatternOverridesSource) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
273
282
|
const {
|
|
274
283
|
getBlocks
|
|
275
284
|
} = registry.select(blockEditorStore);
|
|
@@ -285,7 +294,7 @@ export default function ReusableBlockEdit({
|
|
|
285
294
|
});
|
|
286
295
|
}
|
|
287
296
|
}, blockEditorStore);
|
|
288
|
-
}, [syncDerivedUpdates, patternClientId, registry, setAttributes]);
|
|
297
|
+
}, [hasPatternOverridesSource, syncDerivedUpdates, patternClientId, registry, setAttributes]);
|
|
289
298
|
const handleEditOriginal = () => {
|
|
290
299
|
onNavigateToEntityRecord({
|
|
291
300
|
postId: ref,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","useRegistry","useSelect","useDispatch","useRef","useMemo","useEffect","useEntityRecord","store","coreStore","Placeholder","Spinner","ToolbarButton","ToolbarGroup","__","useInnerBlocksProps","RecursionProvider","useHasRecursion","InnerBlocks","useBlockProps","Warning","privateApis","blockEditorPrivateApis","blockEditorStore","BlockControls","patternsPrivateApis","parse","cloneBlock","RichTextData","name","patternBlockName","unlock","useLayoutClasses","PARTIAL_SYNCING_SUPPORTED_BLOCKS","fullAlignments","getLegacyIdMap","blocks","content","nameCount","idToClientIdMap","block","innerBlocks","length","id","attributes","metadata","clientId","useInferredLayout","parentLayout","initialInferredAlignmentRef","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","includes","align","layout","hasOverridableAttributes","Object","keys","bindings","values","binding","source","hasOverridableBlocks","getOverridableAttributes","entries","filter","map","attributeKey","applyInitialContentValuesToInnerBlocks","defaultValues","legacyIdMap","_legacyIdMap$block$cl","metadataName","newAttributes","_defaultValues$metada","contentValues","isAttributeEqual","attribute1","attribute2","toString","getContentValuesFromInnerBlocks","_legacyIdMap$block$cl2","assign","_content$metadataName","setBlockEditMode","setEditMode","mode","forEach","editMode","ReusableBlockEdit","ref","__unstableParentLayout","patternClientId","setAttributes","registry","hasAlreadyRendered","record","editedRecord","hasResolved","isMissing","initialContent","defaultContent","replaceInnerBlocks","__unstableMarkNextChangeAsNotPersistent","setBlockEditingMode","syncDerivedUpdates","userCanEdit","getBlockEditingMode","onNavigateToEntityRecord","editingMode","select","canUser","getBlocks","getSettings","_getBlockEditingMode","canEdit","canOverrideBlocks","initialBlocks","_editedRecord$blocks$","originalEditingMode","batch","layoutClasses","blockProps","className","innerBlocksProps","templateLock","renderAppender","ButtonBlockAppender","prevBlocks","subscribe","handleEditOriginal","postId","postType","resetContent","children","createElement","uniqueId","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, useMemo, useEffect } from '@wordpress/element';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInnerBlocks,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { parse, cloneBlock } from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { name as patternBlockName } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst { PARTIAL_SYNCING_SUPPORTED_BLOCKS } = unlock( patternsPrivateApis );\n\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nfunction getLegacyIdMap( blocks, content, nameCount = {} ) {\n\tlet idToClientIdMap = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block?.innerBlocks?.length ) {\n\t\t\tidToClientIdMap = {\n\t\t\t\t...idToClientIdMap,\n\t\t\t\t...getLegacyIdMap( block.innerBlocks, content, nameCount ),\n\t\t\t};\n\t\t}\n\n\t\tconst id = block.attributes.metadata?.id;\n\t\tconst clientId = block.clientId;\n\t\tif ( id && content?.[ id ] ) {\n\t\t\tidToClientIdMap[ clientId ] = id;\n\t\t}\n\t}\n\treturn idToClientIdMap;\n}\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nfunction hasOverridableAttributes( block ) {\n\treturn (\n\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\tblock.name\n\t\t) &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n\nfunction hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( hasOverridableAttributes( block ) ) return true;\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n\nfunction getOverridableAttributes( block ) {\n\treturn Object.entries( block.attributes.metadata.bindings )\n\t\t.filter(\n\t\t\t( [ , binding ] ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t\t.map( ( [ attributeKey ] ) => attributeKey );\n}\n\nfunction applyInitialContentValuesToInnerBlocks(\n\tblocks,\n\tcontent = {},\n\tdefaultValues,\n\tlegacyIdMap\n) {\n\treturn blocks.map( ( block ) => {\n\t\tconst innerBlocks = applyInitialContentValuesToInnerBlocks(\n\t\t\tblock.innerBlocks,\n\t\t\tcontent,\n\t\t\tdefaultValues,\n\t\t\tlegacyIdMap\n\t\t);\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\treturn { ...block, innerBlocks };\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tconst newAttributes = { ...block.attributes };\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tdefaultValues[ metadataName ] ??= {};\n\t\t\tdefaultValues[ metadataName ][ attributeKey ] =\n\t\t\t\tblock.attributes[ attributeKey ];\n\n\t\t\tconst contentValues = content[ metadataName ];\n\t\t\tif ( contentValues?.[ attributeKey ] !== undefined ) {\n\t\t\t\tnewAttributes[ attributeKey ] = contentValues[ attributeKey ];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: newAttributes,\n\t\t\tinnerBlocks,\n\t\t};\n\t} );\n}\n\nfunction isAttributeEqual( attribute1, attribute2 ) {\n\tif (\n\t\tattribute1 instanceof RichTextData &&\n\t\tattribute2 instanceof RichTextData\n\t) {\n\t\treturn attribute1.toString() === attribute2.toString();\n\t}\n\treturn attribute1 === attribute2;\n}\n\nfunction getContentValuesFromInnerBlocks( blocks, defaultValues, legacyIdMap ) {\n\t/** @type {Record<string, { values: Record<string, unknown>}>} */\n\tconst content = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block.name === patternBlockName ) continue;\n\t\tif ( block.innerBlocks.length ) {\n\t\t\tObject.assign(\n\t\t\t\tcontent,\n\t\t\t\tgetContentValuesFromInnerBlocks(\n\t\t\t\t\tblock.innerBlocks,\n\t\t\t\t\tdefaultValues,\n\t\t\t\t\tlegacyIdMap\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tif (\n\t\t\t\t! isAttributeEqual(\n\t\t\t\t\tblock.attributes[ attributeKey ],\n\t\t\t\t\tdefaultValues?.[ metadataName ]?.[ attributeKey ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontent[ metadataName ] ??= {};\n\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\tcontent[ metadataName ][ attributeKey ] =\n\t\t\t\t\tblock.attributes[ attributeKey ] === undefined\n\t\t\t\t\t\t? // TODO: We use an empty string to represent undefined for now until\n\t\t\t\t\t\t // we support a richer format for overrides and the block binding API.\n\t\t\t\t\t\t // Currently only the `linkTarget` attribute of `core/button` is affected.\n\t\t\t\t\t\t ''\n\t\t\t\t\t\t: block.attributes[ attributeKey ];\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys( content ).length > 0 ? content : undefined;\n}\n\nfunction setBlockEditMode( setEditMode, blocks, mode ) {\n\tblocks.forEach( ( block ) => {\n\t\tconst editMode =\n\t\t\tmode ||\n\t\t\t( hasOverridableAttributes( block ) ? 'contentOnly' : 'disabled' );\n\t\tsetEditMode( block.clientId, editMode );\n\n\t\tsetBlockEditMode(\n\t\t\tsetEditMode,\n\t\t\tblock.innerBlocks,\n\t\t\t// Disable editing for nested patterns.\n\t\t\tblock.name === patternBlockName ? 'disabled' : mode\n\t\t);\n\t} );\n}\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref, content },\n\t__unstableParentLayout: parentLayout,\n\tclientId: patternClientId,\n\tsetAttributes,\n} ) {\n\tconst registry = useRegistry();\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, editedRecord, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\t// The initial value of the `content` attribute.\n\tconst initialContent = useRef( content );\n\n\t// The default content values from the original pattern for overridable attributes.\n\t// Set by the `applyInitialContentValuesToInnerBlocks` function.\n\tconst defaultContent = useRef( {} );\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetBlockEditingMode,\n\t} = useDispatch( blockEditorStore );\n\tconst { syncDerivedUpdates } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tuserCanEdit,\n\t\tgetBlockEditingMode,\n\t\tonNavigateToEntityRecord,\n\t\teditingMode,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tconst canEdit = canUser( 'update', 'blocks', ref );\n\n\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\treturn {\n\t\t\t\tinnerBlocks: blocks,\n\t\t\t\tuserCanEdit: canEdit,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\teditingMode: _getBlockEditingMode( patternClientId ),\n\t\t\t};\n\t\t},\n\t\t[ patternClientId, ref ]\n\t);\n\n\t// Sync the editing mode of the pattern block with the inner blocks.\n\tuseEffect( () => {\n\t\tsetBlockEditMode(\n\t\t\tsetBlockEditingMode,\n\t\t\tinnerBlocks,\n\t\t\t// Disable editing if the pattern itself is disabled.\n\t\t\teditingMode === 'disabled' ? 'disabled' : undefined\n\t\t);\n\t}, [ editingMode, innerBlocks, setBlockEditingMode ] );\n\n\tconst canOverrideBlocks = useMemo(\n\t\t() => hasOverridableBlocks( innerBlocks ),\n\t\t[ innerBlocks ]\n\t);\n\n\tconst initialBlocks = useMemo(\n\t\t() =>\n\t\t\t// Clone the blocks to generate new client IDs.\n\t\t\teditedRecord.blocks?.map( ( block ) => cloneBlock( block ) ) ??\n\t\t\t( editedRecord.content && typeof editedRecord.content !== 'function'\n\t\t\t\t? parse( editedRecord.content )\n\t\t\t\t: [] ),\n\t\t[ editedRecord.blocks, editedRecord.content ]\n\t);\n\n\tconst legacyIdMap = useRef( {} );\n\n\t// Apply the initial overrides from the pattern block to the inner blocks.\n\tuseEffect( () => {\n\t\t// Build a map of clientIds to the old nano id system to provide back compat.\n\t\tlegacyIdMap.current = getLegacyIdMap(\n\t\t\tinitialBlocks,\n\t\t\tinitialContent.current\n\t\t);\n\t\tdefaultContent.current = {};\n\t\tconst originalEditingMode = getBlockEditingMode( patternClientId );\n\t\t// Replace the contents of the blocks with the overrides.\n\t\tregistry.batch( () => {\n\t\t\tsetBlockEditingMode( patternClientId, 'default' );\n\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\tpatternClientId,\n\t\t\t\t\tapplyInitialContentValuesToInnerBlocks(\n\t\t\t\t\t\tinitialBlocks,\n\t\t\t\t\t\tinitialContent.current,\n\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\tlegacyIdMap.current\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} );\n\t\t\tsetBlockEditingMode( patternClientId, originalEditingMode );\n\t\t} );\n\t}, [\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tpatternClientId,\n\t\tinitialBlocks,\n\t\treplaceInnerBlocks,\n\t\tregistry,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tsyncDerivedUpdates,\n\t] );\n\n\tconst { alignment, layout } = useInferredLayout(\n\t\tinnerBlocks,\n\t\tparentLayout\n\t);\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: 'all',\n\t\tlayout,\n\t\trenderAppender: innerBlocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\t// Sync the `content` attribute from the updated blocks to the pattern block.\n\t// `syncDerivedUpdates` is used here to avoid creating an additional undo level.\n\tuseEffect( () => {\n\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\t\tlet prevBlocks = getBlocks( patternClientId );\n\t\treturn registry.subscribe( () => {\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tif ( blocks !== prevBlocks ) {\n\t\t\t\tprevBlocks = blocks;\n\t\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: getContentValuesFromInnerBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\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}, blockEditorStore );\n\t}, [ syncDerivedUpdates, patternClientId, registry, setAttributes ] );\n\n\tconst handleEditOriginal = () => {\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: ref,\n\t\t\tpostType: 'wp_block',\n\t\t} );\n\t};\n\n\tconst resetContent = () => {\n\t\tif ( content ) {\n\t\t\treplaceInnerBlocks( patternClientId, initialBlocks );\n\t\t}\n\t};\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ userCanEdit && onNavigateToEntityRecord && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton onClick={ handleEditOriginal }>\n\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ canOverrideBlocks && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ resetContent }\n\t\t\t\t\t\t\tdisabled={ ! content }\n\t\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","useRegistry","useSelect","useDispatch","useRef","useMemo","useEffect","useEntityRecord","store","coreStore","Placeholder","Spinner","ToolbarButton","ToolbarGroup","__","useInnerBlocksProps","RecursionProvider","useHasRecursion","InnerBlocks","useBlockProps","Warning","privateApis","blockEditorPrivateApis","blockEditorStore","BlockControls","patternsPrivateApis","parse","cloneBlock","blocksStore","RichTextData","name","patternBlockName","unlock","useLayoutClasses","PARTIAL_SYNCING_SUPPORTED_BLOCKS","fullAlignments","getLegacyIdMap","blocks","content","nameCount","idToClientIdMap","block","innerBlocks","length","id","attributes","metadata","clientId","useInferredLayout","parentLayout","initialInferredAlignmentRef","alignment","current","undefined","isConstrained","type","hasFullAlignment","some","includes","align","layout","hasOverridableAttributes","Object","keys","bindings","values","binding","source","hasOverridableBlocks","getOverridableAttributes","entries","filter","map","attributeKey","applyInitialContentValuesToInnerBlocks","defaultValues","legacyIdMap","_legacyIdMap$block$cl","metadataName","newAttributes","_defaultValues$metada","contentValues","isAttributeEqual","attribute1","attribute2","toString","getContentValuesFromInnerBlocks","_legacyIdMap$block$cl2","assign","_content$metadataName","setBlockEditMode","setEditMode","mode","forEach","editMode","ReusableBlockEdit","ref","__unstableParentLayout","patternClientId","setAttributes","registry","hasAlreadyRendered","record","editedRecord","hasResolved","isMissing","initialContent","defaultContent","replaceInnerBlocks","__unstableMarkNextChangeAsNotPersistent","setBlockEditingMode","syncDerivedUpdates","userCanEdit","getBlockEditingMode","onNavigateToEntityRecord","editingMode","hasPatternOverridesSource","select","canUser","getBlocks","getSettings","_getBlockEditingMode","getBlockBindingsSource","canEdit","canOverrideBlocks","initialBlocks","_editedRecord$blocks$","originalEditingMode","batch","layoutClasses","blockProps","className","innerBlocksProps","templateLock","renderAppender","ButtonBlockAppender","prevBlocks","subscribe","handleEditOriginal","postId","postType","resetContent","children","createElement","uniqueId","onClick","disabled","__experimentalIsFocusable"],"sources":["@wordpress/block-library/src/block/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRegistry, useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, useMemo, useEffect } from '@wordpress/element';\nimport { useEntityRecord, store as coreStore } from '@wordpress/core-data';\nimport {\n\tPlaceholder,\n\tSpinner,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseInnerBlocksProps,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInnerBlocks,\n\tuseBlockProps,\n\tWarning,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { parse, cloneBlock, store as blocksStore } from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { name as patternBlockName } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { useLayoutClasses } = unlock( blockEditorPrivateApis );\nconst { PARTIAL_SYNCING_SUPPORTED_BLOCKS } = unlock( patternsPrivateApis );\n\nconst fullAlignments = [ 'full', 'wide', 'left', 'right' ];\n\nfunction getLegacyIdMap( blocks, content, nameCount = {} ) {\n\tlet idToClientIdMap = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block?.innerBlocks?.length ) {\n\t\t\tidToClientIdMap = {\n\t\t\t\t...idToClientIdMap,\n\t\t\t\t...getLegacyIdMap( block.innerBlocks, content, nameCount ),\n\t\t\t};\n\t\t}\n\n\t\tconst id = block.attributes.metadata?.id;\n\t\tconst clientId = block.clientId;\n\t\tif ( id && content?.[ id ] ) {\n\t\t\tidToClientIdMap[ clientId ] = id;\n\t\t}\n\t}\n\treturn idToClientIdMap;\n}\n\nconst useInferredLayout = ( blocks, parentLayout ) => {\n\tconst initialInferredAlignmentRef = useRef();\n\n\treturn useMemo( () => {\n\t\t// Exit early if the pattern's blocks haven't loaded yet.\n\t\tif ( ! blocks?.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet alignment = initialInferredAlignmentRef.current;\n\n\t\t// Only track the initial alignment so that temporarily removed\n\t\t// alignments can be reapplied.\n\t\tif ( alignment === undefined ) {\n\t\t\tconst isConstrained = parentLayout?.type === 'constrained';\n\t\t\tconst hasFullAlignment = blocks.some( ( block ) =>\n\t\t\t\tfullAlignments.includes( block.attributes.align )\n\t\t\t);\n\n\t\t\talignment = isConstrained && hasFullAlignment ? 'full' : null;\n\t\t\tinitialInferredAlignmentRef.current = alignment;\n\t\t}\n\n\t\tconst layout = alignment ? parentLayout : undefined;\n\n\t\treturn { alignment, layout };\n\t}, [ blocks, parentLayout ] );\n};\n\nfunction hasOverridableAttributes( block ) {\n\treturn (\n\t\tObject.keys( PARTIAL_SYNCING_SUPPORTED_BLOCKS ).includes(\n\t\t\tblock.name\n\t\t) &&\n\t\t!! block.attributes.metadata?.bindings &&\n\t\tObject.values( block.attributes.metadata.bindings ).some(\n\t\t\t( binding ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t);\n}\n\nfunction hasOverridableBlocks( blocks ) {\n\treturn blocks.some( ( block ) => {\n\t\tif ( hasOverridableAttributes( block ) ) return true;\n\t\treturn hasOverridableBlocks( block.innerBlocks );\n\t} );\n}\n\nfunction getOverridableAttributes( block ) {\n\treturn Object.entries( block.attributes.metadata.bindings )\n\t\t.filter(\n\t\t\t( [ , binding ] ) => binding.source === 'core/pattern-overrides'\n\t\t)\n\t\t.map( ( [ attributeKey ] ) => attributeKey );\n}\n\nfunction applyInitialContentValuesToInnerBlocks(\n\tblocks,\n\tcontent = {},\n\tdefaultValues,\n\tlegacyIdMap\n) {\n\treturn blocks.map( ( block ) => {\n\t\tconst innerBlocks = applyInitialContentValuesToInnerBlocks(\n\t\t\tblock.innerBlocks,\n\t\t\tcontent,\n\t\t\tdefaultValues,\n\t\t\tlegacyIdMap\n\t\t);\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\treturn { ...block, innerBlocks };\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\t\tconst newAttributes = { ...block.attributes };\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tdefaultValues[ metadataName ] ??= {};\n\t\t\tdefaultValues[ metadataName ][ attributeKey ] =\n\t\t\t\tblock.attributes[ attributeKey ];\n\n\t\t\tconst contentValues = content[ metadataName ];\n\t\t\tif ( contentValues?.[ attributeKey ] !== undefined ) {\n\t\t\t\tnewAttributes[ attributeKey ] = contentValues[ attributeKey ];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...block,\n\t\t\tattributes: newAttributes,\n\t\t\tinnerBlocks,\n\t\t};\n\t} );\n}\n\nfunction isAttributeEqual( attribute1, attribute2 ) {\n\tif (\n\t\tattribute1 instanceof RichTextData &&\n\t\tattribute2 instanceof RichTextData\n\t) {\n\t\treturn attribute1.toString() === attribute2.toString();\n\t}\n\treturn attribute1 === attribute2;\n}\n\nfunction getContentValuesFromInnerBlocks( blocks, defaultValues, legacyIdMap ) {\n\t/** @type {Record<string, { values: Record<string, unknown>}>} */\n\tconst content = {};\n\tfor ( const block of blocks ) {\n\t\tif ( block.name === patternBlockName ) continue;\n\t\tif ( block.innerBlocks.length ) {\n\t\t\tObject.assign(\n\t\t\t\tcontent,\n\t\t\t\tgetContentValuesFromInnerBlocks(\n\t\t\t\t\tblock.innerBlocks,\n\t\t\t\t\tdefaultValues,\n\t\t\t\t\tlegacyIdMap\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\tconst metadataName =\n\t\t\tlegacyIdMap?.[ block.clientId ] ?? block.attributes.metadata?.name;\n\t\tif ( ! metadataName || ! hasOverridableAttributes( block ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst attributes = getOverridableAttributes( block );\n\n\t\tfor ( const attributeKey of attributes ) {\n\t\t\tif (\n\t\t\t\t! isAttributeEqual(\n\t\t\t\t\tblock.attributes[ attributeKey ],\n\t\t\t\t\tdefaultValues?.[ metadataName ]?.[ attributeKey ]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcontent[ metadataName ] ??= {};\n\t\t\t\t// TODO: We need a way to represent `undefined` in the serialized overrides.\n\t\t\t\t// Also see: https://github.com/WordPress/gutenberg/pull/57249#discussion_r1452987871\n\t\t\t\tcontent[ metadataName ][ attributeKey ] =\n\t\t\t\t\tblock.attributes[ attributeKey ] === undefined\n\t\t\t\t\t\t? // TODO: We use an empty string to represent undefined for now until\n\t\t\t\t\t\t // we support a richer format for overrides and the block binding API.\n\t\t\t\t\t\t // Currently only the `linkTarget` attribute of `core/button` is affected.\n\t\t\t\t\t\t ''\n\t\t\t\t\t\t: block.attributes[ attributeKey ];\n\t\t\t}\n\t\t}\n\t}\n\treturn Object.keys( content ).length > 0 ? content : undefined;\n}\n\nfunction setBlockEditMode( setEditMode, blocks, mode ) {\n\tblocks.forEach( ( block ) => {\n\t\tconst editMode =\n\t\t\tmode ||\n\t\t\t( hasOverridableAttributes( block ) ? 'contentOnly' : 'disabled' );\n\t\tsetEditMode( block.clientId, editMode );\n\n\t\tsetBlockEditMode(\n\t\t\tsetEditMode,\n\t\t\tblock.innerBlocks,\n\t\t\t// Disable editing for nested patterns.\n\t\t\tblock.name === patternBlockName ? 'disabled' : mode\n\t\t);\n\t} );\n}\n\nexport default function ReusableBlockEdit( {\n\tname,\n\tattributes: { ref, content },\n\t__unstableParentLayout: parentLayout,\n\tclientId: patternClientId,\n\tsetAttributes,\n} ) {\n\tconst registry = useRegistry();\n\tconst hasAlreadyRendered = useHasRecursion( ref );\n\tconst { record, editedRecord, hasResolved } = useEntityRecord(\n\t\t'postType',\n\t\t'wp_block',\n\t\tref\n\t);\n\tconst isMissing = hasResolved && ! record;\n\n\t// The initial value of the `content` attribute.\n\tconst initialContent = useRef( content );\n\n\t// The default content values from the original pattern for overridable attributes.\n\t// Set by the `applyInitialContentValuesToInnerBlocks` function.\n\tconst defaultContent = useRef( {} );\n\n\tconst {\n\t\treplaceInnerBlocks,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tsetBlockEditingMode,\n\t} = useDispatch( blockEditorStore );\n\tconst { syncDerivedUpdates } = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tinnerBlocks,\n\t\tuserCanEdit,\n\t\tgetBlockEditingMode,\n\t\tonNavigateToEntityRecord,\n\t\teditingMode,\n\t\thasPatternOverridesSource,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canUser } = select( coreStore );\n\t\t\tconst {\n\t\t\t\tgetBlocks,\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst { getBlockBindingsSource } = unlock( select( blocksStore ) );\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tconst canEdit = canUser( 'update', 'blocks', ref );\n\n\t\t\t// For editing link to the site editor if the theme and user permissions support it.\n\t\t\treturn {\n\t\t\t\tinnerBlocks: blocks,\n\t\t\t\tuserCanEdit: canEdit,\n\t\t\t\tgetBlockEditingMode: _getBlockEditingMode,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\teditingMode: _getBlockEditingMode( patternClientId ),\n\t\t\t\thasPatternOverridesSource: !! getBlockBindingsSource(\n\t\t\t\t\t'core/pattern-overrides'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ patternClientId, ref ]\n\t);\n\n\t// Sync the editing mode of the pattern block with the inner blocks.\n\tuseEffect( () => {\n\t\tsetBlockEditMode(\n\t\t\tsetBlockEditingMode,\n\t\t\tinnerBlocks,\n\t\t\t// Disable editing if the pattern itself is disabled.\n\t\t\teditingMode === 'disabled' || ! hasPatternOverridesSource\n\t\t\t\t? 'disabled'\n\t\t\t\t: undefined\n\t\t);\n\t}, [\n\t\teditingMode,\n\t\tinnerBlocks,\n\t\tsetBlockEditingMode,\n\t\thasPatternOverridesSource,\n\t] );\n\n\tconst canOverrideBlocks = useMemo(\n\t\t() => hasPatternOverridesSource && hasOverridableBlocks( innerBlocks ),\n\t\t[ hasPatternOverridesSource, innerBlocks ]\n\t);\n\n\tconst initialBlocks = useMemo(\n\t\t() =>\n\t\t\t// Clone the blocks to generate new client IDs.\n\t\t\teditedRecord.blocks?.map( ( block ) => cloneBlock( block ) ) ??\n\t\t\t( editedRecord.content && typeof editedRecord.content !== 'function'\n\t\t\t\t? parse( editedRecord.content )\n\t\t\t\t: [] ),\n\t\t[ editedRecord.blocks, editedRecord.content ]\n\t);\n\n\tconst legacyIdMap = useRef( {} );\n\n\t// Apply the initial overrides from the pattern block to the inner blocks.\n\tuseEffect( () => {\n\t\t// Build a map of clientIds to the old nano id system to provide back compat.\n\t\tlegacyIdMap.current = getLegacyIdMap(\n\t\t\tinitialBlocks,\n\t\t\tinitialContent.current\n\t\t);\n\t\tdefaultContent.current = {};\n\t\tconst originalEditingMode = getBlockEditingMode( patternClientId );\n\t\t// Replace the contents of the blocks with the overrides.\n\t\tregistry.batch( () => {\n\t\t\tsetBlockEditingMode( patternClientId, 'default' );\n\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\tconst blocks = hasPatternOverridesSource\n\t\t\t\t\t? applyInitialContentValuesToInnerBlocks(\n\t\t\t\t\t\t\tinitialBlocks,\n\t\t\t\t\t\t\tinitialContent.current,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\n\t\t\t\t\t )\n\t\t\t\t\t: initialBlocks;\n\n\t\t\t\treplaceInnerBlocks( patternClientId, blocks );\n\t\t\t} );\n\t\t\tsetBlockEditingMode( patternClientId, originalEditingMode );\n\t\t} );\n\t}, [\n\t\thasPatternOverridesSource,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\tpatternClientId,\n\t\tinitialBlocks,\n\t\treplaceInnerBlocks,\n\t\tregistry,\n\t\tgetBlockEditingMode,\n\t\tsetBlockEditingMode,\n\t\tsyncDerivedUpdates,\n\t] );\n\n\tconst { alignment, layout } = useInferredLayout(\n\t\tinnerBlocks,\n\t\tparentLayout\n\t);\n\tconst layoutClasses = useLayoutClasses( { layout }, name );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames(\n\t\t\t'block-library-block__reusable-block-container',\n\t\t\tlayout && layoutClasses,\n\t\t\t{ [ `align${ alignment }` ]: alignment }\n\t\t),\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: 'all',\n\t\tlayout,\n\t\trenderAppender: innerBlocks?.length\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t} );\n\n\t// Sync the `content` attribute from the updated blocks to the pattern block.\n\t// `syncDerivedUpdates` is used here to avoid creating an additional undo level.\n\tuseEffect( () => {\n\t\tif ( ! hasPatternOverridesSource ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getBlocks } = registry.select( blockEditorStore );\n\t\tlet prevBlocks = getBlocks( patternClientId );\n\t\treturn registry.subscribe( () => {\n\t\t\tconst blocks = getBlocks( patternClientId );\n\t\t\tif ( blocks !== prevBlocks ) {\n\t\t\t\tprevBlocks = blocks;\n\t\t\t\tsyncDerivedUpdates( () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tcontent: getContentValuesFromInnerBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tdefaultContent.current,\n\t\t\t\t\t\t\tlegacyIdMap.current\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}, blockEditorStore );\n\t}, [\n\t\thasPatternOverridesSource,\n\t\tsyncDerivedUpdates,\n\t\tpatternClientId,\n\t\tregistry,\n\t\tsetAttributes,\n\t] );\n\n\tconst handleEditOriginal = () => {\n\t\tonNavigateToEntityRecord( {\n\t\t\tpostId: ref,\n\t\t\tpostType: 'wp_block',\n\t\t} );\n\t};\n\n\tconst resetContent = () => {\n\t\tif ( content ) {\n\t\t\treplaceInnerBlocks( patternClientId, initialBlocks );\n\t\t}\n\t};\n\n\tlet children = null;\n\n\tif ( hasAlreadyRendered ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( isMissing ) {\n\t\tchildren = (\n\t\t\t<Warning>\n\t\t\t\t{ __( 'Block has been deleted or is unavailable.' ) }\n\t\t\t</Warning>\n\t\t);\n\t}\n\n\tif ( ! hasResolved ) {\n\t\tchildren = (\n\t\t\t<Placeholder>\n\t\t\t\t<Spinner />\n\t\t\t</Placeholder>\n\t\t);\n\t}\n\n\treturn (\n\t\t<RecursionProvider uniqueId={ ref }>\n\t\t\t{ userCanEdit && onNavigateToEntityRecord && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton onClick={ handleEditOriginal }>\n\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ canOverrideBlocks && (\n\t\t\t\t<BlockControls>\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ resetContent }\n\t\t\t\t\t\t\tdisabled={ ! content }\n\t\t\t\t\t\t\t__experimentalIsFocusable\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\n\t\t\t{ children === null ? (\n\t\t\t\t<div { ...innerBlocksProps } />\n\t\t\t) : (\n\t\t\t\t<div { ...blockProps }>{ children }</div>\n\t\t\t) }\n\t\t</RecursionProvider>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,WAAW,EAAEC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACrE,SAASC,MAAM,EAAEC,OAAO,EAAEC,SAAS,QAAQ,oBAAoB;AAC/D,SAASC,eAAe,EAAEC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AAC1E,SACCC,WAAW,EACXC,OAAO,EACPC,aAAa,EACbC,YAAY,QACN,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SACCC,mBAAmB,EACnBC,iBAAiB,EACjBC,eAAe,EACfC,WAAW,EACXC,aAAa,EACbC,OAAO,EACPC,WAAW,IAAIC,sBAAsB,EACrCd,KAAK,IAAIe,gBAAgB,EACzBC,aAAa,QACP,yBAAyB;AAChC,SAASH,WAAW,IAAII,mBAAmB,QAAQ,qBAAqB;AACxE,SAASC,KAAK,EAAEC,UAAU,EAAEnB,KAAK,IAAIoB,WAAW,QAAQ,mBAAmB;AAC3E,SAASC,YAAY,QAAQ,sBAAsB;;AAEnD;AACA;AACA;AACA,SAASC,IAAI,IAAIC,gBAAgB,QAAQ,SAAS;AAClD,SAASC,MAAM,QAAQ,gBAAgB;AAEvC,MAAM;EAAEC;AAAiB,CAAC,GAAGD,MAAM,CAAEV,sBAAuB,CAAC;AAC7D,MAAM;EAAEY;AAAiC,CAAC,GAAGF,MAAM,CAAEP,mBAAoB,CAAC;AAE1E,MAAMU,cAAc,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAE;AAE1D,SAASC,cAAcA,CAAEC,MAAM,EAAEC,OAAO,EAAEC,SAAS,GAAG,CAAC,CAAC,EAAG;EAC1D,IAAIC,eAAe,GAAG,CAAC,CAAC;EACxB,KAAM,MAAMC,KAAK,IAAIJ,MAAM,EAAG;IAC7B,IAAKI,KAAK,EAAEC,WAAW,EAAEC,MAAM,EAAG;MACjCH,eAAe,GAAG;QACjB,GAAGA,eAAe;QAClB,GAAGJ,cAAc,CAAEK,KAAK,CAACC,WAAW,EAAEJ,OAAO,EAAEC,SAAU;MAC1D,CAAC;IACF;IAEA,MAAMK,EAAE,GAAGH,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEF,EAAE;IACxC,MAAMG,QAAQ,GAAGN,KAAK,CAACM,QAAQ;IAC/B,IAAKH,EAAE,IAAIN,OAAO,GAAIM,EAAE,CAAE,EAAG;MAC5BJ,eAAe,CAAEO,QAAQ,CAAE,GAAGH,EAAE;IACjC;EACD;EACA,OAAOJ,eAAe;AACvB;AAEA,MAAMQ,iBAAiB,GAAGA,CAAEX,MAAM,EAAEY,YAAY,KAAM;EACrD,MAAMC,2BAA2B,GAAG9C,MAAM,CAAC,CAAC;EAE5C,OAAOC,OAAO,CAAE,MAAM;IACrB;IACA,IAAK,CAAEgC,MAAM,EAAEM,MAAM,EAAG;MACvB,OAAO,CAAC,CAAC;IACV;IAEA,IAAIQ,SAAS,GAAGD,2BAA2B,CAACE,OAAO;;IAEnD;IACA;IACA,IAAKD,SAAS,KAAKE,SAAS,EAAG;MAC9B,MAAMC,aAAa,GAAGL,YAAY,EAAEM,IAAI,KAAK,aAAa;MAC1D,MAAMC,gBAAgB,GAAGnB,MAAM,CAACoB,IAAI,CAAIhB,KAAK,IAC5CN,cAAc,CAACuB,QAAQ,CAAEjB,KAAK,CAACI,UAAU,CAACc,KAAM,CACjD,CAAC;MAEDR,SAAS,GAAGG,aAAa,IAAIE,gBAAgB,GAAG,MAAM,GAAG,IAAI;MAC7DN,2BAA2B,CAACE,OAAO,GAAGD,SAAS;IAChD;IAEA,MAAMS,MAAM,GAAGT,SAAS,GAAGF,YAAY,GAAGI,SAAS;IAEnD,OAAO;MAAEF,SAAS;MAAES;IAAO,CAAC;EAC7B,CAAC,EAAE,CAAEvB,MAAM,EAAEY,YAAY,CAAG,CAAC;AAC9B,CAAC;AAED,SAASY,wBAAwBA,CAAEpB,KAAK,EAAG;EAC1C,OACCqB,MAAM,CAACC,IAAI,CAAE7B,gCAAiC,CAAC,CAACwB,QAAQ,CACvDjB,KAAK,CAACX,IACP,CAAC,IACD,CAAC,CAAEW,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEkB,QAAQ,IACtCF,MAAM,CAACG,MAAM,CAAExB,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACkB,QAAS,CAAC,CAACP,IAAI,CACrDS,OAAO,IAAMA,OAAO,CAACC,MAAM,KAAK,wBACnC,CAAC;AAEH;AAEA,SAASC,oBAAoBA,CAAE/B,MAAM,EAAG;EACvC,OAAOA,MAAM,CAACoB,IAAI,CAAIhB,KAAK,IAAM;IAChC,IAAKoB,wBAAwB,CAAEpB,KAAM,CAAC,EAAG,OAAO,IAAI;IACpD,OAAO2B,oBAAoB,CAAE3B,KAAK,CAACC,WAAY,CAAC;EACjD,CAAE,CAAC;AACJ;AAEA,SAAS2B,wBAAwBA,CAAE5B,KAAK,EAAG;EAC1C,OAAOqB,MAAM,CAACQ,OAAO,CAAE7B,KAAK,CAACI,UAAU,CAACC,QAAQ,CAACkB,QAAS,CAAC,CACzDO,MAAM,CACN,CAAE,GAAIL,OAAO,CAAE,KAAMA,OAAO,CAACC,MAAM,KAAK,wBACzC,CAAC,CACAK,GAAG,CAAE,CAAE,CAAEC,YAAY,CAAE,KAAMA,YAAa,CAAC;AAC9C;AAEA,SAASC,sCAAsCA,CAC9CrC,MAAM,EACNC,OAAO,GAAG,CAAC,CAAC,EACZqC,aAAa,EACbC,WAAW,EACV;EACD,OAAOvC,MAAM,CAACmC,GAAG,CAAI/B,KAAK,IAAM;IAAA,IAAAoC,qBAAA;IAC/B,MAAMnC,WAAW,GAAGgC,sCAAsC,CACzDjC,KAAK,CAACC,WAAW,EACjBJ,OAAO,EACPqC,aAAa,EACbC,WACD,CAAC;IACD,MAAME,YAAY,IAAAD,qBAAA,GACjBD,WAAW,GAAInC,KAAK,CAACM,QAAQ,CAAE,cAAA8B,qBAAA,cAAAA,qBAAA,GAAIpC,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEhB,IAAI;IAEnE,IAAK,CAAEgD,YAAY,IAAI,CAAEjB,wBAAwB,CAAEpB,KAAM,CAAC,EAAG;MAC5D,OAAO;QAAE,GAAGA,KAAK;QAAEC;MAAY,CAAC;IACjC;IAEA,MAAMG,UAAU,GAAGwB,wBAAwB,CAAE5B,KAAM,CAAC;IACpD,MAAMsC,aAAa,GAAG;MAAE,GAAGtC,KAAK,CAACI;IAAW,CAAC;IAC7C,KAAM,MAAM4B,YAAY,IAAI5B,UAAU,EAAG;MAAA,IAAAmC,qBAAA;MACxC,CAAAA,qBAAA,GAAAL,aAAa,CAAEG,YAAY,CAAE,cAAAE,qBAAA,cAAAA,qBAAA,GAA7BL,aAAa,CAAEG,YAAY,CAAE,GAAK,CAAC,CAAC;MACpCH,aAAa,CAAEG,YAAY,CAAE,CAAEL,YAAY,CAAE,GAC5ChC,KAAK,CAACI,UAAU,CAAE4B,YAAY,CAAE;MAEjC,MAAMQ,aAAa,GAAG3C,OAAO,CAAEwC,YAAY,CAAE;MAC7C,IAAKG,aAAa,GAAIR,YAAY,CAAE,KAAKpB,SAAS,EAAG;QACpD0B,aAAa,CAAEN,YAAY,CAAE,GAAGQ,aAAa,CAAER,YAAY,CAAE;MAC9D;IACD;IACA,OAAO;MACN,GAAGhC,KAAK;MACRI,UAAU,EAAEkC,aAAa;MACzBrC;IACD,CAAC;EACF,CAAE,CAAC;AACJ;AAEA,SAASwC,gBAAgBA,CAAEC,UAAU,EAAEC,UAAU,EAAG;EACnD,IACCD,UAAU,YAAYtD,YAAY,IAClCuD,UAAU,YAAYvD,YAAY,EACjC;IACD,OAAOsD,UAAU,CAACE,QAAQ,CAAC,CAAC,KAAKD,UAAU,CAACC,QAAQ,CAAC,CAAC;EACvD;EACA,OAAOF,UAAU,KAAKC,UAAU;AACjC;AAEA,SAASE,+BAA+BA,CAAEjD,MAAM,EAAEsC,aAAa,EAAEC,WAAW,EAAG;EAC9E;EACA,MAAMtC,OAAO,GAAG,CAAC,CAAC;EAClB,KAAM,MAAMG,KAAK,IAAIJ,MAAM,EAAG;IAAA,IAAAkD,sBAAA;IAC7B,IAAK9C,KAAK,CAACX,IAAI,KAAKC,gBAAgB,EAAG;IACvC,IAAKU,KAAK,CAACC,WAAW,CAACC,MAAM,EAAG;MAC/BmB,MAAM,CAAC0B,MAAM,CACZlD,OAAO,EACPgD,+BAA+B,CAC9B7C,KAAK,CAACC,WAAW,EACjBiC,aAAa,EACbC,WACD,CACD,CAAC;IACF;IACA,MAAME,YAAY,IAAAS,sBAAA,GACjBX,WAAW,GAAInC,KAAK,CAACM,QAAQ,CAAE,cAAAwC,sBAAA,cAAAA,sBAAA,GAAI9C,KAAK,CAACI,UAAU,CAACC,QAAQ,EAAEhB,IAAI;IACnE,IAAK,CAAEgD,YAAY,IAAI,CAAEjB,wBAAwB,CAAEpB,KAAM,CAAC,EAAG;MAC5D;IACD;IAEA,MAAMI,UAAU,GAAGwB,wBAAwB,CAAE5B,KAAM,CAAC;IAEpD,KAAM,MAAMgC,YAAY,IAAI5B,UAAU,EAAG;MACxC,IACC,CAAEqC,gBAAgB,CACjBzC,KAAK,CAACI,UAAU,CAAE4B,YAAY,CAAE,EAChCE,aAAa,GAAIG,YAAY,CAAE,GAAIL,YAAY,CAChD,CAAC,EACA;QAAA,IAAAgB,qBAAA;QACD,CAAAA,qBAAA,GAAAnD,OAAO,CAAEwC,YAAY,CAAE,cAAAW,qBAAA,cAAAA,qBAAA,GAAvBnD,OAAO,CAAEwC,YAAY,CAAE,GAAK,CAAC,CAAC;QAC9B;QACA;QACAxC,OAAO,CAAEwC,YAAY,CAAE,CAAEL,YAAY,CAAE,GACtChC,KAAK,CAACI,UAAU,CAAE4B,YAAY,CAAE,KAAKpB,SAAS;QAC3C;QACA;QACA;QACA,EAAE,GACFZ,KAAK,CAACI,UAAU,CAAE4B,YAAY,CAAE;MACrC;IACD;EACD;EACA,OAAOX,MAAM,CAACC,IAAI,CAAEzB,OAAQ,CAAC,CAACK,MAAM,GAAG,CAAC,GAAGL,OAAO,GAAGe,SAAS;AAC/D;AAEA,SAASqC,gBAAgBA,CAAEC,WAAW,EAAEtD,MAAM,EAAEuD,IAAI,EAAG;EACtDvD,MAAM,CAACwD,OAAO,CAAIpD,KAAK,IAAM;IAC5B,MAAMqD,QAAQ,GACbF,IAAI,KACF/B,wBAAwB,CAAEpB,KAAM,CAAC,GAAG,aAAa,GAAG,UAAU,CAAE;IACnEkD,WAAW,CAAElD,KAAK,CAACM,QAAQ,EAAE+C,QAAS,CAAC;IAEvCJ,gBAAgB,CACfC,WAAW,EACXlD,KAAK,CAACC,WAAW;IACjB;IACAD,KAAK,CAACX,IAAI,KAAKC,gBAAgB,GAAG,UAAU,GAAG6D,IAChD,CAAC;EACF,CAAE,CAAC;AACJ;AAEA,eAAe,SAASG,iBAAiBA,CAAE;EAC1CjE,IAAI;EACJe,UAAU,EAAE;IAAEmD,GAAG;IAAE1D;EAAQ,CAAC;EAC5B2D,sBAAsB,EAAEhD,YAAY;EACpCF,QAAQ,EAAEmD,eAAe;EACzBC;AACD,CAAC,EAAG;EACH,MAAMC,QAAQ,GAAGnG,WAAW,CAAC,CAAC;EAC9B,MAAMoG,kBAAkB,GAAGpF,eAAe,CAAE+E,GAAI,CAAC;EACjD,MAAM;IAAEM,MAAM;IAAEC,YAAY;IAAEC;EAAY,CAAC,GAAGjG,eAAe,CAC5D,UAAU,EACV,UAAU,EACVyF,GACD,CAAC;EACD,MAAMS,SAAS,GAAGD,WAAW,IAAI,CAAEF,MAAM;;EAEzC;EACA,MAAMI,cAAc,GAAGtG,MAAM,CAAEkC,OAAQ,CAAC;;EAExC;EACA;EACA,MAAMqE,cAAc,GAAGvG,MAAM,CAAE,CAAC,CAAE,CAAC;EAEnC,MAAM;IACLwG,kBAAkB;IAClBC,uCAAuC;IACvCC;EACD,CAAC,GAAG3G,WAAW,CAAEoB,gBAAiB,CAAC;EACnC,MAAM;IAAEwF;EAAmB,CAAC,GAAG/E,MAAM,CAAE7B,WAAW,CAAEoB,gBAAiB,CAAE,CAAC;EAExE,MAAM;IACLmB,WAAW;IACXsE,WAAW;IACXC,mBAAmB;IACnBC,wBAAwB;IACxBC,WAAW;IACXC;EACD,CAAC,GAAGlH,SAAS,CACVmH,MAAM,IAAM;IACb,MAAM;MAAEC;IAAQ,CAAC,GAAGD,MAAM,CAAE5G,SAAU,CAAC;IACvC,MAAM;MACL8G,SAAS;MACTC,WAAW;MACXP,mBAAmB,EAAEQ;IACtB,CAAC,GAAGJ,MAAM,CAAE9F,gBAAiB,CAAC;IAC9B,MAAM;MAAEmG;IAAuB,CAAC,GAAG1F,MAAM,CAAEqF,MAAM,CAAEzF,WAAY,CAAE,CAAC;IAClE,MAAMS,MAAM,GAAGkF,SAAS,CAAErB,eAAgB,CAAC;IAC3C,MAAMyB,OAAO,GAAGL,OAAO,CAAE,QAAQ,EAAE,QAAQ,EAAEtB,GAAI,CAAC;;IAElD;IACA,OAAO;MACNtD,WAAW,EAAEL,MAAM;MACnB2E,WAAW,EAAEW,OAAO;MACpBV,mBAAmB,EAAEQ,oBAAoB;MACzCP,wBAAwB,EACvBM,WAAW,CAAC,CAAC,CAACN,wBAAwB;MACvCC,WAAW,EAAEM,oBAAoB,CAAEvB,eAAgB,CAAC;MACpDkB,yBAAyB,EAAE,CAAC,CAAEM,sBAAsB,CACnD,wBACD;IACD,CAAC;EACF,CAAC,EACD,CAAExB,eAAe,EAAEF,GAAG,CACvB,CAAC;;EAED;EACA1F,SAAS,CAAE,MAAM;IAChBoF,gBAAgB,CACfoB,mBAAmB,EACnBpE,WAAW;IACX;IACAyE,WAAW,KAAK,UAAU,IAAI,CAAEC,yBAAyB,GACtD,UAAU,GACV/D,SACJ,CAAC;EACF,CAAC,EAAE,CACF8D,WAAW,EACXzE,WAAW,EACXoE,mBAAmB,EACnBM,yBAAyB,CACxB,CAAC;EAEH,MAAMQ,iBAAiB,GAAGvH,OAAO,CAChC,MAAM+G,yBAAyB,IAAIhD,oBAAoB,CAAE1B,WAAY,CAAC,EACtE,CAAE0E,yBAAyB,EAAE1E,WAAW,CACzC,CAAC;EAED,MAAMmF,aAAa,GAAGxH,OAAO,CAC5B;IAAA,IAAAyH,qBAAA;IAAA,OACC;MAAA,CAAAA,qBAAA,GACAvB,YAAY,CAAClE,MAAM,EAAEmC,GAAG,CAAI/B,KAAK,IAAMd,UAAU,CAAEc,KAAM,CAAE,CAAC,cAAAqF,qBAAA,cAAAA,qBAAA,GAC1DvB,YAAY,CAACjE,OAAO,IAAI,OAAOiE,YAAY,CAACjE,OAAO,KAAK,UAAU,GACjEZ,KAAK,CAAE6E,YAAY,CAACjE,OAAQ,CAAC,GAC7B;IAAE;EAAA,CAAE,EACR,CAAEiE,YAAY,CAAClE,MAAM,EAAEkE,YAAY,CAACjE,OAAO,CAC5C,CAAC;EAED,MAAMsC,WAAW,GAAGxE,MAAM,CAAE,CAAC,CAAE,CAAC;;EAEhC;EACAE,SAAS,CAAE,MAAM;IAChB;IACAsE,WAAW,CAACxB,OAAO,GAAGhB,cAAc,CACnCyF,aAAa,EACbnB,cAAc,CAACtD,OAChB,CAAC;IACDuD,cAAc,CAACvD,OAAO,GAAG,CAAC,CAAC;IAC3B,MAAM2E,mBAAmB,GAAGd,mBAAmB,CAAEf,eAAgB,CAAC;IAClE;IACAE,QAAQ,CAAC4B,KAAK,CAAE,MAAM;MACrBlB,mBAAmB,CAAEZ,eAAe,EAAE,SAAU,CAAC;MACjDa,kBAAkB,CAAE,MAAM;QACzB,MAAM1E,MAAM,GAAG+E,yBAAyB,GACrC1C,sCAAsC,CACtCmD,aAAa,EACbnB,cAAc,CAACtD,OAAO,EACtBuD,cAAc,CAACvD,OAAO,EACtBwB,WAAW,CAACxB,OACZ,CAAC,GACDyE,aAAa;QAEhBjB,kBAAkB,CAAEV,eAAe,EAAE7D,MAAO,CAAC;MAC9C,CAAE,CAAC;MACHyE,mBAAmB,CAAEZ,eAAe,EAAE6B,mBAAoB,CAAC;IAC5D,CAAE,CAAC;EACJ,CAAC,EAAE,CACFX,yBAAyB,EACzBP,uCAAuC,EACvCX,eAAe,EACf2B,aAAa,EACbjB,kBAAkB,EAClBR,QAAQ,EACRa,mBAAmB,EACnBH,mBAAmB,EACnBC,kBAAkB,CACjB,CAAC;EAEH,MAAM;IAAE5D,SAAS;IAAES;EAAO,CAAC,GAAGZ,iBAAiB,CAC9CN,WAAW,EACXO,YACD,CAAC;EACD,MAAMgF,aAAa,GAAGhG,gBAAgB,CAAE;IAAE2B;EAAO,CAAC,EAAE9B,IAAK,CAAC;EAE1D,MAAMoG,UAAU,GAAG/G,aAAa,CAAE;IACjCgH,SAAS,EAAEnI,UAAU,CACpB,+CAA+C,EAC/C4D,MAAM,IAAIqE,aAAa,EACvB;MAAE,CAAG,QAAQ9E,SAAW,EAAC,GAAIA;IAAU,CACxC;EACD,CAAE,CAAC;EAEH,MAAMiF,gBAAgB,GAAGrH,mBAAmB,CAAEmH,UAAU,EAAE;IACzDG,YAAY,EAAE,KAAK;IACnBzE,MAAM;IACN0E,cAAc,EAAE5F,WAAW,EAAEC,MAAM,GAChCU,SAAS,GACTnC,WAAW,CAACqH;EAChB,CAAE,CAAC;;EAEH;EACA;EACAjI,SAAS,CAAE,MAAM;IAChB,IAAK,CAAE8G,yBAAyB,EAAG;MAClC;IACD;IACA,MAAM;MAAEG;IAAU,CAAC,GAAGnB,QAAQ,CAACiB,MAAM,CAAE9F,gBAAiB,CAAC;IACzD,IAAIiH,UAAU,GAAGjB,SAAS,CAAErB,eAAgB,CAAC;IAC7C,OAAOE,QAAQ,CAACqC,SAAS,CAAE,MAAM;MAChC,MAAMpG,MAAM,GAAGkF,SAAS,CAAErB,eAAgB,CAAC;MAC3C,IAAK7D,MAAM,KAAKmG,UAAU,EAAG;QAC5BA,UAAU,GAAGnG,MAAM;QACnB0E,kBAAkB,CAAE,MAAM;UACzBZ,aAAa,CAAE;YACd7D,OAAO,EAAEgD,+BAA+B,CACvCjD,MAAM,EACNsE,cAAc,CAACvD,OAAO,EACtBwB,WAAW,CAACxB,OACb;UACD,CAAE,CAAC;QACJ,CAAE,CAAC;MACJ;IACD,CAAC,EAAE7B,gBAAiB,CAAC;EACtB,CAAC,EAAE,CACF6F,yBAAyB,EACzBL,kBAAkB,EAClBb,eAAe,EACfE,QAAQ,EACRD,aAAa,CACZ,CAAC;EAEH,MAAMuC,kBAAkB,GAAGA,CAAA,KAAM;IAChCxB,wBAAwB,CAAE;MACzByB,MAAM,EAAE3C,GAAG;MACX4C,QAAQ,EAAE;IACX,CAAE,CAAC;EACJ,CAAC;EAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;IAC1B,IAAKvG,OAAO,EAAG;MACdsE,kBAAkB,CAAEV,eAAe,EAAE2B,aAAc,CAAC;IACrD;EACD,CAAC;EAED,IAAIiB,QAAQ,GAAG,IAAI;EAEnB,IAAKzC,kBAAkB,EAAG;IACzByC,QAAQ,GACPC,aAAA,CAAC3H,OAAO,QACLN,EAAE,CAAE,yCAA0C,CACxC,CACT;EACF;EAEA,IAAK2F,SAAS,EAAG;IAChBqC,QAAQ,GACPC,aAAA,CAAC3H,OAAO,QACLN,EAAE,CAAE,2CAA4C,CAC1C,CACT;EACF;EAEA,IAAK,CAAE0F,WAAW,EAAG;IACpBsC,QAAQ,GACPC,aAAA,CAACrI,WAAW,QACXqI,aAAA,CAACpI,OAAO,MAAE,CACE,CACb;EACF;EAEA,OACCoI,aAAA,CAAC/H,iBAAiB;IAACgI,QAAQ,EAAGhD;EAAK,GAChCgB,WAAW,IAAIE,wBAAwB,IACxC6B,aAAA,CAACvH,aAAa,QACbuH,aAAA,CAAClI,YAAY,QACZkI,aAAA,CAACnI,aAAa;IAACqI,OAAO,EAAGP;EAAoB,GAC1C5H,EAAE,CAAE,eAAgB,CACR,CACF,CACA,CACf,EAEC8G,iBAAiB,IAClBmB,aAAA,CAACvH,aAAa,QACbuH,aAAA,CAAClI,YAAY,QACZkI,aAAA,CAACnI,aAAa;IACbqI,OAAO,EAAGJ,YAAc;IACxBK,QAAQ,EAAG,CAAE5G,OAAS;IACtB6G,yBAAyB;EAAA,GAEvBrI,EAAE,CAAE,OAAQ,CACA,CACF,CACA,CACf,EAECgI,QAAQ,KAAK,IAAI,GAClBC,aAAA;IAAA,GAAUX;EAAgB,CAAI,CAAC,GAE/BW,aAAA;IAAA,GAAUb;EAAU,GAAKY,QAAe,CAEvB,CAAC;AAEtB"}
|
|
@@ -19,7 +19,9 @@ export default function save({
|
|
|
19
19
|
// prevent embedding in PHP. Ideally checks for the code block,
|
|
20
20
|
// or pre/code tags, should be made on the PHP side?
|
|
21
21
|
,
|
|
22
|
-
value: escape(attributes.content.
|
|
22
|
+
value: escape(typeof attributes.content === 'string' ? attributes.content : attributes.content.toHTMLString({
|
|
23
|
+
preserveWhiteSpace: true
|
|
24
|
+
}))
|
|
23
25
|
}));
|
|
24
26
|
}
|
|
25
27
|
//# sourceMappingURL=save.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RichText","useBlockProps","escape","save","attributes","createElement","Content","tagName","value","content","
|
|
1
|
+
{"version":3,"names":["RichText","useBlockProps","escape","save","attributes","createElement","Content","tagName","value","content","toHTMLString","preserveWhiteSpace"],"sources":["@wordpress/block-library/src/code/save.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RichText, useBlockProps } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { escape } from './utils';\n\nexport default function save( { attributes } ) {\n\treturn (\n\t\t<pre { ...useBlockProps.save() }>\n\t\t\t<RichText.Content\n\t\t\t\ttagName=\"code\"\n\t\t\t\t// To do: `escape` encodes characters in shortcodes and URLs to\n\t\t\t\t// prevent embedding in PHP. Ideally checks for the code block,\n\t\t\t\t// or pre/code tags, should be made on the PHP side?\n\t\t\t\tvalue={ escape(\n\t\t\t\t\ttypeof attributes.content === 'string'\n\t\t\t\t\t\t? attributes.content\n\t\t\t\t\t\t: attributes.content.toHTMLString( {\n\t\t\t\t\t\t\t\tpreserveWhiteSpace: true,\n\t\t\t\t\t\t } )\n\t\t\t\t) }\n\t\t\t/>\n\t\t</pre>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,EAAEC,aAAa,QAAQ,yBAAyB;;AAEjE;AACA;AACA;AACA,SAASC,MAAM,QAAQ,SAAS;AAEhC,eAAe,SAASC,IAAIA,CAAE;EAAEC;AAAW,CAAC,EAAG;EAC9C,OACCC,aAAA;IAAA,GAAUJ,aAAa,CAACE,IAAI,CAAC;EAAC,GAC7BE,aAAA,CAACL,QAAQ,CAACM,OAAO;IAChBC,OAAO,EAAC;IACR;IACA;IACA;IAAA;IACAC,KAAK,EAAGN,MAAM,CACb,OAAOE,UAAU,CAACK,OAAO,KAAK,QAAQ,GACnCL,UAAU,CAACK,OAAO,GAClBL,UAAU,CAACK,OAAO,CAACC,YAAY,CAAE;MACjCC,kBAAkB,EAAE;IACpB,CAAE,CACN;EAAG,CACH,CACG,CAAC;AAER"}
|
|
@@ -107,8 +107,8 @@ function Navigation({
|
|
|
107
107
|
isSuccess: createNavigationMenuIsSuccess,
|
|
108
108
|
isError: createNavigationMenuIsError
|
|
109
109
|
} = useCreateNavigationMenu(clientId);
|
|
110
|
-
const createUntitledEmptyNavigationMenu = () => {
|
|
111
|
-
createNavigationMenu('');
|
|
110
|
+
const createUntitledEmptyNavigationMenu = async () => {
|
|
111
|
+
await createNavigationMenu('');
|
|
112
112
|
};
|
|
113
113
|
const {
|
|
114
114
|
hasUncontrolledInnerBlocks,
|