@wordpress/block-editor 13.0.1 → 13.0.2
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/components/block-actions/index.js +4 -6
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-draggable/index.js +1 -1
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-list/block.js +2 -2
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +2 -2
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +3 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-lock/use-block-lock.js +2 -4
- package/build/components/block-lock/use-block-lock.js.map +1 -1
- package/build/components/block-mover/index.js +1 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +1 -1
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-switcher/block-variation-transformations.js +1 -3
- package/build/components/block-switcher/block-variation-transformations.js.map +1 -1
- package/build/components/block-switcher/index.js +13 -6
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +6 -10
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +2 -2
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/global-styles/hooks.js +1 -1
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +14 -1
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/list-view/block.js +7 -6
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +3 -1
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/use-clipboard-handler.js +1 -1
- package/build/components/list-view/use-clipboard-handler.js.map +1 -1
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js +4 -4
- package/build/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
- package/build/components/use-block-commands/index.js +3 -3
- package/build/components/use-block-commands/index.js.map +1 -1
- package/build/hooks/block-bindings.js +19 -16
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/block-style-variation.js +22 -4
- package/build/hooks/block-style-variation.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +7 -2
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/utils.js +3 -2
- package/build/hooks/utils.js.map +1 -1
- package/build/lock-unlock.js +1 -1
- package/build/lock-unlock.js.map +1 -1
- package/build/private-apis.js +3 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +20 -4
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +1 -2
- package/build/store/private-actions.js.map +1 -1
- package/build/store/selectors.js +17 -19
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-actions/index.js +4 -6
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +1 -1
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-list/block.js +2 -2
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +2 -2
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +3 -1
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-lock/use-block-lock.js +2 -4
- package/build-module/components/block-lock/use-block-lock.js.map +1 -1
- package/build-module/components/block-mover/index.js +1 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +1 -1
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-switcher/block-variation-transformations.js +1 -3
- package/build-module/components/block-switcher/block-variation-transformations.js.map +1 -1
- package/build-module/components/block-switcher/index.js +15 -8
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +7 -10
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +2 -2
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +1 -1
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +14 -1
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/list-view/block.js +7 -6
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +3 -1
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/use-clipboard-handler.js +1 -1
- package/build-module/components/list-view/use-clipboard-handler.js.map +1 -1
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js +4 -4
- package/build-module/components/spacing-sizes-control/hooks/use-spacing-sizes.js.map +1 -1
- package/build-module/components/use-block-commands/index.js +3 -3
- package/build-module/components/use-block-commands/index.js.map +1 -1
- package/build-module/hooks/block-bindings.js +20 -17
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/block-style-variation.js +21 -4
- package/build-module/hooks/block-style-variation.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +7 -2
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/utils.js +3 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/lock-unlock.js +1 -1
- package/build-module/lock-unlock.js.map +1 -1
- package/build-module/private-apis.js +3 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +20 -4
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +1 -2
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/selectors.js +17 -19
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +8 -17
- package/build-style/style.css +8 -17
- package/package.json +12 -12
- package/src/components/block-actions/index.js +3 -7
- package/src/components/block-draggable/index.js +1 -1
- package/src/components/block-list/block.js +2 -2
- package/src/components/block-list/block.native.js +2 -2
- package/src/components/block-list/use-in-between-inserter.js +3 -1
- package/src/components/block-lock/use-block-lock.js +2 -4
- package/src/components/block-mover/index.js +1 -1
- package/src/components/block-mover/index.native.js +1 -1
- package/src/components/block-settings-menu/block-settings-dropdown.js +1 -1
- package/src/components/block-switcher/block-variation-transformations.js +4 -9
- package/src/components/block-switcher/index.js +27 -12
- package/src/components/block-switcher/style.scss +5 -0
- package/src/components/block-toolbar/index.js +7 -9
- package/src/components/block-toolbar/style.scss +9 -6
- package/src/components/block-tools/block-selection-button.js +2 -2
- package/src/components/global-styles/hooks.js +1 -4
- package/src/components/global-styles/use-global-styles-output.js +24 -4
- package/src/components/list-view/block.js +7 -7
- package/src/components/list-view/branch.js +5 -1
- package/src/components/list-view/use-clipboard-handler.js +1 -6
- package/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js +2 -9
- package/src/components/use-block-commands/index.js +3 -4
- package/src/hooks/block-bindings.js +28 -22
- package/src/hooks/block-style-variation.js +21 -4
- package/src/hooks/use-bindings-attributes.js +11 -1
- package/src/hooks/utils.js +3 -1
- package/src/lock-unlock.js +1 -1
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +24 -10
- package/src/store/private-actions.js +1 -5
- package/src/store/selectors.js +19 -26
- package/src/style.scss +0 -1
- package/build/components/block-bindings-toolbar-indicator/index.js +0 -106
- package/build/components/block-bindings-toolbar-indicator/index.js.map +0 -1
- package/build-module/components/block-bindings-toolbar-indicator/index.js +0 -99
- package/build-module/components/block-bindings-toolbar-indicator/index.js.map +0 -1
- package/src/components/block-bindings-toolbar-indicator/index.js +0 -137
- package/src/components/block-bindings-toolbar-indicator/style.scss +0 -12
|
@@ -159,6 +159,12 @@ function ListViewBlock({
|
|
|
159
159
|
if (event.defaultPrevented) {
|
|
160
160
|
return;
|
|
161
161
|
}
|
|
162
|
+
|
|
163
|
+
// Do not handle events if it comes from modals;
|
|
164
|
+
// retain the default behavior for these keys.
|
|
165
|
+
if (event.target.closest('[role=dialog]')) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
162
168
|
const isDeleteKey = [_keycodes.BACKSPACE, _keycodes.DELETE].includes(event.keyCode);
|
|
163
169
|
|
|
164
170
|
// If multiple blocks are selected, deselect all blocks when the user
|
|
@@ -169,11 +175,6 @@ function ListViewBlock({
|
|
|
169
175
|
selectBlock(event, undefined);
|
|
170
176
|
} else if (isDeleteKey || isMatch('core/block-editor/remove', event)) {
|
|
171
177
|
var _getPreviousBlockClie;
|
|
172
|
-
// Do not handle single-key block deletion shortcuts when events come from modals;
|
|
173
|
-
// retain the default behavior for these keys.
|
|
174
|
-
if (isDeleteKey && event.target.closest('[role=dialog]')) {
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
178
|
const {
|
|
178
179
|
blocksToUpdate: blocksToDelete,
|
|
179
180
|
firstBlockClientId,
|
|
@@ -182,7 +183,7 @@ function ListViewBlock({
|
|
|
182
183
|
} = getBlocksToUpdate();
|
|
183
184
|
|
|
184
185
|
// Don't update the selection if the blocks cannot be deleted.
|
|
185
|
-
if (!canRemoveBlocks(blocksToDelete
|
|
186
|
+
if (!canRemoveBlocks(blocksToDelete)) {
|
|
186
187
|
return;
|
|
187
188
|
}
|
|
188
189
|
let blockToFocus = (_getPreviousBlockClie = getPreviousBlockClientId(firstBlockClientId)) !== null && _getPreviousBlockClie !== void 0 ? _getPreviousBlockClie :
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_blocks","_components","_compose","_icons","_element","_data","_i18n","_keycodes","_isShallowEqual","_keyboardShortcuts","_a11y","_leaf","_useListViewScrollIntoView","_button","_blockContents","_context","_utils","_store","_useBlockDisplayInformation","_blockLock","_ariaReferencedText","_lockUnlock","_jsxRuntime","ListViewBlock","block","clientId","displacement","isAfterDraggedBlocks","isDragged","isNesting","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","isSyncedBranch","cellRef","useRef","rowRef","settingsRef","isHovered","setIsHovered","useState","settingsAnchorRect","setSettingsAnchorRect","isLocked","canEdit","canMove","useBlockLock","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","duplicateBlocks","multiSelect","replaceBlocks","removeBlocks","insertAfterBlock","insertBeforeBlock","setOpenedBlockSettingsMenu","unlock","useDispatch","blockEditorStore","canInsertBlockType","getSelectedBlockClientIds","getPreviousBlockClientId","getBlockRootClientId","getBlockOrder","getBlockParents","getBlocksByClientId","canRemoveBlocks","isGroupable","useSelect","getGroupingBlockName","blocksStore","blockInformation","useBlockDisplayInformation","blockName","allowRightClickOverrides","select","getBlock","getBlockName","getSettings","showBlockActions","hasBlockSupport","instanceId","useInstanceId","descriptionId","expand","collapse","collapseAll","BlockSettingsMenu","listViewInstanceId","expandedState","setInsertedBlock","treeGridElementRef","rootClientId","useListViewContext","isMatch","useShortcutEventMatch","getBlocksToUpdate","selectedBlockClientIds","isUpdatingSelectedBlocks","includes","firstBlockClientId","firstBlockRootClientId","blocksToUpdate","onKeyDown","event","defaultPrevented","isDeleteKey","BACKSPACE","DELETE","keyCode","stopPropagation","preventDefault","undefined","_getPreviousBlockClie","target","closest","blocksToDelete","blockToFocus","shouldUpdateSelection","updateFocusAndSelection","canDuplicate","every","blockToUpdate","name","updatedBlocks","newlySelectedBlocks","at","blockClientIds","isShallowEqual","blockParents","blocks","groupingBlockName","newBlocks","switchToBlockType","speak","__","onMouseEnter","useCallback","onMouseLeave","selectEditorBlock","focusClientId","shouldSelectBlock","focusListItem","current","toggleExpanded","onContextMenu","click","window","DOMRect","clientX","clientY","onMouseDown","button","settingsPopoverAnchor","useMemo","ownerDocument","getBoundingClientRect","clearSettingsAnchorRect","useListViewScrollIntoView","rowItemRef","blockPositionDescription","getBlockPositionDescription","blockPropertiesDescription","getBlockPropertiesDescription","hasSiblings","hasRenderedMovers","moverCellClassName","clsx","listViewBlockSettingsClassName","colSpan","classes","isSynced","dropdownClientIds","currentlyEditingBlockInCanvas","jsxs","default","className","onFocus","onBlur","id","ref","children","jsx","__experimentalTreeGridCell","tabIndex","onClick","onToggleExpanded","ariaDescribedBy","Fragment","withoutGridItem","__experimentalTreeGridItem","BlockMoverUpButton","orientation","clientIds","BlockMoverDownButton","icon","moreVertical","label","popoverProps","anchor","toggleProps","disableOpenOnArrowDown","__experimentalSelectBlock","_default","exports","memo"],"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\thasBlockSupport,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tuseCallback,\n\tuseMemo,\n\tuseState,\n\tuseRef,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\nimport { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport useListViewScrollIntoView from './use-list-view-scroll-into-view';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport { useListViewContext } from './context';\nimport {\n\tgetBlockPositionDescription,\n\tgetBlockPropertiesDescription,\n\tfocusListItem,\n} from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\nimport AriaReferencedText from './aria-referenced-text';\nimport { unlock } from '../../lock-unlock';\n\nfunction ListViewBlock( {\n\tblock: { clientId },\n\tdisplacement,\n\tisAfterDraggedBlocks,\n\tisDragged,\n\tisNesting,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tisSyncedBranch,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst rowRef = useRef( null );\n\tconst settingsRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ settingsAnchorRect, setSettingsAnchorRect ] = useState();\n\n\tconst { isLocked, canEdit, canMove } = useBlockLock( clientId );\n\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst {\n\t\ttoggleBlockHighlight,\n\t\tduplicateBlocks,\n\t\tmultiSelect,\n\t\treplaceBlocks,\n\t\tremoveBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tsetOpenedBlockSettingsMenu,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetSelectedBlockClientIds,\n\t\tgetPreviousBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlockOrder,\n\t\tgetBlockParents,\n\t\tgetBlocksByClientId,\n\t\tcanRemoveBlocks,\n\t\tisGroupable,\n\t} = useSelect( blockEditorStore );\n\tconst { getGroupingBlockName } = useSelect( blocksStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\n\tconst { block, blockName, allowRightClickOverrides } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockName, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tblock: getBlock( clientId ),\n\t\t\t\tblockName: getBlockName( clientId ),\n\t\t\t\tallowRightClickOverrides:\n\t\t\t\t\tgetSettings().allowRightClickOverrides,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst showBlockActions =\n\t\t// When a block hides its toolbar it also hides the block settings menu,\n\t\t// since that menu is part of the toolbar in the editor canvas.\n\t\t// List View respects this by also hiding the block settings menu.\n\t\thasBlockSupport( blockName, '__experimentalToolbar', true );\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__description-${ instanceId }`;\n\n\tconst {\n\t\texpand,\n\t\tcollapse,\n\t\tcollapseAll,\n\t\tBlockSettingsMenu,\n\t\tlistViewInstanceId,\n\t\texpandedState,\n\t\tsetInsertedBlock,\n\t\ttreeGridElementRef,\n\t\trootClientId,\n\t} = useListViewContext();\n\tconst isMatch = useShortcutEventMatch();\n\n\t// Determine which blocks to update:\n\t// If the current (focused) block is part of the block selection, use the whole selection.\n\t// If the focused block is not part of the block selection, only update the focused block.\n\tfunction getBlocksToUpdate() {\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst isUpdatingSelectedBlocks =\n\t\t\tselectedBlockClientIds.includes( clientId );\n\t\tconst firstBlockClientId = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds[ 0 ]\n\t\t\t: clientId;\n\t\tconst firstBlockRootClientId =\n\t\t\tgetBlockRootClientId( firstBlockClientId );\n\n\t\tconst blocksToUpdate = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn {\n\t\t\tblocksToUpdate,\n\t\t\tfirstBlockClientId,\n\t\t\tfirstBlockRootClientId,\n\t\t\tselectedBlockClientIds,\n\t\t};\n\t}\n\n\t/**\n\t * @param {KeyboardEvent} event\n\t */\n\tasync function onKeyDown( event ) {\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isDeleteKey = [ BACKSPACE, DELETE ].includes( event.keyCode );\n\n\t\t// If multiple blocks are selected, deselect all blocks when the user\n\t\t// presses the escape key.\n\t\tif (\n\t\t\tisMatch( 'core/block-editor/unselect', event ) &&\n\t\t\tselectedClientIds.length > 0\n\t\t) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tselectBlock( event, undefined );\n\t\t} else if (\n\t\t\tisDeleteKey ||\n\t\t\tisMatch( 'core/block-editor/remove', event )\n\t\t) {\n\t\t\t// Do not handle single-key block deletion shortcuts when events come from modals;\n\t\t\t// retain the default behavior for these keys.\n\t\t\tif ( isDeleteKey && event.target.closest( '[role=dialog]' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tblocksToUpdate: blocksToDelete,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\tselectedBlockClientIds,\n\t\t\t} = getBlocksToUpdate();\n\n\t\t\t// Don't update the selection if the blocks cannot be deleted.\n\t\t\tif ( ! canRemoveBlocks( blocksToDelete, firstBlockRootClientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet blockToFocus =\n\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ) ??\n\t\t\t\t// If the previous block is not found (when the first block is deleted),\n\t\t\t\t// fallback to focus the parent block.\n\t\t\t\tfirstBlockRootClientId;\n\n\t\t\tremoveBlocks( blocksToDelete, false );\n\n\t\t\t// Update the selection if the original selection has been removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\tselectedBlockClientIds.length > 0 &&\n\t\t\t\tgetSelectedBlockClientIds().length === 0;\n\n\t\t\t// If there's no previous block nor parent block, focus the first block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\tupdateFocusAndSelection( blockToFocus, shouldUpdateSelection );\n\t\t} else if ( isMatch( 'core/block-editor/duplicate', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate, firstBlockRootClientId } =\n\t\t\t\tgetBlocksToUpdate();\n\n\t\t\tconst canDuplicate = getBlocksByClientId( blocksToUpdate ).every(\n\t\t\t\t( blockToUpdate ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! blockToUpdate &&\n\t\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\t\tblockToUpdate.name,\n\t\t\t\t\t\t\t'multiple',\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\tblockToUpdate.name,\n\t\t\t\t\t\t\tfirstBlockRootClientId\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( canDuplicate ) {\n\t\t\t\tconst updatedBlocks = await duplicateBlocks(\n\t\t\t\t\tblocksToUpdate,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\tif ( updatedBlocks?.length ) {\n\t\t\t\t\t// If blocks have been duplicated, focus the first duplicated block.\n\t\t\t\t\tupdateFocusAndSelection( updatedBlocks[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( isMatch( 'core/block-editor/insert-before', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate } = getBlocksToUpdate();\n\t\t\tawait insertBeforeBlock( blocksToUpdate[ 0 ] );\n\t\t\tconst newlySelectedBlocks = getSelectedBlockClientIds();\n\n\t\t\t// Focus the first block of the newly inserted blocks, to keep focus within the list view.\n\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\tupdateFocusAndSelection( newlySelectedBlocks[ 0 ], false );\n\t\t} else if ( isMatch( 'core/block-editor/insert-after', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate } = getBlocksToUpdate();\n\t\t\tawait insertAfterBlock( blocksToUpdate.at( -1 ) );\n\t\t\tconst newlySelectedBlocks = getSelectedBlockClientIds();\n\n\t\t\t// Focus the first block of the newly inserted blocks, to keep focus within the list view.\n\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\tupdateFocusAndSelection( newlySelectedBlocks[ 0 ], false );\n\t\t} else if ( isMatch( 'core/block-editor/select-all', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { firstBlockRootClientId, selectedBlockClientIds } =\n\t\t\t\tgetBlocksToUpdate();\n\t\t\tconst blockClientIds = getBlockOrder( firstBlockRootClientId );\n\t\t\tif ( ! blockClientIds.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If we have selected all sibling nested blocks, try selecting up a level.\n\t\t\t// This is a similar implementation to that used by `useSelectAll`.\n\t\t\t// `isShallowEqual` is used for the list view instead of a length check,\n\t\t\t// as the array of siblings of the currently focused block may be a different\n\t\t\t// set of blocks from the current block selection if the user is focused\n\t\t\t// on a different part of the list view from the block selection.\n\t\t\tif ( isShallowEqual( selectedBlockClientIds, blockClientIds ) ) {\n\t\t\t\t// Only select up a level if the first block is not the root block.\n\t\t\t\t// This ensures that the block selection can't break out of the root block\n\t\t\t\t// used by the list view, if the list view is only showing a partial hierarchy.\n\t\t\t\tif (\n\t\t\t\t\tfirstBlockRootClientId &&\n\t\t\t\t\tfirstBlockRootClientId !== rootClientId\n\t\t\t\t) {\n\t\t\t\t\tupdateFocusAndSelection( firstBlockRootClientId, true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Select all while passing `null` to skip focusing to the editor canvas,\n\t\t\t// and retain focus within the list view.\n\t\t\tmultiSelect(\n\t\t\t\tblockClientIds[ 0 ],\n\t\t\t\tblockClientIds[ blockClientIds.length - 1 ],\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if ( isMatch( 'core/block-editor/collapse-list-view', event ) ) {\n\t\t\tevent.preventDefault();\n\t\t\tconst { firstBlockClientId } = getBlocksToUpdate();\n\t\t\tconst blockParents = getBlockParents( firstBlockClientId, false );\n\t\t\t// Collapse all blocks.\n\t\t\tcollapseAll();\n\t\t\t// Expand all parents of the current block.\n\t\t\texpand( blockParents );\n\t\t} else if ( isMatch( 'core/block-editor/group', event ) ) {\n\t\t\tconst { blocksToUpdate } = getBlocksToUpdate();\n\t\t\tif ( blocksToUpdate.length > 1 && isGroupable( blocksToUpdate ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst blocks = getBlocksByClientId( blocksToUpdate );\n\t\t\t\tconst groupingBlockName = getGroupingBlockName();\n\t\t\t\tconst newBlocks = switchToBlockType(\n\t\t\t\t\tblocks,\n\t\t\t\t\tgroupingBlockName\n\t\t\t\t);\n\t\t\t\treplaceBlocks( blocksToUpdate, newBlocks );\n\t\t\t\tspeak( __( 'Selected blocks are grouped.' ) );\n\t\t\t\tconst newlySelectedBlocks = getSelectedBlockClientIds();\n\t\t\t\t// Focus the first block of the newly inserted blocks, to keep focus within the list view.\n\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\tupdateFocusAndSelection( newlySelectedBlocks[ 0 ], false );\n\t\t\t}\n\t\t}\n\t}\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\ttoggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\ttoggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateFocusAndSelection = useCallback(\n\t\t( focusClientId, shouldSelectBlock ) => {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, treeGridElementRef?.current );\n\t\t},\n\t\t[ selectBlock, treeGridElementRef ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\t// Allow right-clicking an item in the List View to open up the block settings dropdown.\n\tconst onContextMenu = useCallback(\n\t\t( event ) => {\n\t\t\tif ( showBlockActions && allowRightClickOverrides ) {\n\t\t\t\tsettingsRef.current?.click();\n\t\t\t\t// Ensure the position of the settings dropdown is at the cursor.\n\t\t\t\tsetSettingsAnchorRect(\n\t\t\t\t\tnew window.DOMRect( event.clientX, event.clientY, 0, 0 )\n\t\t\t\t);\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides, settingsRef, showBlockActions ]\n\t);\n\n\tconst onMouseDown = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent right-click from focusing the block,\n\t\t\t// because focus will be handled when opening the block settings dropdown.\n\t\t\tif ( allowRightClickOverrides && event.button === 2 ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides ]\n\t);\n\n\tconst settingsPopoverAnchor = useMemo( () => {\n\t\tconst { ownerDocument } = rowRef?.current || {};\n\n\t\t// If no custom position is set, the settings dropdown will be anchored to the\n\t\t// DropdownMenu toggle button.\n\t\tif ( ! settingsAnchorRect || ! ownerDocument ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Position the settings dropdown at the cursor when right-clicking a block.\n\t\treturn {\n\t\t\townerDocument,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\treturn settingsAnchorRect;\n\t\t\t},\n\t\t};\n\t}, [ settingsAnchorRect ] );\n\n\tconst clearSettingsAnchorRect = useCallback( () => {\n\t\t// Clear the custom position for the settings dropdown so that it is restored back\n\t\t// to being anchored to the DropdownMenu toggle button.\n\t\tsetSettingsAnchorRect( undefined );\n\t}, [ setSettingsAnchorRect ] );\n\n\t// Pass in a ref to the row, so that it can be scrolled\n\t// into view when selected. For long lists, the placeholder for the\n\t// selected block is also observed, within ListViewLeafPlaceholder.\n\tuseListViewScrollIntoView( {\n\t\tisSelected,\n\t\trowItemRef: rowRef,\n\t\tselectedClientIds,\n\t} );\n\n\t// When switching between rendering modes (such as template preview and content only),\n\t// it is possible for a block to temporarily be unavailable. In this case, we should not\n\t// render the leaf, to avoid errors further down the tree.\n\tif ( ! block ) {\n\t\treturn null;\n\t}\n\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tconst blockPropertiesDescription =\n\t\tgetBlockPropertiesDescription( isLocked );\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = clsx(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = clsx(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( ! showBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = clsx( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected': isBranchSelected,\n\t\t'is-synced-branch': isSyncedBranch,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': ! showBlockActions,\n\t\t'is-synced': blockInformation?.isSynced,\n\t\t'is-draggable': canMove,\n\t\t'is-displacement-normal': displacement === 'normal',\n\t\t'is-displacement-up': displacement === 'up',\n\t\t'is-displacement-down': displacement === 'down',\n\t\t'is-after-dragged-blocks': isAfterDraggedBlocks,\n\t\t'is-nesting': isNesting,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\t// Detect if there is a block in the canvas currently being edited and multi-selection is not happening.\n\tconst currentlyEditingBlockInCanvas =\n\t\tisSelected && selectedClientIds.length === 1;\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tisDragged={ isDragged }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-${ listViewInstanceId }-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tdata-expanded={ canEdit ? isExpanded : undefined }\n\t\t\tref={ rowRef }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={\n\t\t\t\t\t\t\t\tcurrentlyEditingBlockInCanvas ? 0 : tabIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ canEdit ? isExpanded : undefined }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tariaDescribedBy={ descriptionId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AriaReferencedText id={ descriptionId }>\n\t\t\t\t\t\t\t{ `${ blockPositionDescription } ${ blockPropertiesDescription }` }\n\t\t\t\t\t\t</AriaReferencedText>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && BlockSettingsMenu && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t\tref={ settingsRef }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsMenu\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\tanchor: settingsPopoverAnchor, // Used to position the settings at the cursor on right-click.\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonClick: clearSettingsAnchorRect,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\texpand={ expand }\n\t\t\t\t\t\t\texpandedState={ expandedState }\n\t\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t\t\t__experimentalSelectBlock={\n\t\t\t\t\t\t\t\tupdateFocusAndSelection\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</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,OAAA,GAAAD,OAAA;AAKA,IAAAE,WAAA,GAAAF,OAAA;AAIA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAOA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AACA,IAAAQ,SAAA,GAAAR,OAAA;AACA,IAAAS,eAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,kBAAA,GAAAV,OAAA;AACA,IAAAW,KAAA,GAAAX,OAAA;AAKA,IAAAY,KAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,0BAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,OAAA,GAAAd,OAAA;AAIA,IAAAe,cAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,QAAA,GAAAhB,OAAA;AACA,IAAAiB,MAAA,GAAAjB,OAAA;AAKA,IAAAkB,MAAA,GAAAlB,OAAA;AACA,IAAAmB,2BAAA,GAAApB,sBAAA,CAAAC,OAAA;AACA,IAAAoB,UAAA,GAAApB,OAAA;AACA,IAAAqB,mBAAA,GAAAtB,sBAAA,CAAAC,OAAA;AACA,IAAAsB,WAAA,GAAAtB,OAAA;AAA2C,IAAAuB,WAAA,GAAAvB,OAAA;AArD3C;AACA;AACA;;AAGA;AACA;AACA;;AA0BA;AACA;AACA;;AAoBA,SAASwB,aAAaA,CAAE;EACvBC,KAAK,EAAE;IAAEC;EAAS,CAAC;EACnBC,YAAY;EACZC,oBAAoB;EACpBC,SAAS;EACTC,SAAS;EACTC,UAAU;EACVC,gBAAgB;EAChBC,WAAW;EACXC,QAAQ;EACRC,KAAK;EACLC,QAAQ;EACRC,iBAAiB;EACjBC,eAAe;EACfC,IAAI;EACJC,UAAU;EACVC,iBAAiB;EACjBC;AACD,CAAC,EAAG;EACH,MAAMC,OAAO,GAAG,IAAAC,eAAM,EAAE,IAAK,CAAC;EAC9B,MAAMC,MAAM,GAAG,IAAAD,eAAM,EAAE,IAAK,CAAC;EAC7B,MAAME,WAAW,GAAG,IAAAF,eAAM,EAAE,IAAK,CAAC;EAClC,MAAM,CAAEG,SAAS,EAAEC,YAAY,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EACrD,MAAM,CAAEC,kBAAkB,EAAEC,qBAAqB,CAAE,GAAG,IAAAF,iBAAQ,EAAC,CAAC;EAEhE,MAAM;IAAEG,QAAQ;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAG,IAAAC,uBAAY,EAAE7B,QAAS,CAAC;EAE/D,MAAM8B,oBAAoB,GACzBzB,UAAU,IAAIU,iBAAiB,CAAE,CAAC,CAAE,KAAKf,QAAQ;EAClD,MAAM+B,mBAAmB,GACxB1B,UAAU,IACVU,iBAAiB,CAAEA,iBAAiB,CAACiB,MAAM,GAAG,CAAC,CAAE,KAAKhC,QAAQ;EAE/D,MAAM;IACLiC,oBAAoB;IACpBC,eAAe;IACfC,WAAW;IACXC,aAAa;IACbC,YAAY;IACZC,gBAAgB;IAChBC,iBAAiB;IACjBC;EACD,CAAC,GAAG,IAAAC,kBAAM,EAAE,IAAAC,iBAAW,EAAEC,YAAiB,CAAE,CAAC;EAE7C,MAAM;IACLC,kBAAkB;IAClBC,yBAAyB;IACzBC,wBAAwB;IACxBC,oBAAoB;IACpBC,aAAa;IACbC,eAAe;IACfC,mBAAmB;IACnBC,eAAe;IACfC;EACD,CAAC,GAAG,IAAAC,eAAS,EAAEV,YAAiB,CAAC;EACjC,MAAM;IAAEW;EAAqB,CAAC,GAAG,IAAAD,eAAS,EAAEE,aAAY,CAAC;EAEzD,MAAMC,gBAAgB,GAAG,IAAAC,mCAA0B,EAAEzD,QAAS,CAAC;EAE/D,MAAM;IAAED,KAAK;IAAE2D,SAAS;IAAEC;EAAyB,CAAC,GAAG,IAAAN,eAAS,EAC7DO,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,YAAY;MAAEC;IAAY,CAAC,GAC5CH,MAAM,CAAEjB,YAAiB,CAAC;IAE3B,OAAO;MACN5C,KAAK,EAAE8D,QAAQ,CAAE7D,QAAS,CAAC;MAC3B0D,SAAS,EAAEI,YAAY,CAAE9D,QAAS,CAAC;MACnC2D,wBAAwB,EACvBI,WAAW,CAAC,CAAC,CAACJ;IAChB,CAAC;EACF,CAAC,EACD,CAAE3D,QAAQ,CACX,CAAC;EAED,MAAMgE,gBAAgB;EACrB;EACA;EACA;EACA,IAAAC,uBAAe,EAAEP,SAAS,EAAE,uBAAuB,EAAE,IAAK,CAAC;EAC5D,MAAMQ,UAAU,GAAG,IAAAC,sBAAa,EAAErE,aAAc,CAAC;EACjD,MAAMsE,aAAa,GAAI,8CAA8CF,UAAY,EAAC;EAElF,MAAM;IACLG,MAAM;IACNC,QAAQ;IACRC,WAAW;IACXC,iBAAiB;IACjBC,kBAAkB;IAClBC,aAAa;IACbC,gBAAgB;IAChBC,kBAAkB;IAClBC;EACD,CAAC,GAAG,IAAAC,2BAAkB,EAAC,CAAC;EACxB,MAAMC,OAAO,GAAG,IAAAC,kDAAqB,EAAC,CAAC;;EAEvC;EACA;EACA;EACA,SAASC,iBAAiBA,CAAA,EAAG;IAC5B,MAAMC,sBAAsB,GAAGrC,yBAAyB,CAAC,CAAC;IAC1D,MAAMsC,wBAAwB,GAC7BD,sBAAsB,CAACE,QAAQ,CAAEpF,QAAS,CAAC;IAC5C,MAAMqF,kBAAkB,GAAGF,wBAAwB,GAChDD,sBAAsB,CAAE,CAAC,CAAE,GAC3BlF,QAAQ;IACX,MAAMsF,sBAAsB,GAC3BvC,oBAAoB,CAAEsC,kBAAmB,CAAC;IAE3C,MAAME,cAAc,GAAGJ,wBAAwB,GAC5CD,sBAAsB,GACtB,CAAElF,QAAQ,CAAE;IAEf,OAAO;MACNuF,cAAc;MACdF,kBAAkB;MAClBC,sBAAsB;MACtBJ;IACD,CAAC;EACF;;EAEA;AACD;AACA;EACC,eAAeM,SAASA,CAAEC,KAAK,EAAG;IACjC,IAAKA,KAAK,CAACC,gBAAgB,EAAG;MAC7B;IACD;IAEA,MAAMC,WAAW,GAAG,CAAEC,mBAAS,EAAEC,gBAAM,CAAE,CAACT,QAAQ,CAAEK,KAAK,CAACK,OAAQ,CAAC;;IAEnE;IACA;IACA,IACCf,OAAO,CAAE,4BAA4B,EAAEU,KAAM,CAAC,IAC9C1E,iBAAiB,CAACiB,MAAM,GAAG,CAAC,EAC3B;MACDyD,KAAK,CAACM,eAAe,CAAC,CAAC;MACvBN,KAAK,CAACO,cAAc,CAAC,CAAC;MACtBzF,WAAW,CAAEkF,KAAK,EAAEQ,SAAU,CAAC;IAChC,CAAC,MAAM,IACNN,WAAW,IACXZ,OAAO,CAAE,0BAA0B,EAAEU,KAAM,CAAC,EAC3C;MAAA,IAAAS,qBAAA;MACD;MACA;MACA,IAAKP,WAAW,IAAIF,KAAK,CAACU,MAAM,CAACC,OAAO,CAAE,eAAgB,CAAC,EAAG;QAC7D;MACD;MAEA,MAAM;QACLb,cAAc,EAAEc,cAAc;QAC9BhB,kBAAkB;QAClBC,sBAAsB;QACtBJ;MACD,CAAC,GAAGD,iBAAiB,CAAC,CAAC;;MAEvB;MACA,IAAK,CAAE9B,eAAe,CAAEkD,cAAc,EAAEf,sBAAuB,CAAC,EAAG;QAClE;MACD;MAEA,IAAIgB,YAAY,IAAAJ,qBAAA,GACfpD,wBAAwB,CAAEuC,kBAAmB,CAAC,cAAAa,qBAAA,cAAAA,qBAAA;MAC9C;MACA;MACAZ,sBAAsB;MAEvBjD,YAAY,CAAEgE,cAAc,EAAE,KAAM,CAAC;;MAErC;MACA,MAAME,qBAAqB,GAC1BrB,sBAAsB,CAAClD,MAAM,GAAG,CAAC,IACjCa,yBAAyB,CAAC,CAAC,CAACb,MAAM,KAAK,CAAC;;MAEzC;MACA,IAAK,CAAEsE,YAAY,EAAG;QACrBA,YAAY,GAAGtD,aAAa,CAAC,CAAC,CAAE,CAAC,CAAE;MACpC;MAEAwD,uBAAuB,CAAEF,YAAY,EAAEC,qBAAsB,CAAC;IAC/D,CAAC,MAAM,IAAKxB,OAAO,CAAE,6BAA6B,EAAEU,KAAM,CAAC,EAAG;MAC7DA,KAAK,CAACO,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAET,cAAc;QAAED;MAAuB,CAAC,GAC/CL,iBAAiB,CAAC,CAAC;MAEpB,MAAMwB,YAAY,GAAGvD,mBAAmB,CAAEqC,cAAe,CAAC,CAACmB,KAAK,CAC7DC,aAAa,IAAM;QACpB,OACC,CAAC,CAAEA,aAAa,IAChB,IAAA1C,uBAAe,EACd0C,aAAa,CAACC,IAAI,EAClB,UAAU,EACV,IACD,CAAC,IACDhE,kBAAkB,CACjB+D,aAAa,CAACC,IAAI,EAClBtB,sBACD,CAAC;MAEH,CACD,CAAC;MAED,IAAKmB,YAAY,EAAG;QACnB,MAAMI,aAAa,GAAG,MAAM3E,eAAe,CAC1CqD,cAAc,EACd,KACD,CAAC;QAED,IAAKsB,aAAa,EAAE7E,MAAM,EAAG;UAC5B;UACAwE,uBAAuB,CAAEK,aAAa,CAAE,CAAC,CAAE,EAAE,KAAM,CAAC;QACrD;MACD;IACD,CAAC,MAAM,IAAK9B,OAAO,CAAE,iCAAiC,EAAEU,KAAM,CAAC,EAAG;MACjEA,KAAK,CAACO,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAET;MAAe,CAAC,GAAGN,iBAAiB,CAAC,CAAC;MAC9C,MAAM1C,iBAAiB,CAAEgD,cAAc,CAAE,CAAC,CAAG,CAAC;MAC9C,MAAMuB,mBAAmB,GAAGjE,yBAAyB,CAAC,CAAC;;MAEvD;MACAL,0BAA0B,CAAEyD,SAAU,CAAC;MACvCO,uBAAuB,CAAEM,mBAAmB,CAAE,CAAC,CAAE,EAAE,KAAM,CAAC;IAC3D,CAAC,MAAM,IAAK/B,OAAO,CAAE,gCAAgC,EAAEU,KAAM,CAAC,EAAG;MAChEA,KAAK,CAACO,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAET;MAAe,CAAC,GAAGN,iBAAiB,CAAC,CAAC;MAC9C,MAAM3C,gBAAgB,CAAEiD,cAAc,CAACwB,EAAE,CAAE,CAAC,CAAE,CAAE,CAAC;MACjD,MAAMD,mBAAmB,GAAGjE,yBAAyB,CAAC,CAAC;;MAEvD;MACAL,0BAA0B,CAAEyD,SAAU,CAAC;MACvCO,uBAAuB,CAAEM,mBAAmB,CAAE,CAAC,CAAE,EAAE,KAAM,CAAC;IAC3D,CAAC,MAAM,IAAK/B,OAAO,CAAE,8BAA8B,EAAEU,KAAM,CAAC,EAAG;MAC9DA,KAAK,CAACO,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAEV,sBAAsB;QAAEJ;MAAuB,CAAC,GACvDD,iBAAiB,CAAC,CAAC;MACpB,MAAM+B,cAAc,GAAGhE,aAAa,CAAEsC,sBAAuB,CAAC;MAC9D,IAAK,CAAE0B,cAAc,CAAChF,MAAM,EAAG;QAC9B;MACD;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA,IAAK,IAAAiF,uBAAc,EAAE/B,sBAAsB,EAAE8B,cAAe,CAAC,EAAG;QAC/D;QACA;QACA;QACA,IACC1B,sBAAsB,IACtBA,sBAAsB,KAAKT,YAAY,EACtC;UACD2B,uBAAuB,CAAElB,sBAAsB,EAAE,IAAK,CAAC;UACvD;QACD;MACD;;MAEA;MACA;MACAnD,WAAW,CACV6E,cAAc,CAAE,CAAC,CAAE,EACnBA,cAAc,CAAEA,cAAc,CAAChF,MAAM,GAAG,CAAC,CAAE,EAC3C,IACD,CAAC;IACF,CAAC,MAAM,IAAK+C,OAAO,CAAE,sCAAsC,EAAEU,KAAM,CAAC,EAAG;MACtEA,KAAK,CAACO,cAAc,CAAC,CAAC;MACtB,MAAM;QAAEX;MAAmB,CAAC,GAAGJ,iBAAiB,CAAC,CAAC;MAClD,MAAMiC,YAAY,GAAGjE,eAAe,CAAEoC,kBAAkB,EAAE,KAAM,CAAC;MACjE;MACAd,WAAW,CAAC,CAAC;MACb;MACAF,MAAM,CAAE6C,YAAa,CAAC;IACvB,CAAC,MAAM,IAAKnC,OAAO,CAAE,yBAAyB,EAAEU,KAAM,CAAC,EAAG;MACzD,MAAM;QAAEF;MAAe,CAAC,GAAGN,iBAAiB,CAAC,CAAC;MAC9C,IAAKM,cAAc,CAACvD,MAAM,GAAG,CAAC,IAAIoB,WAAW,CAAEmC,cAAe,CAAC,EAAG;QACjEE,KAAK,CAACO,cAAc,CAAC,CAAC;QACtB,MAAMmB,MAAM,GAAGjE,mBAAmB,CAAEqC,cAAe,CAAC;QACpD,MAAM6B,iBAAiB,GAAG9D,oBAAoB,CAAC,CAAC;QAChD,MAAM+D,SAAS,GAAG,IAAAC,yBAAiB,EAClCH,MAAM,EACNC,iBACD,CAAC;QACDhF,aAAa,CAAEmD,cAAc,EAAE8B,SAAU,CAAC;QAC1C,IAAAE,WAAK,EAAE,IAAAC,QAAE,EAAE,8BAA+B,CAAE,CAAC;QAC7C,MAAMV,mBAAmB,GAAGjE,yBAAyB,CAAC,CAAC;QACvD;QACAL,0BAA0B,CAAEyD,SAAU,CAAC;QACvCO,uBAAuB,CAAEM,mBAAmB,CAAE,CAAC,CAAE,EAAE,KAAM,CAAC;MAC3D;IACD;EACD;EAEA,MAAMW,YAAY,GAAG,IAAAC,oBAAW,EAAE,MAAM;IACvCpG,YAAY,CAAE,IAAK,CAAC;IACpBW,oBAAoB,CAAEjC,QAAQ,EAAE,IAAK,CAAC;EACvC,CAAC,EAAE,CAAEA,QAAQ,EAAEsB,YAAY,EAAEW,oBAAoB,CAAG,CAAC;EACrD,MAAM0F,YAAY,GAAG,IAAAD,oBAAW,EAAE,MAAM;IACvCpG,YAAY,CAAE,KAAM,CAAC;IACrBW,oBAAoB,CAAEjC,QAAQ,EAAE,KAAM,CAAC;EACxC,CAAC,EAAE,CAAEA,QAAQ,EAAEsB,YAAY,EAAEW,oBAAoB,CAAG,CAAC;EAErD,MAAM2F,iBAAiB,GAAG,IAAAF,oBAAW,EAClCjC,KAAK,IAAM;IACZlF,WAAW,CAAEkF,KAAK,EAAEzF,QAAS,CAAC;IAC9ByF,KAAK,CAACO,cAAc,CAAC,CAAC;EACvB,CAAC,EACD,CAAEhG,QAAQ,EAAEO,WAAW,CACxB,CAAC;EAED,MAAMiG,uBAAuB,GAAG,IAAAkB,oBAAW,EAC1C,CAAEG,aAAa,EAAEC,iBAAiB,KAAM;IACvC,IAAKA,iBAAiB,EAAG;MACxBvH,WAAW,CAAE0F,SAAS,EAAE4B,aAAa,EAAE,IAAI,EAAE,IAAK,CAAC;IACpD;IAEA,IAAAE,oBAAa,EAAEF,aAAa,EAAEjD,kBAAkB,EAAEoD,OAAQ,CAAC;EAC5D,CAAC,EACD,CAAEzH,WAAW,EAAEqE,kBAAkB,CAClC,CAAC;EAED,MAAMqD,cAAc,GAAG,IAAAP,oBAAW,EAC/BjC,KAAK,IAAM;IACZ;IACAA,KAAK,CAACO,cAAc,CAAC,CAAC;IACtBP,KAAK,CAACM,eAAe,CAAC,CAAC;IACvB,IAAKjF,UAAU,KAAK,IAAI,EAAG;MAC1BwD,QAAQ,CAAEtE,QAAS,CAAC;IACrB,CAAC,MAAM,IAAKc,UAAU,KAAK,KAAK,EAAG;MAClCuD,MAAM,CAAErE,QAAS,CAAC;IACnB;EACD,CAAC,EACD,CAAEA,QAAQ,EAAEqE,MAAM,EAAEC,QAAQ,EAAExD,UAAU,CACzC,CAAC;;EAED;EACA,MAAMoH,aAAa,GAAG,IAAAR,oBAAW,EAC9BjC,KAAK,IAAM;IACZ,IAAKzB,gBAAgB,IAAIL,wBAAwB,EAAG;MACnDvC,WAAW,CAAC4G,OAAO,EAAEG,KAAK,CAAC,CAAC;MAC5B;MACA1G,qBAAqB,CACpB,IAAI2G,MAAM,CAACC,OAAO,CAAE5C,KAAK,CAAC6C,OAAO,EAAE7C,KAAK,CAAC8C,OAAO,EAAE,CAAC,EAAE,CAAE,CACxD,CAAC;MACD9C,KAAK,CAACO,cAAc,CAAC,CAAC;IACvB;EACD,CAAC,EACD,CAAErC,wBAAwB,EAAEvC,WAAW,EAAE4C,gBAAgB,CAC1D,CAAC;EAED,MAAMwE,WAAW,GAAG,IAAAd,oBAAW,EAC5BjC,KAAK,IAAM;IACZ;IACA;IACA,IAAK9B,wBAAwB,IAAI8B,KAAK,CAACgD,MAAM,KAAK,CAAC,EAAG;MACrDhD,KAAK,CAACO,cAAc,CAAC,CAAC;IACvB;EACD,CAAC,EACD,CAAErC,wBAAwB,CAC3B,CAAC;EAED,MAAM+E,qBAAqB,GAAG,IAAAC,gBAAO,EAAE,MAAM;IAC5C,MAAM;MAAEC;IAAc,CAAC,GAAGzH,MAAM,EAAE6G,OAAO,IAAI,CAAC,CAAC;;IAE/C;IACA;IACA,IAAK,CAAExG,kBAAkB,IAAI,CAAEoH,aAAa,EAAG;MAC9C,OAAO3C,SAAS;IACjB;;IAEA;IACA,OAAO;MACN2C,aAAa;MACbC,qBAAqBA,CAAA,EAAG;QACvB,OAAOrH,kBAAkB;MAC1B;IACD,CAAC;EACF,CAAC,EAAE,CAAEA,kBAAkB,CAAG,CAAC;EAE3B,MAAMsH,uBAAuB,GAAG,IAAApB,oBAAW,EAAE,MAAM;IAClD;IACA;IACAjG,qBAAqB,CAAEwE,SAAU,CAAC;EACnC,CAAC,EAAE,CAAExE,qBAAqB,CAAG,CAAC;;EAE9B;EACA;EACA;EACA,IAAAsH,kCAAyB,EAAE;IAC1B1I,UAAU;IACV2I,UAAU,EAAE7H,MAAM;IAClBJ;EACD,CAAE,CAAC;;EAEH;EACA;EACA;EACA,IAAK,CAAEhB,KAAK,EAAG;IACd,OAAO,IAAI;EACZ;EAEA,MAAMkJ,wBAAwB,GAAG,IAAAC,kCAA2B,EAC3D1I,QAAQ,EACRG,iBAAiB,EACjBF,KACD,CAAC;EAED,MAAM0I,0BAA0B,GAC/B,IAAAC,oCAA6B,EAAE1H,QAAS,CAAC;EAE1C,MAAM2H,WAAW,GAAG1I,iBAAiB,GAAG,CAAC;EACzC,MAAM2I,iBAAiB,GAAG1I,eAAe,IAAIyI,WAAW;EACxD,MAAME,kBAAkB,GAAG,IAAAC,aAAI,EAC9B,0CAA0C,EAC1C;IAAE,YAAY,EAAEnI,SAAS,IAAIhB;EAAW,CACzC,CAAC;EAED,MAAMoJ,8BAA8B,GAAG,IAAAD,aAAI,EAC1C,yCAAyC,EACzC;IAAE,YAAY,EAAEnI,SAAS,IAAIS;EAAqB,CACnD,CAAC;EAED,IAAI4H,OAAO;EACX,IAAKJ,iBAAiB,EAAG;IACxBI,OAAO,GAAG,CAAC;EACZ,CAAC,MAAM,IAAK,CAAE1F,gBAAgB,EAAG;IAChC0F,OAAO,GAAG,CAAC;EACZ;EAEA,MAAMC,OAAO,GAAG,IAAAH,aAAI,EAAE;IACrB,aAAa,EAAEnJ,UAAU;IACzB,mBAAmB,EAAEyB,oBAAoB;IACzC,kBAAkB,EAAEC,mBAAmB;IACvC,oBAAoB,EAAEzB,gBAAgB;IACtC,kBAAkB,EAAEU,cAAc;IAClC,aAAa,EAAEb,SAAS;IACxB,iBAAiB,EAAE,CAAE6D,gBAAgB;IACrC,WAAW,EAAER,gBAAgB,EAAEoG,QAAQ;IACvC,cAAc,EAAEhI,OAAO;IACvB,wBAAwB,EAAE3B,YAAY,KAAK,QAAQ;IACnD,oBAAoB,EAAEA,YAAY,KAAK,IAAI;IAC3C,sBAAsB,EAAEA,YAAY,KAAK,MAAM;IAC/C,yBAAyB,EAAEC,oBAAoB;IAC/C,YAAY,EAAEE;EACf,CAAE,CAAC;;EAEH;EACA;EACA;EACA;EACA,MAAMyJ,iBAAiB,GAAG9I,iBAAiB,CAACqE,QAAQ,CAAEpF,QAAS,CAAC,GAC7De,iBAAiB,GACjB,CAAEf,QAAQ,CAAE;;EAEf;EACA,MAAM8J,6BAA6B,GAClCzJ,UAAU,IAAIU,iBAAiB,CAACiB,MAAM,KAAK,CAAC;EAE7C,oBACC,IAAAnC,WAAA,CAAAkK,IAAA,EAAC7K,KAAA,CAAA8K,OAAY;IACZC,SAAS,EAAGN,OAAS;IACrBxJ,SAAS,EAAGA,SAAW;IACvBqF,SAAS,EAAGA,SAAW;IACvBiC,YAAY,EAAGA,YAAc;IAC7BE,YAAY,EAAGA,YAAc;IAC7BuC,OAAO,EAAGzC,YAAc;IACxB0C,MAAM,EAAGxC,YAAc;IACvBlH,KAAK,EAAGA,KAAO;IACfD,QAAQ,EAAGA,QAAU;IACrBE,QAAQ,EAAGA,QAAU;IACrBG,IAAI,EAAGA,IAAM;IACbuJ,EAAE,EAAI,aAAa3F,kBAAoB,UAAUzE,QAAU,EAAG;IAC9D,cAAaA,QAAU;IACvB,iBAAgB2B,OAAO,GAAGb,UAAU,GAAGmF,SAAW;IAClDoE,GAAG,EAAGlJ,MAAQ;IAAAmJ,QAAA,gBAEd,IAAAzK,WAAA,CAAA0K,GAAA,EAAC/L,WAAA,CAAAgM,0BAAY;MACZP,SAAS,EAAC,6CAA6C;MACvDP,OAAO,EAAGA,OAAS;MACnBW,GAAG,EAAGpJ,OAAS;MACf,iBAAgB,CAAC,CAAEZ,UAAY;MAAAiK,QAAA,EAE7BA,CAAE;QAAED,GAAG;QAAEI,QAAQ;QAAEP;MAAQ,CAAC,kBAC7B,IAAArK,WAAA,CAAAkK,IAAA;QAAKE,SAAS,EAAC,kDAAkD;QAAAK,QAAA,gBAChE,IAAAzK,WAAA,CAAA0K,GAAA,EAAClL,cAAA,CAAA2K,OAAqB;UACrBjK,KAAK,EAAGA,KAAO;UACf2K,OAAO,EAAG9C,iBAAmB;UAC7BM,aAAa,EAAGA,aAAe;UAC/BM,WAAW,EAAGA,WAAa;UAC3BmC,gBAAgB,EAAG1C,cAAgB;UACnC5H,UAAU,EAAGA,UAAY;UACzBG,QAAQ,EAAGA,QAAU;UACrBG,iBAAiB,EAAGA,iBAAmB;UACvCF,KAAK,EAAGA,KAAO;UACf4J,GAAG,EAAGA,GAAK;UACXI,QAAQ,EACPX,6BAA6B,GAAG,CAAC,GAAGW,QACpC;UACDP,OAAO,EAAGA,OAAS;UACnBpJ,UAAU,EAAGa,OAAO,GAAGb,UAAU,GAAGmF,SAAW;UAC/ClF,iBAAiB,EAAGA,iBAAmB;UACvC6J,eAAe,EAAGxG;QAAe,CACjC,CAAC,eACF,IAAAvE,WAAA,CAAA0K,GAAA,EAAC5K,mBAAA,CAAAqK,OAAkB;UAACI,EAAE,EAAGhG,aAAe;UAAAkG,QAAA,EACpC,GAAGrB,wBAA0B,IAAIE,0BAA4B;QAAC,CAC9C,CAAC;MAAA,CACjB;IACL,CACY,CAAC,EACbG,iBAAiB,iBAClB,IAAAzJ,WAAA,CAAA0K,GAAA,EAAA1K,WAAA,CAAAgL,QAAA;MAAAP,QAAA,eACC,IAAAzK,WAAA,CAAAkK,IAAA,EAACvL,WAAA,CAAAgM,0BAAY;QACZP,SAAS,EAAGV,kBAAoB;QAChCuB,eAAe;QAAAR,QAAA,gBAEf,IAAAzK,WAAA,CAAA0K,GAAA,EAAC/L,WAAA,CAAAuM,0BAAY;UAAAT,QAAA,EACVA,CAAE;YAAED,GAAG;YAAEI,QAAQ;YAAEP;UAAQ,CAAC,kBAC7B,IAAArK,WAAA,CAAA0K,GAAA,EAACnL,OAAA,CAAA4L,kBAAkB;YAClBC,WAAW,EAAC,UAAU;YACtBC,SAAS,EAAG,CAAElL,QAAQ,CAAI;YAC1BqK,GAAG,EAAGA,GAAK;YACXI,QAAQ,EAAGA,QAAU;YACrBP,OAAO,EAAGA;UAAS,CACnB;QACD,CACY,CAAC,eACf,IAAArK,WAAA,CAAA0K,GAAA,EAAC/L,WAAA,CAAAuM,0BAAY;UAAAT,QAAA,EACVA,CAAE;YAAED,GAAG;YAAEI,QAAQ;YAAEP;UAAQ,CAAC,kBAC7B,IAAArK,WAAA,CAAA0K,GAAA,EAACnL,OAAA,CAAA+L,oBAAoB;YACpBF,WAAW,EAAC,UAAU;YACtBC,SAAS,EAAG,CAAElL,QAAQ,CAAI;YAC1BqK,GAAG,EAAGA,GAAK;YACXI,QAAQ,EAAGA,QAAU;YACrBP,OAAO,EAAGA;UAAS,CACnB;QACD,CACY,CAAC;MAAA,CACF;IAAC,CACd,CACF,EAEClG,gBAAgB,IAAIQ,iBAAiB,iBACtC,IAAA3E,WAAA,CAAA0K,GAAA,EAAC/L,WAAA,CAAAgM,0BAAY;MACZP,SAAS,EAAGR,8BAAgC;MAC5C,iBAAgB,CAAC,CAAEpJ,UAAY;MAC/BgK,GAAG,EAAGjJ,WAAa;MAAAkJ,QAAA,EAEjBA,CAAE;QAAED,GAAG;QAAEI,QAAQ;QAAEP;MAAQ,CAAC,kBAC7B,IAAArK,WAAA,CAAA0K,GAAA,EAAC/F,iBAAiB;QACjB0G,SAAS,EAAGrB,iBAAmB;QAC/B9J,KAAK,EAAGA,KAAO;QACfqL,IAAI,EAAGC,mBAAc;QACrBC,KAAK,EAAG,IAAA9D,QAAE,EAAE,SAAU,CAAG;QACzB+D,YAAY,EAAG;UACdC,MAAM,EAAE9C,qBAAqB,CAAE;QAChC,CAAG;QACH+C,WAAW,EAAG;UACbpB,GAAG;UACHJ,SAAS,EAAE,oCAAoC;UAC/CQ,QAAQ;UACRC,OAAO,EAAE5B,uBAAuB;UAChCoB;QACD,CAAG;QACHwB,sBAAsB;QACtBrH,MAAM,EAAGA,MAAQ;QACjBK,aAAa,EAAGA,aAAe;QAC/BC,gBAAgB,EAAGA,gBAAkB;QACrCgH,yBAAyB,EACxBnF;MACA,CACD;IACD,CACY,CACd;EAAA,CACY,CAAC;AAEjB;AAAC,IAAAoF,QAAA,GAAAC,OAAA,CAAA7B,OAAA,GAEc,IAAA8B,aAAI,EAAEhM,aAAc,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_blocks","_components","_compose","_icons","_element","_data","_i18n","_keycodes","_isShallowEqual","_keyboardShortcuts","_a11y","_leaf","_useListViewScrollIntoView","_button","_blockContents","_context","_utils","_store","_useBlockDisplayInformation","_blockLock","_ariaReferencedText","_lockUnlock","_jsxRuntime","ListViewBlock","block","clientId","displacement","isAfterDraggedBlocks","isDragged","isNesting","isSelected","isBranchSelected","selectBlock","position","level","rowCount","siblingBlockCount","showBlockMovers","path","isExpanded","selectedClientIds","isSyncedBranch","cellRef","useRef","rowRef","settingsRef","isHovered","setIsHovered","useState","settingsAnchorRect","setSettingsAnchorRect","isLocked","canEdit","canMove","useBlockLock","isFirstSelectedBlock","isLastSelectedBlock","length","toggleBlockHighlight","duplicateBlocks","multiSelect","replaceBlocks","removeBlocks","insertAfterBlock","insertBeforeBlock","setOpenedBlockSettingsMenu","unlock","useDispatch","blockEditorStore","canInsertBlockType","getSelectedBlockClientIds","getPreviousBlockClientId","getBlockRootClientId","getBlockOrder","getBlockParents","getBlocksByClientId","canRemoveBlocks","isGroupable","useSelect","getGroupingBlockName","blocksStore","blockInformation","useBlockDisplayInformation","blockName","allowRightClickOverrides","select","getBlock","getBlockName","getSettings","showBlockActions","hasBlockSupport","instanceId","useInstanceId","descriptionId","expand","collapse","collapseAll","BlockSettingsMenu","listViewInstanceId","expandedState","setInsertedBlock","treeGridElementRef","rootClientId","useListViewContext","isMatch","useShortcutEventMatch","getBlocksToUpdate","selectedBlockClientIds","isUpdatingSelectedBlocks","includes","firstBlockClientId","firstBlockRootClientId","blocksToUpdate","onKeyDown","event","defaultPrevented","target","closest","isDeleteKey","BACKSPACE","DELETE","keyCode","stopPropagation","preventDefault","undefined","_getPreviousBlockClie","blocksToDelete","blockToFocus","shouldUpdateSelection","updateFocusAndSelection","canDuplicate","every","blockToUpdate","name","updatedBlocks","newlySelectedBlocks","at","blockClientIds","isShallowEqual","blockParents","blocks","groupingBlockName","newBlocks","switchToBlockType","speak","__","onMouseEnter","useCallback","onMouseLeave","selectEditorBlock","focusClientId","shouldSelectBlock","focusListItem","current","toggleExpanded","onContextMenu","click","window","DOMRect","clientX","clientY","onMouseDown","button","settingsPopoverAnchor","useMemo","ownerDocument","getBoundingClientRect","clearSettingsAnchorRect","useListViewScrollIntoView","rowItemRef","blockPositionDescription","getBlockPositionDescription","blockPropertiesDescription","getBlockPropertiesDescription","hasSiblings","hasRenderedMovers","moverCellClassName","clsx","listViewBlockSettingsClassName","colSpan","classes","isSynced","dropdownClientIds","currentlyEditingBlockInCanvas","jsxs","default","className","onFocus","onBlur","id","ref","children","jsx","__experimentalTreeGridCell","tabIndex","onClick","onToggleExpanded","ariaDescribedBy","Fragment","withoutGridItem","__experimentalTreeGridItem","BlockMoverUpButton","orientation","clientIds","BlockMoverDownButton","icon","moreVertical","label","popoverProps","anchor","toggleProps","disableOpenOnArrowDown","__experimentalSelectBlock","_default","exports","memo"],"sources":["@wordpress/block-editor/src/components/list-view/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\thasBlockSupport,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport {\n\t__experimentalTreeGridCell as TreeGridCell,\n\t__experimentalTreeGridItem as TreeGridItem,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { moreVertical } from '@wordpress/icons';\nimport {\n\tuseCallback,\n\tuseMemo,\n\tuseState,\n\tuseRef,\n\tmemo,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\nimport { __unstableUseShortcutEventMatch as useShortcutEventMatch } from '@wordpress/keyboard-shortcuts';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport ListViewLeaf from './leaf';\nimport useListViewScrollIntoView from './use-list-view-scroll-into-view';\nimport {\n\tBlockMoverUpButton,\n\tBlockMoverDownButton,\n} from '../block-mover/button';\nimport ListViewBlockContents from './block-contents';\nimport { useListViewContext } from './context';\nimport {\n\tgetBlockPositionDescription,\n\tgetBlockPropertiesDescription,\n\tfocusListItem,\n} from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { useBlockLock } from '../block-lock';\nimport AriaReferencedText from './aria-referenced-text';\nimport { unlock } from '../../lock-unlock';\n\nfunction ListViewBlock( {\n\tblock: { clientId },\n\tdisplacement,\n\tisAfterDraggedBlocks,\n\tisDragged,\n\tisNesting,\n\tisSelected,\n\tisBranchSelected,\n\tselectBlock,\n\tposition,\n\tlevel,\n\trowCount,\n\tsiblingBlockCount,\n\tshowBlockMovers,\n\tpath,\n\tisExpanded,\n\tselectedClientIds,\n\tisSyncedBranch,\n} ) {\n\tconst cellRef = useRef( null );\n\tconst rowRef = useRef( null );\n\tconst settingsRef = useRef( null );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\tconst [ settingsAnchorRect, setSettingsAnchorRect ] = useState();\n\n\tconst { isLocked, canEdit, canMove } = useBlockLock( clientId );\n\n\tconst isFirstSelectedBlock =\n\t\tisSelected && selectedClientIds[ 0 ] === clientId;\n\tconst isLastSelectedBlock =\n\t\tisSelected &&\n\t\tselectedClientIds[ selectedClientIds.length - 1 ] === clientId;\n\n\tconst {\n\t\ttoggleBlockHighlight,\n\t\tduplicateBlocks,\n\t\tmultiSelect,\n\t\treplaceBlocks,\n\t\tremoveBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tsetOpenedBlockSettingsMenu,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetSelectedBlockClientIds,\n\t\tgetPreviousBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlockOrder,\n\t\tgetBlockParents,\n\t\tgetBlocksByClientId,\n\t\tcanRemoveBlocks,\n\t\tisGroupable,\n\t} = useSelect( blockEditorStore );\n\tconst { getGroupingBlockName } = useSelect( blocksStore );\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\n\tconst { block, blockName, allowRightClickOverrides } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockName, getSettings } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\treturn {\n\t\t\t\tblock: getBlock( clientId ),\n\t\t\t\tblockName: getBlockName( clientId ),\n\t\t\t\tallowRightClickOverrides:\n\t\t\t\t\tgetSettings().allowRightClickOverrides,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst showBlockActions =\n\t\t// When a block hides its toolbar it also hides the block settings menu,\n\t\t// since that menu is part of the toolbar in the editor canvas.\n\t\t// List View respects this by also hiding the block settings menu.\n\t\thasBlockSupport( blockName, '__experimentalToolbar', true );\n\tconst instanceId = useInstanceId( ListViewBlock );\n\tconst descriptionId = `list-view-block-select-button__description-${ instanceId }`;\n\n\tconst {\n\t\texpand,\n\t\tcollapse,\n\t\tcollapseAll,\n\t\tBlockSettingsMenu,\n\t\tlistViewInstanceId,\n\t\texpandedState,\n\t\tsetInsertedBlock,\n\t\ttreeGridElementRef,\n\t\trootClientId,\n\t} = useListViewContext();\n\tconst isMatch = useShortcutEventMatch();\n\n\t// Determine which blocks to update:\n\t// If the current (focused) block is part of the block selection, use the whole selection.\n\t// If the focused block is not part of the block selection, only update the focused block.\n\tfunction getBlocksToUpdate() {\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst isUpdatingSelectedBlocks =\n\t\t\tselectedBlockClientIds.includes( clientId );\n\t\tconst firstBlockClientId = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds[ 0 ]\n\t\t\t: clientId;\n\t\tconst firstBlockRootClientId =\n\t\t\tgetBlockRootClientId( firstBlockClientId );\n\n\t\tconst blocksToUpdate = isUpdatingSelectedBlocks\n\t\t\t? selectedBlockClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn {\n\t\t\tblocksToUpdate,\n\t\t\tfirstBlockClientId,\n\t\t\tfirstBlockRootClientId,\n\t\t\tselectedBlockClientIds,\n\t\t};\n\t}\n\n\t/**\n\t * @param {KeyboardEvent} event\n\t */\n\tasync function onKeyDown( event ) {\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Do not handle events if it comes from modals;\n\t\t// retain the default behavior for these keys.\n\t\tif ( event.target.closest( '[role=dialog]' ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isDeleteKey = [ BACKSPACE, DELETE ].includes( event.keyCode );\n\n\t\t// If multiple blocks are selected, deselect all blocks when the user\n\t\t// presses the escape key.\n\t\tif (\n\t\t\tisMatch( 'core/block-editor/unselect', event ) &&\n\t\t\tselectedClientIds.length > 0\n\t\t) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tselectBlock( event, undefined );\n\t\t} else if (\n\t\t\tisDeleteKey ||\n\t\t\tisMatch( 'core/block-editor/remove', event )\n\t\t) {\n\t\t\tconst {\n\t\t\t\tblocksToUpdate: blocksToDelete,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\tselectedBlockClientIds,\n\t\t\t} = getBlocksToUpdate();\n\n\t\t\t// Don't update the selection if the blocks cannot be deleted.\n\t\t\tif ( ! canRemoveBlocks( blocksToDelete ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet blockToFocus =\n\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ) ??\n\t\t\t\t// If the previous block is not found (when the first block is deleted),\n\t\t\t\t// fallback to focus the parent block.\n\t\t\t\tfirstBlockRootClientId;\n\n\t\t\tremoveBlocks( blocksToDelete, false );\n\n\t\t\t// Update the selection if the original selection has been removed.\n\t\t\tconst shouldUpdateSelection =\n\t\t\t\tselectedBlockClientIds.length > 0 &&\n\t\t\t\tgetSelectedBlockClientIds().length === 0;\n\n\t\t\t// If there's no previous block nor parent block, focus the first block.\n\t\t\tif ( ! blockToFocus ) {\n\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t}\n\n\t\t\tupdateFocusAndSelection( blockToFocus, shouldUpdateSelection );\n\t\t} else if ( isMatch( 'core/block-editor/duplicate', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate, firstBlockRootClientId } =\n\t\t\t\tgetBlocksToUpdate();\n\n\t\t\tconst canDuplicate = getBlocksByClientId( blocksToUpdate ).every(\n\t\t\t\t( blockToUpdate ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t!! blockToUpdate &&\n\t\t\t\t\t\thasBlockSupport(\n\t\t\t\t\t\t\tblockToUpdate.name,\n\t\t\t\t\t\t\t'multiple',\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t) &&\n\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\tblockToUpdate.name,\n\t\t\t\t\t\t\tfirstBlockRootClientId\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif ( canDuplicate ) {\n\t\t\t\tconst updatedBlocks = await duplicateBlocks(\n\t\t\t\t\tblocksToUpdate,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\tif ( updatedBlocks?.length ) {\n\t\t\t\t\t// If blocks have been duplicated, focus the first duplicated block.\n\t\t\t\t\tupdateFocusAndSelection( updatedBlocks[ 0 ], false );\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ( isMatch( 'core/block-editor/insert-before', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate } = getBlocksToUpdate();\n\t\t\tawait insertBeforeBlock( blocksToUpdate[ 0 ] );\n\t\t\tconst newlySelectedBlocks = getSelectedBlockClientIds();\n\n\t\t\t// Focus the first block of the newly inserted blocks, to keep focus within the list view.\n\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\tupdateFocusAndSelection( newlySelectedBlocks[ 0 ], false );\n\t\t} else if ( isMatch( 'core/block-editor/insert-after', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate } = getBlocksToUpdate();\n\t\t\tawait insertAfterBlock( blocksToUpdate.at( -1 ) );\n\t\t\tconst newlySelectedBlocks = getSelectedBlockClientIds();\n\n\t\t\t// Focus the first block of the newly inserted blocks, to keep focus within the list view.\n\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\tupdateFocusAndSelection( newlySelectedBlocks[ 0 ], false );\n\t\t} else if ( isMatch( 'core/block-editor/select-all', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { firstBlockRootClientId, selectedBlockClientIds } =\n\t\t\t\tgetBlocksToUpdate();\n\t\t\tconst blockClientIds = getBlockOrder( firstBlockRootClientId );\n\t\t\tif ( ! blockClientIds.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If we have selected all sibling nested blocks, try selecting up a level.\n\t\t\t// This is a similar implementation to that used by `useSelectAll`.\n\t\t\t// `isShallowEqual` is used for the list view instead of a length check,\n\t\t\t// as the array of siblings of the currently focused block may be a different\n\t\t\t// set of blocks from the current block selection if the user is focused\n\t\t\t// on a different part of the list view from the block selection.\n\t\t\tif ( isShallowEqual( selectedBlockClientIds, blockClientIds ) ) {\n\t\t\t\t// Only select up a level if the first block is not the root block.\n\t\t\t\t// This ensures that the block selection can't break out of the root block\n\t\t\t\t// used by the list view, if the list view is only showing a partial hierarchy.\n\t\t\t\tif (\n\t\t\t\t\tfirstBlockRootClientId &&\n\t\t\t\t\tfirstBlockRootClientId !== rootClientId\n\t\t\t\t) {\n\t\t\t\t\tupdateFocusAndSelection( firstBlockRootClientId, true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Select all while passing `null` to skip focusing to the editor canvas,\n\t\t\t// and retain focus within the list view.\n\t\t\tmultiSelect(\n\t\t\t\tblockClientIds[ 0 ],\n\t\t\t\tblockClientIds[ blockClientIds.length - 1 ],\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if ( isMatch( 'core/block-editor/collapse-list-view', event ) ) {\n\t\t\tevent.preventDefault();\n\t\t\tconst { firstBlockClientId } = getBlocksToUpdate();\n\t\t\tconst blockParents = getBlockParents( firstBlockClientId, false );\n\t\t\t// Collapse all blocks.\n\t\t\tcollapseAll();\n\t\t\t// Expand all parents of the current block.\n\t\t\texpand( blockParents );\n\t\t} else if ( isMatch( 'core/block-editor/group', event ) ) {\n\t\t\tconst { blocksToUpdate } = getBlocksToUpdate();\n\t\t\tif ( blocksToUpdate.length > 1 && isGroupable( blocksToUpdate ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst blocks = getBlocksByClientId( blocksToUpdate );\n\t\t\t\tconst groupingBlockName = getGroupingBlockName();\n\t\t\t\tconst newBlocks = switchToBlockType(\n\t\t\t\t\tblocks,\n\t\t\t\t\tgroupingBlockName\n\t\t\t\t);\n\t\t\t\treplaceBlocks( blocksToUpdate, newBlocks );\n\t\t\t\tspeak( __( 'Selected blocks are grouped.' ) );\n\t\t\t\tconst newlySelectedBlocks = getSelectedBlockClientIds();\n\t\t\t\t// Focus the first block of the newly inserted blocks, to keep focus within the list view.\n\t\t\t\tsetOpenedBlockSettingsMenu( undefined );\n\t\t\t\tupdateFocusAndSelection( newlySelectedBlocks[ 0 ], false );\n\t\t\t}\n\t\t}\n\t}\n\n\tconst onMouseEnter = useCallback( () => {\n\t\tsetIsHovered( true );\n\t\ttoggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\ttoggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, toggleBlockHighlight ] );\n\n\tconst selectEditorBlock = useCallback(\n\t\t( event ) => {\n\t\t\tselectBlock( event, clientId );\n\t\t\tevent.preventDefault();\n\t\t},\n\t\t[ clientId, selectBlock ]\n\t);\n\n\tconst updateFocusAndSelection = useCallback(\n\t\t( focusClientId, shouldSelectBlock ) => {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, treeGridElementRef?.current );\n\t\t},\n\t\t[ selectBlock, treeGridElementRef ]\n\t);\n\n\tconst toggleExpanded = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent shift+click from opening link in a new window when toggling.\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tif ( isExpanded === true ) {\n\t\t\t\tcollapse( clientId );\n\t\t\t} else if ( isExpanded === false ) {\n\t\t\t\texpand( clientId );\n\t\t\t}\n\t\t},\n\t\t[ clientId, expand, collapse, isExpanded ]\n\t);\n\n\t// Allow right-clicking an item in the List View to open up the block settings dropdown.\n\tconst onContextMenu = useCallback(\n\t\t( event ) => {\n\t\t\tif ( showBlockActions && allowRightClickOverrides ) {\n\t\t\t\tsettingsRef.current?.click();\n\t\t\t\t// Ensure the position of the settings dropdown is at the cursor.\n\t\t\t\tsetSettingsAnchorRect(\n\t\t\t\t\tnew window.DOMRect( event.clientX, event.clientY, 0, 0 )\n\t\t\t\t);\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides, settingsRef, showBlockActions ]\n\t);\n\n\tconst onMouseDown = useCallback(\n\t\t( event ) => {\n\t\t\t// Prevent right-click from focusing the block,\n\t\t\t// because focus will be handled when opening the block settings dropdown.\n\t\t\tif ( allowRightClickOverrides && event.button === 2 ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[ allowRightClickOverrides ]\n\t);\n\n\tconst settingsPopoverAnchor = useMemo( () => {\n\t\tconst { ownerDocument } = rowRef?.current || {};\n\n\t\t// If no custom position is set, the settings dropdown will be anchored to the\n\t\t// DropdownMenu toggle button.\n\t\tif ( ! settingsAnchorRect || ! ownerDocument ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Position the settings dropdown at the cursor when right-clicking a block.\n\t\treturn {\n\t\t\townerDocument,\n\t\t\tgetBoundingClientRect() {\n\t\t\t\treturn settingsAnchorRect;\n\t\t\t},\n\t\t};\n\t}, [ settingsAnchorRect ] );\n\n\tconst clearSettingsAnchorRect = useCallback( () => {\n\t\t// Clear the custom position for the settings dropdown so that it is restored back\n\t\t// to being anchored to the DropdownMenu toggle button.\n\t\tsetSettingsAnchorRect( undefined );\n\t}, [ setSettingsAnchorRect ] );\n\n\t// Pass in a ref to the row, so that it can be scrolled\n\t// into view when selected. For long lists, the placeholder for the\n\t// selected block is also observed, within ListViewLeafPlaceholder.\n\tuseListViewScrollIntoView( {\n\t\tisSelected,\n\t\trowItemRef: rowRef,\n\t\tselectedClientIds,\n\t} );\n\n\t// When switching between rendering modes (such as template preview and content only),\n\t// it is possible for a block to temporarily be unavailable. In this case, we should not\n\t// render the leaf, to avoid errors further down the tree.\n\tif ( ! block ) {\n\t\treturn null;\n\t}\n\n\tconst blockPositionDescription = getBlockPositionDescription(\n\t\tposition,\n\t\tsiblingBlockCount,\n\t\tlevel\n\t);\n\n\tconst blockPropertiesDescription =\n\t\tgetBlockPropertiesDescription( isLocked );\n\n\tconst hasSiblings = siblingBlockCount > 0;\n\tconst hasRenderedMovers = showBlockMovers && hasSiblings;\n\tconst moverCellClassName = clsx(\n\t\t'block-editor-list-view-block__mover-cell',\n\t\t{ 'is-visible': isHovered || isSelected }\n\t);\n\n\tconst listViewBlockSettingsClassName = clsx(\n\t\t'block-editor-list-view-block__menu-cell',\n\t\t{ 'is-visible': isHovered || isFirstSelectedBlock }\n\t);\n\n\tlet colSpan;\n\tif ( hasRenderedMovers ) {\n\t\tcolSpan = 2;\n\t} else if ( ! showBlockActions ) {\n\t\tcolSpan = 3;\n\t}\n\n\tconst classes = clsx( {\n\t\t'is-selected': isSelected,\n\t\t'is-first-selected': isFirstSelectedBlock,\n\t\t'is-last-selected': isLastSelectedBlock,\n\t\t'is-branch-selected': isBranchSelected,\n\t\t'is-synced-branch': isSyncedBranch,\n\t\t'is-dragging': isDragged,\n\t\t'has-single-cell': ! showBlockActions,\n\t\t'is-synced': blockInformation?.isSynced,\n\t\t'is-draggable': canMove,\n\t\t'is-displacement-normal': displacement === 'normal',\n\t\t'is-displacement-up': displacement === 'up',\n\t\t'is-displacement-down': displacement === 'down',\n\t\t'is-after-dragged-blocks': isAfterDraggedBlocks,\n\t\t'is-nesting': isNesting,\n\t} );\n\n\t// Only include all selected blocks if the currently clicked on block\n\t// is one of the selected blocks. This ensures that if a user attempts\n\t// to alter a block that isn't part of the selection, they're still able\n\t// to do so.\n\tconst dropdownClientIds = selectedClientIds.includes( clientId )\n\t\t? selectedClientIds\n\t\t: [ clientId ];\n\n\t// Detect if there is a block in the canvas currently being edited and multi-selection is not happening.\n\tconst currentlyEditingBlockInCanvas =\n\t\tisSelected && selectedClientIds.length === 1;\n\n\treturn (\n\t\t<ListViewLeaf\n\t\t\tclassName={ classes }\n\t\t\tisDragged={ isDragged }\n\t\t\tonKeyDown={ onKeyDown }\n\t\t\tonMouseEnter={ onMouseEnter }\n\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\tonFocus={ onMouseEnter }\n\t\t\tonBlur={ onMouseLeave }\n\t\t\tlevel={ level }\n\t\t\tposition={ position }\n\t\t\trowCount={ rowCount }\n\t\t\tpath={ path }\n\t\t\tid={ `list-view-${ listViewInstanceId }-block-${ clientId }` }\n\t\t\tdata-block={ clientId }\n\t\t\tdata-expanded={ canEdit ? isExpanded : undefined }\n\t\t\tref={ rowRef }\n\t\t>\n\t\t\t<TreeGridCell\n\t\t\t\tclassName=\"block-editor-list-view-block__contents-cell\"\n\t\t\t\tcolSpan={ colSpan }\n\t\t\t\tref={ cellRef }\n\t\t\t\taria-selected={ !! isSelected }\n\t\t\t>\n\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t<div className=\"block-editor-list-view-block__contents-container\">\n\t\t\t\t\t\t<ListViewBlockContents\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ selectEditorBlock }\n\t\t\t\t\t\t\tonContextMenu={ onContextMenu }\n\t\t\t\t\t\t\tonMouseDown={ onMouseDown }\n\t\t\t\t\t\t\tonToggleExpanded={ toggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\ttabIndex={\n\t\t\t\t\t\t\t\tcurrentlyEditingBlockInCanvas ? 0 : tabIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\tisExpanded={ canEdit ? isExpanded : undefined }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tariaDescribedBy={ descriptionId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AriaReferencedText id={ descriptionId }>\n\t\t\t\t\t\t\t{ `${ blockPositionDescription } ${ blockPropertiesDescription }` }\n\t\t\t\t\t\t</AriaReferencedText>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</TreeGridCell>\n\t\t\t{ hasRenderedMovers && (\n\t\t\t\t<>\n\t\t\t\t\t<TreeGridCell\n\t\t\t\t\t\tclassName={ moverCellClassName }\n\t\t\t\t\t\twithoutGridItem\n\t\t\t\t\t>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverUpButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t\t<TreeGridItem>\n\t\t\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t\t\t<BlockMoverDownButton\n\t\t\t\t\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\t\t\t\t\tclientIds={ [ clientId ] }\n\t\t\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridItem>\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</>\n\t\t\t) }\n\n\t\t\t{ showBlockActions && BlockSettingsMenu && (\n\t\t\t\t<TreeGridCell\n\t\t\t\t\tclassName={ listViewBlockSettingsClassName }\n\t\t\t\t\taria-selected={ !! isSelected }\n\t\t\t\t\tref={ settingsRef }\n\t\t\t\t>\n\t\t\t\t\t{ ( { ref, tabIndex, onFocus } ) => (\n\t\t\t\t\t\t<BlockSettingsMenu\n\t\t\t\t\t\t\tclientIds={ dropdownClientIds }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\tlabel={ __( 'Options' ) }\n\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\tanchor: settingsPopoverAnchor, // Used to position the settings at the cursor on right-click.\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\t\tref,\n\t\t\t\t\t\t\t\tclassName: 'block-editor-list-view-block__menu',\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\tonClick: clearSettingsAnchorRect,\n\t\t\t\t\t\t\t\tonFocus,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tdisableOpenOnArrowDown\n\t\t\t\t\t\t\texpand={ expand }\n\t\t\t\t\t\t\texpandedState={ expandedState }\n\t\t\t\t\t\t\tsetInsertedBlock={ setInsertedBlock }\n\t\t\t\t\t\t\t__experimentalSelectBlock={\n\t\t\t\t\t\t\t\tupdateFocusAndSelection\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</TreeGridCell>\n\t\t\t) }\n\t\t</ListViewLeaf>\n\t);\n}\n\nexport default memo( ListViewBlock );\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,OAAA,GAAAD,OAAA;AAKA,IAAAE,WAAA,GAAAF,OAAA;AAIA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAOA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AACA,IAAAQ,SAAA,GAAAR,OAAA;AACA,IAAAS,eAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,kBAAA,GAAAV,OAAA;AACA,IAAAW,KAAA,GAAAX,OAAA;AAKA,IAAAY,KAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,0BAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,OAAA,GAAAd,OAAA;AAIA,IAAAe,cAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,QAAA,GAAAhB,OAAA;AACA,IAAAiB,MAAA,GAAAjB,OAAA;AAKA,IAAAkB,MAAA,GAAAlB,OAAA;AACA,IAAAmB,2BAAA,GAAApB,sBAAA,CAAAC,OAAA;AACA,IAAAoB,UAAA,GAAApB,OAAA;AACA,IAAAqB,mBAAA,GAAAtB,sBAAA,CAAAC,OAAA;AACA,IAAAsB,WAAA,GAAAtB,OAAA;AAA2C,IAAAuB,WAAA,GAAAvB,OAAA;AArD3C;AACA;AACA;;AAGA;AACA;AACA;;AA0BA;AACA;AACA;;AAoBA,SAASwB,aAAaA,CAAE;EACvBC,KAAK,EAAE;IAAEC;EAAS,CAAC;EACnBC,YAAY;EACZC,oBAAoB;EACpBC,SAAS;EACTC,SAAS;EACTC,UAAU;EACVC,gBAAgB;EAChBC,WAAW;EACXC,QAAQ;EACRC,KAAK;EACLC,QAAQ;EACRC,iBAAiB;EACjBC,eAAe;EACfC,IAAI;EACJC,UAAU;EACVC,iBAAiB;EACjBC;AACD,CAAC,EAAG;EACH,MAAMC,OAAO,GAAG,IAAAC,eAAM,EAAE,IAAK,CAAC;EAC9B,MAAMC,MAAM,GAAG,IAAAD,eAAM,EAAE,IAAK,CAAC;EAC7B,MAAME,WAAW,GAAG,IAAAF,eAAM,EAAE,IAAK,CAAC;EAClC,MAAM,CAAEG,SAAS,EAAEC,YAAY,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EACrD,MAAM,CAAEC,kBAAkB,EAAEC,qBAAqB,CAAE,GAAG,IAAAF,iBAAQ,EAAC,CAAC;EAEhE,MAAM;IAAEG,QAAQ;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAG,IAAAC,uBAAY,EAAE7B,QAAS,CAAC;EAE/D,MAAM8B,oBAAoB,GACzBzB,UAAU,IAAIU,iBAAiB,CAAE,CAAC,CAAE,KAAKf,QAAQ;EAClD,MAAM+B,mBAAmB,GACxB1B,UAAU,IACVU,iBAAiB,CAAEA,iBAAiB,CAACiB,MAAM,GAAG,CAAC,CAAE,KAAKhC,QAAQ;EAE/D,MAAM;IACLiC,oBAAoB;IACpBC,eAAe;IACfC,WAAW;IACXC,aAAa;IACbC,YAAY;IACZC,gBAAgB;IAChBC,iBAAiB;IACjBC;EACD,CAAC,GAAG,IAAAC,kBAAM,EAAE,IAAAC,iBAAW,EAAEC,YAAiB,CAAE,CAAC;EAE7C,MAAM;IACLC,kBAAkB;IAClBC,yBAAyB;IACzBC,wBAAwB;IACxBC,oBAAoB;IACpBC,aAAa;IACbC,eAAe;IACfC,mBAAmB;IACnBC,eAAe;IACfC;EACD,CAAC,GAAG,IAAAC,eAAS,EAAEV,YAAiB,CAAC;EACjC,MAAM;IAAEW;EAAqB,CAAC,GAAG,IAAAD,eAAS,EAAEE,aAAY,CAAC;EAEzD,MAAMC,gBAAgB,GAAG,IAAAC,mCAA0B,EAAEzD,QAAS,CAAC;EAE/D,MAAM;IAAED,KAAK;IAAE2D,SAAS;IAAEC;EAAyB,CAAC,GAAG,IAAAN,eAAS,EAC7DO,MAAM,IAAM;IACb,MAAM;MAAEC,QAAQ;MAAEC,YAAY;MAAEC;IAAY,CAAC,GAC5CH,MAAM,CAAEjB,YAAiB,CAAC;IAE3B,OAAO;MACN5C,KAAK,EAAE8D,QAAQ,CAAE7D,QAAS,CAAC;MAC3B0D,SAAS,EAAEI,YAAY,CAAE9D,QAAS,CAAC;MACnC2D,wBAAwB,EACvBI,WAAW,CAAC,CAAC,CAACJ;IAChB,CAAC;EACF,CAAC,EACD,CAAE3D,QAAQ,CACX,CAAC;EAED,MAAMgE,gBAAgB;EACrB;EACA;EACA;EACA,IAAAC,uBAAe,EAAEP,SAAS,EAAE,uBAAuB,EAAE,IAAK,CAAC;EAC5D,MAAMQ,UAAU,GAAG,IAAAC,sBAAa,EAAErE,aAAc,CAAC;EACjD,MAAMsE,aAAa,GAAI,8CAA8CF,UAAY,EAAC;EAElF,MAAM;IACLG,MAAM;IACNC,QAAQ;IACRC,WAAW;IACXC,iBAAiB;IACjBC,kBAAkB;IAClBC,aAAa;IACbC,gBAAgB;IAChBC,kBAAkB;IAClBC;EACD,CAAC,GAAG,IAAAC,2BAAkB,EAAC,CAAC;EACxB,MAAMC,OAAO,GAAG,IAAAC,kDAAqB,EAAC,CAAC;;EAEvC;EACA;EACA;EACA,SAASC,iBAAiBA,CAAA,EAAG;IAC5B,MAAMC,sBAAsB,GAAGrC,yBAAyB,CAAC,CAAC;IAC1D,MAAMsC,wBAAwB,GAC7BD,sBAAsB,CAACE,QAAQ,CAAEpF,QAAS,CAAC;IAC5C,MAAMqF,kBAAkB,GAAGF,wBAAwB,GAChDD,sBAAsB,CAAE,CAAC,CAAE,GAC3BlF,QAAQ;IACX,MAAMsF,sBAAsB,GAC3BvC,oBAAoB,CAAEsC,kBAAmB,CAAC;IAE3C,MAAME,cAAc,GAAGJ,wBAAwB,GAC5CD,sBAAsB,GACtB,CAAElF,QAAQ,CAAE;IAEf,OAAO;MACNuF,cAAc;MACdF,kBAAkB;MAClBC,sBAAsB;MACtBJ;IACD,CAAC;EACF;;EAEA;AACD;AACA;EACC,eAAeM,SAASA,CAAEC,KAAK,EAAG;IACjC,IAAKA,KAAK,CAACC,gBAAgB,EAAG;MAC7B;IACD;;IAEA;IACA;IACA,IAAKD,KAAK,CAACE,MAAM,CAACC,OAAO,CAAE,eAAgB,CAAC,EAAG;MAC9C;IACD;IAEA,MAAMC,WAAW,GAAG,CAAEC,mBAAS,EAAEC,gBAAM,CAAE,CAACX,QAAQ,CAAEK,KAAK,CAACO,OAAQ,CAAC;;IAEnE;IACA;IACA,IACCjB,OAAO,CAAE,4BAA4B,EAAEU,KAAM,CAAC,IAC9C1E,iBAAiB,CAACiB,MAAM,GAAG,CAAC,EAC3B;MACDyD,KAAK,CAACQ,eAAe,CAAC,CAAC;MACvBR,KAAK,CAACS,cAAc,CAAC,CAAC;MACtB3F,WAAW,CAAEkF,KAAK,EAAEU,SAAU,CAAC;IAChC,CAAC,MAAM,IACNN,WAAW,IACXd,OAAO,CAAE,0BAA0B,EAAEU,KAAM,CAAC,EAC3C;MAAA,IAAAW,qBAAA;MACD,MAAM;QACLb,cAAc,EAAEc,cAAc;QAC9BhB,kBAAkB;QAClBC,sBAAsB;QACtBJ;MACD,CAAC,GAAGD,iBAAiB,CAAC,CAAC;;MAEvB;MACA,IAAK,CAAE9B,eAAe,CAAEkD,cAAe,CAAC,EAAG;QAC1C;MACD;MAEA,IAAIC,YAAY,IAAAF,qBAAA,GACftD,wBAAwB,CAAEuC,kBAAmB,CAAC,cAAAe,qBAAA,cAAAA,qBAAA;MAC9C;MACA;MACAd,sBAAsB;MAEvBjD,YAAY,CAAEgE,cAAc,EAAE,KAAM,CAAC;;MAErC;MACA,MAAME,qBAAqB,GAC1BrB,sBAAsB,CAAClD,MAAM,GAAG,CAAC,IACjCa,yBAAyB,CAAC,CAAC,CAACb,MAAM,KAAK,CAAC;;MAEzC;MACA,IAAK,CAAEsE,YAAY,EAAG;QACrBA,YAAY,GAAGtD,aAAa,CAAC,CAAC,CAAE,CAAC,CAAE;MACpC;MAEAwD,uBAAuB,CAAEF,YAAY,EAAEC,qBAAsB,CAAC;IAC/D,CAAC,MAAM,IAAKxB,OAAO,CAAE,6BAA6B,EAAEU,KAAM,CAAC,EAAG;MAC7DA,KAAK,CAACS,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAEX,cAAc;QAAED;MAAuB,CAAC,GAC/CL,iBAAiB,CAAC,CAAC;MAEpB,MAAMwB,YAAY,GAAGvD,mBAAmB,CAAEqC,cAAe,CAAC,CAACmB,KAAK,CAC7DC,aAAa,IAAM;QACpB,OACC,CAAC,CAAEA,aAAa,IAChB,IAAA1C,uBAAe,EACd0C,aAAa,CAACC,IAAI,EAClB,UAAU,EACV,IACD,CAAC,IACDhE,kBAAkB,CACjB+D,aAAa,CAACC,IAAI,EAClBtB,sBACD,CAAC;MAEH,CACD,CAAC;MAED,IAAKmB,YAAY,EAAG;QACnB,MAAMI,aAAa,GAAG,MAAM3E,eAAe,CAC1CqD,cAAc,EACd,KACD,CAAC;QAED,IAAKsB,aAAa,EAAE7E,MAAM,EAAG;UAC5B;UACAwE,uBAAuB,CAAEK,aAAa,CAAE,CAAC,CAAE,EAAE,KAAM,CAAC;QACrD;MACD;IACD,CAAC,MAAM,IAAK9B,OAAO,CAAE,iCAAiC,EAAEU,KAAM,CAAC,EAAG;MACjEA,KAAK,CAACS,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAEX;MAAe,CAAC,GAAGN,iBAAiB,CAAC,CAAC;MAC9C,MAAM1C,iBAAiB,CAAEgD,cAAc,CAAE,CAAC,CAAG,CAAC;MAC9C,MAAMuB,mBAAmB,GAAGjE,yBAAyB,CAAC,CAAC;;MAEvD;MACAL,0BAA0B,CAAE2D,SAAU,CAAC;MACvCK,uBAAuB,CAAEM,mBAAmB,CAAE,CAAC,CAAE,EAAE,KAAM,CAAC;IAC3D,CAAC,MAAM,IAAK/B,OAAO,CAAE,gCAAgC,EAAEU,KAAM,CAAC,EAAG;MAChEA,KAAK,CAACS,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAEX;MAAe,CAAC,GAAGN,iBAAiB,CAAC,CAAC;MAC9C,MAAM3C,gBAAgB,CAAEiD,cAAc,CAACwB,EAAE,CAAE,CAAC,CAAE,CAAE,CAAC;MACjD,MAAMD,mBAAmB,GAAGjE,yBAAyB,CAAC,CAAC;;MAEvD;MACAL,0BAA0B,CAAE2D,SAAU,CAAC;MACvCK,uBAAuB,CAAEM,mBAAmB,CAAE,CAAC,CAAE,EAAE,KAAM,CAAC;IAC3D,CAAC,MAAM,IAAK/B,OAAO,CAAE,8BAA8B,EAAEU,KAAM,CAAC,EAAG;MAC9DA,KAAK,CAACS,cAAc,CAAC,CAAC;MAEtB,MAAM;QAAEZ,sBAAsB;QAAEJ;MAAuB,CAAC,GACvDD,iBAAiB,CAAC,CAAC;MACpB,MAAM+B,cAAc,GAAGhE,aAAa,CAAEsC,sBAAuB,CAAC;MAC9D,IAAK,CAAE0B,cAAc,CAAChF,MAAM,EAAG;QAC9B;MACD;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA,IAAK,IAAAiF,uBAAc,EAAE/B,sBAAsB,EAAE8B,cAAe,CAAC,EAAG;QAC/D;QACA;QACA;QACA,IACC1B,sBAAsB,IACtBA,sBAAsB,KAAKT,YAAY,EACtC;UACD2B,uBAAuB,CAAElB,sBAAsB,EAAE,IAAK,CAAC;UACvD;QACD;MACD;;MAEA;MACA;MACAnD,WAAW,CACV6E,cAAc,CAAE,CAAC,CAAE,EACnBA,cAAc,CAAEA,cAAc,CAAChF,MAAM,GAAG,CAAC,CAAE,EAC3C,IACD,CAAC;IACF,CAAC,MAAM,IAAK+C,OAAO,CAAE,sCAAsC,EAAEU,KAAM,CAAC,EAAG;MACtEA,KAAK,CAACS,cAAc,CAAC,CAAC;MACtB,MAAM;QAAEb;MAAmB,CAAC,GAAGJ,iBAAiB,CAAC,CAAC;MAClD,MAAMiC,YAAY,GAAGjE,eAAe,CAAEoC,kBAAkB,EAAE,KAAM,CAAC;MACjE;MACAd,WAAW,CAAC,CAAC;MACb;MACAF,MAAM,CAAE6C,YAAa,CAAC;IACvB,CAAC,MAAM,IAAKnC,OAAO,CAAE,yBAAyB,EAAEU,KAAM,CAAC,EAAG;MACzD,MAAM;QAAEF;MAAe,CAAC,GAAGN,iBAAiB,CAAC,CAAC;MAC9C,IAAKM,cAAc,CAACvD,MAAM,GAAG,CAAC,IAAIoB,WAAW,CAAEmC,cAAe,CAAC,EAAG;QACjEE,KAAK,CAACS,cAAc,CAAC,CAAC;QACtB,MAAMiB,MAAM,GAAGjE,mBAAmB,CAAEqC,cAAe,CAAC;QACpD,MAAM6B,iBAAiB,GAAG9D,oBAAoB,CAAC,CAAC;QAChD,MAAM+D,SAAS,GAAG,IAAAC,yBAAiB,EAClCH,MAAM,EACNC,iBACD,CAAC;QACDhF,aAAa,CAAEmD,cAAc,EAAE8B,SAAU,CAAC;QAC1C,IAAAE,WAAK,EAAE,IAAAC,QAAE,EAAE,8BAA+B,CAAE,CAAC;QAC7C,MAAMV,mBAAmB,GAAGjE,yBAAyB,CAAC,CAAC;QACvD;QACAL,0BAA0B,CAAE2D,SAAU,CAAC;QACvCK,uBAAuB,CAAEM,mBAAmB,CAAE,CAAC,CAAE,EAAE,KAAM,CAAC;MAC3D;IACD;EACD;EAEA,MAAMW,YAAY,GAAG,IAAAC,oBAAW,EAAE,MAAM;IACvCpG,YAAY,CAAE,IAAK,CAAC;IACpBW,oBAAoB,CAAEjC,QAAQ,EAAE,IAAK,CAAC;EACvC,CAAC,EAAE,CAAEA,QAAQ,EAAEsB,YAAY,EAAEW,oBAAoB,CAAG,CAAC;EACrD,MAAM0F,YAAY,GAAG,IAAAD,oBAAW,EAAE,MAAM;IACvCpG,YAAY,CAAE,KAAM,CAAC;IACrBW,oBAAoB,CAAEjC,QAAQ,EAAE,KAAM,CAAC;EACxC,CAAC,EAAE,CAAEA,QAAQ,EAAEsB,YAAY,EAAEW,oBAAoB,CAAG,CAAC;EAErD,MAAM2F,iBAAiB,GAAG,IAAAF,oBAAW,EAClCjC,KAAK,IAAM;IACZlF,WAAW,CAAEkF,KAAK,EAAEzF,QAAS,CAAC;IAC9ByF,KAAK,CAACS,cAAc,CAAC,CAAC;EACvB,CAAC,EACD,CAAElG,QAAQ,EAAEO,WAAW,CACxB,CAAC;EAED,MAAMiG,uBAAuB,GAAG,IAAAkB,oBAAW,EAC1C,CAAEG,aAAa,EAAEC,iBAAiB,KAAM;IACvC,IAAKA,iBAAiB,EAAG;MACxBvH,WAAW,CAAE4F,SAAS,EAAE0B,aAAa,EAAE,IAAI,EAAE,IAAK,CAAC;IACpD;IAEA,IAAAE,oBAAa,EAAEF,aAAa,EAAEjD,kBAAkB,EAAEoD,OAAQ,CAAC;EAC5D,CAAC,EACD,CAAEzH,WAAW,EAAEqE,kBAAkB,CAClC,CAAC;EAED,MAAMqD,cAAc,GAAG,IAAAP,oBAAW,EAC/BjC,KAAK,IAAM;IACZ;IACAA,KAAK,CAACS,cAAc,CAAC,CAAC;IACtBT,KAAK,CAACQ,eAAe,CAAC,CAAC;IACvB,IAAKnF,UAAU,KAAK,IAAI,EAAG;MAC1BwD,QAAQ,CAAEtE,QAAS,CAAC;IACrB,CAAC,MAAM,IAAKc,UAAU,KAAK,KAAK,EAAG;MAClCuD,MAAM,CAAErE,QAAS,CAAC;IACnB;EACD,CAAC,EACD,CAAEA,QAAQ,EAAEqE,MAAM,EAAEC,QAAQ,EAAExD,UAAU,CACzC,CAAC;;EAED;EACA,MAAMoH,aAAa,GAAG,IAAAR,oBAAW,EAC9BjC,KAAK,IAAM;IACZ,IAAKzB,gBAAgB,IAAIL,wBAAwB,EAAG;MACnDvC,WAAW,CAAC4G,OAAO,EAAEG,KAAK,CAAC,CAAC;MAC5B;MACA1G,qBAAqB,CACpB,IAAI2G,MAAM,CAACC,OAAO,CAAE5C,KAAK,CAAC6C,OAAO,EAAE7C,KAAK,CAAC8C,OAAO,EAAE,CAAC,EAAE,CAAE,CACxD,CAAC;MACD9C,KAAK,CAACS,cAAc,CAAC,CAAC;IACvB;EACD,CAAC,EACD,CAAEvC,wBAAwB,EAAEvC,WAAW,EAAE4C,gBAAgB,CAC1D,CAAC;EAED,MAAMwE,WAAW,GAAG,IAAAd,oBAAW,EAC5BjC,KAAK,IAAM;IACZ;IACA;IACA,IAAK9B,wBAAwB,IAAI8B,KAAK,CAACgD,MAAM,KAAK,CAAC,EAAG;MACrDhD,KAAK,CAACS,cAAc,CAAC,CAAC;IACvB;EACD,CAAC,EACD,CAAEvC,wBAAwB,CAC3B,CAAC;EAED,MAAM+E,qBAAqB,GAAG,IAAAC,gBAAO,EAAE,MAAM;IAC5C,MAAM;MAAEC;IAAc,CAAC,GAAGzH,MAAM,EAAE6G,OAAO,IAAI,CAAC,CAAC;;IAE/C;IACA;IACA,IAAK,CAAExG,kBAAkB,IAAI,CAAEoH,aAAa,EAAG;MAC9C,OAAOzC,SAAS;IACjB;;IAEA;IACA,OAAO;MACNyC,aAAa;MACbC,qBAAqBA,CAAA,EAAG;QACvB,OAAOrH,kBAAkB;MAC1B;IACD,CAAC;EACF,CAAC,EAAE,CAAEA,kBAAkB,CAAG,CAAC;EAE3B,MAAMsH,uBAAuB,GAAG,IAAApB,oBAAW,EAAE,MAAM;IAClD;IACA;IACAjG,qBAAqB,CAAE0E,SAAU,CAAC;EACnC,CAAC,EAAE,CAAE1E,qBAAqB,CAAG,CAAC;;EAE9B;EACA;EACA;EACA,IAAAsH,kCAAyB,EAAE;IAC1B1I,UAAU;IACV2I,UAAU,EAAE7H,MAAM;IAClBJ;EACD,CAAE,CAAC;;EAEH;EACA;EACA;EACA,IAAK,CAAEhB,KAAK,EAAG;IACd,OAAO,IAAI;EACZ;EAEA,MAAMkJ,wBAAwB,GAAG,IAAAC,kCAA2B,EAC3D1I,QAAQ,EACRG,iBAAiB,EACjBF,KACD,CAAC;EAED,MAAM0I,0BAA0B,GAC/B,IAAAC,oCAA6B,EAAE1H,QAAS,CAAC;EAE1C,MAAM2H,WAAW,GAAG1I,iBAAiB,GAAG,CAAC;EACzC,MAAM2I,iBAAiB,GAAG1I,eAAe,IAAIyI,WAAW;EACxD,MAAME,kBAAkB,GAAG,IAAAC,aAAI,EAC9B,0CAA0C,EAC1C;IAAE,YAAY,EAAEnI,SAAS,IAAIhB;EAAW,CACzC,CAAC;EAED,MAAMoJ,8BAA8B,GAAG,IAAAD,aAAI,EAC1C,yCAAyC,EACzC;IAAE,YAAY,EAAEnI,SAAS,IAAIS;EAAqB,CACnD,CAAC;EAED,IAAI4H,OAAO;EACX,IAAKJ,iBAAiB,EAAG;IACxBI,OAAO,GAAG,CAAC;EACZ,CAAC,MAAM,IAAK,CAAE1F,gBAAgB,EAAG;IAChC0F,OAAO,GAAG,CAAC;EACZ;EAEA,MAAMC,OAAO,GAAG,IAAAH,aAAI,EAAE;IACrB,aAAa,EAAEnJ,UAAU;IACzB,mBAAmB,EAAEyB,oBAAoB;IACzC,kBAAkB,EAAEC,mBAAmB;IACvC,oBAAoB,EAAEzB,gBAAgB;IACtC,kBAAkB,EAAEU,cAAc;IAClC,aAAa,EAAEb,SAAS;IACxB,iBAAiB,EAAE,CAAE6D,gBAAgB;IACrC,WAAW,EAAER,gBAAgB,EAAEoG,QAAQ;IACvC,cAAc,EAAEhI,OAAO;IACvB,wBAAwB,EAAE3B,YAAY,KAAK,QAAQ;IACnD,oBAAoB,EAAEA,YAAY,KAAK,IAAI;IAC3C,sBAAsB,EAAEA,YAAY,KAAK,MAAM;IAC/C,yBAAyB,EAAEC,oBAAoB;IAC/C,YAAY,EAAEE;EACf,CAAE,CAAC;;EAEH;EACA;EACA;EACA;EACA,MAAMyJ,iBAAiB,GAAG9I,iBAAiB,CAACqE,QAAQ,CAAEpF,QAAS,CAAC,GAC7De,iBAAiB,GACjB,CAAEf,QAAQ,CAAE;;EAEf;EACA,MAAM8J,6BAA6B,GAClCzJ,UAAU,IAAIU,iBAAiB,CAACiB,MAAM,KAAK,CAAC;EAE7C,oBACC,IAAAnC,WAAA,CAAAkK,IAAA,EAAC7K,KAAA,CAAA8K,OAAY;IACZC,SAAS,EAAGN,OAAS;IACrBxJ,SAAS,EAAGA,SAAW;IACvBqF,SAAS,EAAGA,SAAW;IACvBiC,YAAY,EAAGA,YAAc;IAC7BE,YAAY,EAAGA,YAAc;IAC7BuC,OAAO,EAAGzC,YAAc;IACxB0C,MAAM,EAAGxC,YAAc;IACvBlH,KAAK,EAAGA,KAAO;IACfD,QAAQ,EAAGA,QAAU;IACrBE,QAAQ,EAAGA,QAAU;IACrBG,IAAI,EAAGA,IAAM;IACbuJ,EAAE,EAAI,aAAa3F,kBAAoB,UAAUzE,QAAU,EAAG;IAC9D,cAAaA,QAAU;IACvB,iBAAgB2B,OAAO,GAAGb,UAAU,GAAGqF,SAAW;IAClDkE,GAAG,EAAGlJ,MAAQ;IAAAmJ,QAAA,gBAEd,IAAAzK,WAAA,CAAA0K,GAAA,EAAC/L,WAAA,CAAAgM,0BAAY;MACZP,SAAS,EAAC,6CAA6C;MACvDP,OAAO,EAAGA,OAAS;MACnBW,GAAG,EAAGpJ,OAAS;MACf,iBAAgB,CAAC,CAAEZ,UAAY;MAAAiK,QAAA,EAE7BA,CAAE;QAAED,GAAG;QAAEI,QAAQ;QAAEP;MAAQ,CAAC,kBAC7B,IAAArK,WAAA,CAAAkK,IAAA;QAAKE,SAAS,EAAC,kDAAkD;QAAAK,QAAA,gBAChE,IAAAzK,WAAA,CAAA0K,GAAA,EAAClL,cAAA,CAAA2K,OAAqB;UACrBjK,KAAK,EAAGA,KAAO;UACf2K,OAAO,EAAG9C,iBAAmB;UAC7BM,aAAa,EAAGA,aAAe;UAC/BM,WAAW,EAAGA,WAAa;UAC3BmC,gBAAgB,EAAG1C,cAAgB;UACnC5H,UAAU,EAAGA,UAAY;UACzBG,QAAQ,EAAGA,QAAU;UACrBG,iBAAiB,EAAGA,iBAAmB;UACvCF,KAAK,EAAGA,KAAO;UACf4J,GAAG,EAAGA,GAAK;UACXI,QAAQ,EACPX,6BAA6B,GAAG,CAAC,GAAGW,QACpC;UACDP,OAAO,EAAGA,OAAS;UACnBpJ,UAAU,EAAGa,OAAO,GAAGb,UAAU,GAAGqF,SAAW;UAC/CpF,iBAAiB,EAAGA,iBAAmB;UACvC6J,eAAe,EAAGxG;QAAe,CACjC,CAAC,eACF,IAAAvE,WAAA,CAAA0K,GAAA,EAAC5K,mBAAA,CAAAqK,OAAkB;UAACI,EAAE,EAAGhG,aAAe;UAAAkG,QAAA,EACpC,GAAGrB,wBAA0B,IAAIE,0BAA4B;QAAC,CAC9C,CAAC;MAAA,CACjB;IACL,CACY,CAAC,EACbG,iBAAiB,iBAClB,IAAAzJ,WAAA,CAAA0K,GAAA,EAAA1K,WAAA,CAAAgL,QAAA;MAAAP,QAAA,eACC,IAAAzK,WAAA,CAAAkK,IAAA,EAACvL,WAAA,CAAAgM,0BAAY;QACZP,SAAS,EAAGV,kBAAoB;QAChCuB,eAAe;QAAAR,QAAA,gBAEf,IAAAzK,WAAA,CAAA0K,GAAA,EAAC/L,WAAA,CAAAuM,0BAAY;UAAAT,QAAA,EACVA,CAAE;YAAED,GAAG;YAAEI,QAAQ;YAAEP;UAAQ,CAAC,kBAC7B,IAAArK,WAAA,CAAA0K,GAAA,EAACnL,OAAA,CAAA4L,kBAAkB;YAClBC,WAAW,EAAC,UAAU;YACtBC,SAAS,EAAG,CAAElL,QAAQ,CAAI;YAC1BqK,GAAG,EAAGA,GAAK;YACXI,QAAQ,EAAGA,QAAU;YACrBP,OAAO,EAAGA;UAAS,CACnB;QACD,CACY,CAAC,eACf,IAAArK,WAAA,CAAA0K,GAAA,EAAC/L,WAAA,CAAAuM,0BAAY;UAAAT,QAAA,EACVA,CAAE;YAAED,GAAG;YAAEI,QAAQ;YAAEP;UAAQ,CAAC,kBAC7B,IAAArK,WAAA,CAAA0K,GAAA,EAACnL,OAAA,CAAA+L,oBAAoB;YACpBF,WAAW,EAAC,UAAU;YACtBC,SAAS,EAAG,CAAElL,QAAQ,CAAI;YAC1BqK,GAAG,EAAGA,GAAK;YACXI,QAAQ,EAAGA,QAAU;YACrBP,OAAO,EAAGA;UAAS,CACnB;QACD,CACY,CAAC;MAAA,CACF;IAAC,CACd,CACF,EAEClG,gBAAgB,IAAIQ,iBAAiB,iBACtC,IAAA3E,WAAA,CAAA0K,GAAA,EAAC/L,WAAA,CAAAgM,0BAAY;MACZP,SAAS,EAAGR,8BAAgC;MAC5C,iBAAgB,CAAC,CAAEpJ,UAAY;MAC/BgK,GAAG,EAAGjJ,WAAa;MAAAkJ,QAAA,EAEjBA,CAAE;QAAED,GAAG;QAAEI,QAAQ;QAAEP;MAAQ,CAAC,kBAC7B,IAAArK,WAAA,CAAA0K,GAAA,EAAC/F,iBAAiB;QACjB0G,SAAS,EAAGrB,iBAAmB;QAC/B9J,KAAK,EAAGA,KAAO;QACfqL,IAAI,EAAGC,mBAAc;QACrBC,KAAK,EAAG,IAAA9D,QAAE,EAAE,SAAU,CAAG;QACzB+D,YAAY,EAAG;UACdC,MAAM,EAAE9C,qBAAqB,CAAE;QAChC,CAAG;QACH+C,WAAW,EAAG;UACbpB,GAAG;UACHJ,SAAS,EAAE,oCAAoC;UAC/CQ,QAAQ;UACRC,OAAO,EAAE5B,uBAAuB;UAChCoB;QACD,CAAG;QACHwB,sBAAsB;QACtBrH,MAAM,EAAGA,MAAQ;QACjBK,aAAa,EAAGA,aAAe;QAC/BC,gBAAgB,EAAGA,gBAAkB;QACrCgH,yBAAyB,EACxBnF;MACA,CACD;IACD,CACY,CACd;EAAA,CACY,CAAC;AAEjB;AAAC,IAAAoF,QAAA,GAAAC,OAAA,CAAA7B,OAAA,GAEc,IAAA8B,aAAI,EAAEhM,aAAc,CAAC","ignoreList":[]}
|
|
@@ -151,7 +151,9 @@ function ListViewBranch(props) {
|
|
|
151
151
|
// This prevents the entire tree from being rendered when a branch is
|
|
152
152
|
// selected, or a user selects all blocks, while still enabling scroll
|
|
153
153
|
// into view behavior when selecting a block or opening the list view.
|
|
154
|
-
|
|
154
|
+
// The first and last blocks of the list are always rendered, to ensure
|
|
155
|
+
// that Home and End keys work as expected.
|
|
156
|
+
const showBlock = isDragged || blockInView || isSelected && clientId === selectedClientIds[0] || index === 0 || index === blockCount - 1;
|
|
155
157
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_data.AsyncModeProvider, {
|
|
156
158
|
value: !isSelected,
|
|
157
159
|
children: [showBlock && /*#__PURE__*/(0, _jsxRuntime.jsx)(_block.default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","_element","_data","_appender","_block","_interopRequireDefault","_context","_utils","_store","_useBlockDisplayInformation","_jsxRuntime","countBlocks","block","expandedState","draggedClientIds","isExpandedByDefault","_expandedState$block$","isDragged","includes","clientId","isExpanded","innerBlocks","reduce","countReducer","count","_expandedState$block$2","length","noop","ListViewBranch","props","blocks","selectBlock","showBlockMovers","selectedClientIds","level","path","isBranchSelected","listPosition","fixedListWindow","parentId","shouldShowInnerBlocks","isSyncedBranch","showAppender","showAppenderProp","parentBlockInformation","useBlockDisplayInformation","syncedBranch","isSynced","canParentExpand","useSelect","select","blockEditorStore","canEditBlock","blockDropPosition","blockDropTargetIndex","firstDraggedBlockIndex","blockIndexes","useListViewContext","filteredBlocks","filter","Boolean","blockCount","rowCount","nextPosition","jsxs","Fragment","children","map","index","_expandedState$client","displacement","isAfterDraggedBlocks","isNesting","getDragDisplacementValues","itemInView","blockInView","position","updatedPath","hasNestedBlocks","shouldExpand","undefined","isSelected","isClientIdSelected","isSelectedBranch","showBlock","AsyncModeProvider","value","jsx","default","siblingBlockCount","className","__experimentalTreeGridRow","setSize","positionInSet","__experimentalTreeGridCell","treeGridCellProps","Appender","nestingLevel","_default","exports","memo"],"sources":["@wordpress/block-editor/src/components/list-view/branch.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalTreeGridRow as TreeGridRow,\n\t__experimentalTreeGridCell as TreeGridCell,\n} from '@wordpress/components';\nimport { memo } from '@wordpress/element';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { Appender } from './appender';\nimport ListViewBlock from './block';\nimport { useListViewContext } from './context';\nimport { getDragDisplacementValues, isClientIdSelected } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\n\n/**\n * Given a block, returns the total number of blocks in that subtree. This is used to help determine\n * the list position of a block.\n *\n * When a block is collapsed, we do not count their children as part of that total. In the current drag\n * implementation dragged blocks and their children are not counted.\n *\n * @param {Object} block block tree\n * @param {Object} expandedState state that notes which branches are collapsed\n * @param {Array} draggedClientIds a list of dragged client ids\n * @param {boolean} isExpandedByDefault flag to determine the default fallback expanded state.\n * @return {number} block count\n */\nfunction countBlocks(\n\tblock,\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn 0;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\n\tif ( isExpanded ) {\n\t\treturn (\n\t\t\t1 +\n\t\t\tblock.innerBlocks.reduce(\n\t\t\t\tcountReducer(\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\treturn 1;\n}\nconst countReducer =\n\t( expandedState, draggedClientIds, isExpandedByDefault ) =>\n\t( count, block ) => {\n\t\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\t\tif ( isDragged ) {\n\t\t\treturn count;\n\t\t}\n\t\tconst isExpanded =\n\t\t\texpandedState[ block.clientId ] ?? isExpandedByDefault;\n\t\tif ( isExpanded && block.innerBlocks.length > 0 ) {\n\t\t\treturn (\n\t\t\t\tcount +\n\t\t\t\tcountBlocks(\n\t\t\t\t\tblock,\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\treturn count + 1;\n\t};\n\nconst noop = () => {};\n\nfunction ListViewBranch( props ) {\n\tconst {\n\t\tblocks,\n\t\tselectBlock = noop,\n\t\tshowBlockMovers,\n\t\tselectedClientIds,\n\t\tlevel = 1,\n\t\tpath = '',\n\t\tisBranchSelected = false,\n\t\tlistPosition = 0,\n\t\tfixedListWindow,\n\t\tisExpanded,\n\t\tparentId,\n\t\tshouldShowInnerBlocks = true,\n\t\tisSyncedBranch = false,\n\t\tshowAppender: showAppenderProp = true,\n\t} = props;\n\n\tconst parentBlockInformation = useBlockDisplayInformation( parentId );\n\tconst syncedBranch = isSyncedBranch || !! parentBlockInformation?.isSynced;\n\n\tconst canParentExpand = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! parentId ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn select( blockEditorStore ).canEditBlock( parentId );\n\t\t},\n\t\t[ parentId ]\n\t);\n\n\tconst {\n\t\tblockDropPosition,\n\t\tblockDropTargetIndex,\n\t\tfirstDraggedBlockIndex,\n\t\tblockIndexes,\n\t\texpandedState,\n\t\tdraggedClientIds,\n\t} = useListViewContext();\n\n\tif ( ! canParentExpand ) {\n\t\treturn null;\n\t}\n\n\t// Only show the appender at the first level.\n\tconst showAppender = showAppenderProp && level === 1;\n\tconst filteredBlocks = blocks.filter( Boolean );\n\tconst blockCount = filteredBlocks.length;\n\t// The appender means an extra row in List View, so add 1 to the row count.\n\tconst rowCount = showAppender ? blockCount + 1 : blockCount;\n\tlet nextPosition = listPosition;\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredBlocks.map( ( block, index ) => {\n\t\t\t\tconst { clientId, innerBlocks } = block;\n\n\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\tnextPosition += countBlocks(\n\t\t\t\t\t\tfilteredBlocks[ index - 1 ],\n\t\t\t\t\t\texpandedState,\n\t\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\t\tisExpanded\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst isDragged = !! draggedClientIds?.includes( clientId );\n\n\t\t\t\t// Determine the displacement of the block while dragging. This\n\t\t\t\t// works out whether the current block should be displaced up or\n\t\t\t\t// down, relative to the dragged blocks and the drop target.\n\t\t\t\tconst { displacement, isAfterDraggedBlocks, isNesting } =\n\t\t\t\t\tgetDragDisplacementValues( {\n\t\t\t\t\t\tblockIndexes,\n\t\t\t\t\t\tblockDropTargetIndex,\n\t\t\t\t\t\tblockDropPosition,\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tfirstDraggedBlockIndex,\n\t\t\t\t\t\tisDragged,\n\t\t\t\t\t} );\n\n\t\t\t\tconst { itemInView } = fixedListWindow;\n\t\t\t\tconst blockInView = itemInView( nextPosition );\n\n\t\t\t\tconst position = index + 1;\n\t\t\t\tconst updatedPath =\n\t\t\t\t\tpath.length > 0\n\t\t\t\t\t\t? `${ path }_${ position }`\n\t\t\t\t\t\t: `${ position }`;\n\t\t\t\tconst hasNestedBlocks = !! innerBlocks?.length;\n\n\t\t\t\tconst shouldExpand =\n\t\t\t\t\thasNestedBlocks && shouldShowInnerBlocks\n\t\t\t\t\t\t? expandedState[ clientId ] ?? isExpanded\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t// Make updates to the selected or dragged blocks synchronous,\n\t\t\t\t// but asynchronous for any other block.\n\t\t\t\tconst isSelected = isClientIdSelected(\n\t\t\t\t\tclientId,\n\t\t\t\t\tselectedClientIds\n\t\t\t\t);\n\t\t\t\tconst isSelectedBranch =\n\t\t\t\t\tisBranchSelected || ( isSelected && hasNestedBlocks );\n\n\t\t\t\t// To avoid performance issues, we only render blocks that are in view,\n\t\t\t\t// or blocks that are selected or dragged. If a block is selected,\n\t\t\t\t// it is only counted if it is the first of the block selection.\n\t\t\t\t// This prevents the entire tree from being rendered when a branch is\n\t\t\t\t// selected, or a user selects all blocks, while still enabling scroll\n\t\t\t\t// into view behavior when selecting a block or opening the list view.\n\t\t\t\tconst showBlock =\n\t\t\t\t\tisDragged ||\n\t\t\t\t\tblockInView ||\n\t\t\t\t\t( isSelected && clientId === selectedClientIds[ 0 ] );\n\t\t\t\treturn (\n\t\t\t\t\t<AsyncModeProvider key={ clientId } value={ ! isSelected }>\n\t\t\t\t\t\t{ showBlock && (\n\t\t\t\t\t\t\t<ListViewBlock\n\t\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tisDragged={ isDragged }\n\t\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\t\trowCount={ rowCount }\n\t\t\t\t\t\t\t\tsiblingBlockCount={ blockCount }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tisExpanded={ isDragged ? false : shouldExpand }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t\tisSyncedBranch={ syncedBranch }\n\t\t\t\t\t\t\t\tdisplacement={ displacement }\n\t\t\t\t\t\t\t\tisAfterDraggedBlocks={ isAfterDraggedBlocks }\n\t\t\t\t\t\t\t\tisNesting={ isNesting }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! showBlock && (\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td className=\"block-editor-list-view-placeholder\" />\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasNestedBlocks && shouldExpand && ! isDragged && (\n\t\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\t\tparentId={ clientId }\n\t\t\t\t\t\t\t\tblocks={ innerBlocks }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tlevel={ level + 1 }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition + 1 }\n\t\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t\tisSyncedBranch={ syncedBranch }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</AsyncModeProvider>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ showAppender && (\n\t\t\t\t<TreeGridRow\n\t\t\t\t\tlevel={ level }\n\t\t\t\t\tsetSize={ rowCount }\n\t\t\t\t\tpositionInSet={ rowCount }\n\t\t\t\t\tisExpanded\n\t\t\t\t>\n\t\t\t\t\t<TreeGridCell>\n\t\t\t\t\t\t{ ( treeGridCellProps ) => (\n\t\t\t\t\t\t\t<Appender\n\t\t\t\t\t\t\t\tclientId={ parentId }\n\t\t\t\t\t\t\t\tnestingLevel={ level }\n\t\t\t\t\t\t\t\tblockCount={ blockCount }\n\t\t\t\t\t\t\t\t{ ...treeGridCellProps }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</TreeGridRow>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default memo( ListViewBranch );\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_components","require","_element","_data","_appender","_block","_interopRequireDefault","_context","_utils","_store","_useBlockDisplayInformation","_jsxRuntime","countBlocks","block","expandedState","draggedClientIds","isExpandedByDefault","_expandedState$block$","isDragged","includes","clientId","isExpanded","innerBlocks","reduce","countReducer","count","_expandedState$block$2","length","noop","ListViewBranch","props","blocks","selectBlock","showBlockMovers","selectedClientIds","level","path","isBranchSelected","listPosition","fixedListWindow","parentId","shouldShowInnerBlocks","isSyncedBranch","showAppender","showAppenderProp","parentBlockInformation","useBlockDisplayInformation","syncedBranch","isSynced","canParentExpand","useSelect","select","blockEditorStore","canEditBlock","blockDropPosition","blockDropTargetIndex","firstDraggedBlockIndex","blockIndexes","useListViewContext","filteredBlocks","filter","Boolean","blockCount","rowCount","nextPosition","jsxs","Fragment","children","map","index","_expandedState$client","displacement","isAfterDraggedBlocks","isNesting","getDragDisplacementValues","itemInView","blockInView","position","updatedPath","hasNestedBlocks","shouldExpand","undefined","isSelected","isClientIdSelected","isSelectedBranch","showBlock","AsyncModeProvider","value","jsx","default","siblingBlockCount","className","__experimentalTreeGridRow","setSize","positionInSet","__experimentalTreeGridCell","treeGridCellProps","Appender","nestingLevel","_default","exports","memo"],"sources":["@wordpress/block-editor/src/components/list-view/branch.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalTreeGridRow as TreeGridRow,\n\t__experimentalTreeGridCell as TreeGridCell,\n} from '@wordpress/components';\nimport { memo } from '@wordpress/element';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { Appender } from './appender';\nimport ListViewBlock from './block';\nimport { useListViewContext } from './context';\nimport { getDragDisplacementValues, isClientIdSelected } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport useBlockDisplayInformation from '../use-block-display-information';\n\n/**\n * Given a block, returns the total number of blocks in that subtree. This is used to help determine\n * the list position of a block.\n *\n * When a block is collapsed, we do not count their children as part of that total. In the current drag\n * implementation dragged blocks and their children are not counted.\n *\n * @param {Object} block block tree\n * @param {Object} expandedState state that notes which branches are collapsed\n * @param {Array} draggedClientIds a list of dragged client ids\n * @param {boolean} isExpandedByDefault flag to determine the default fallback expanded state.\n * @return {number} block count\n */\nfunction countBlocks(\n\tblock,\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn 0;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\n\tif ( isExpanded ) {\n\t\treturn (\n\t\t\t1 +\n\t\t\tblock.innerBlocks.reduce(\n\t\t\t\tcountReducer(\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\treturn 1;\n}\nconst countReducer =\n\t( expandedState, draggedClientIds, isExpandedByDefault ) =>\n\t( count, block ) => {\n\t\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\t\tif ( isDragged ) {\n\t\t\treturn count;\n\t\t}\n\t\tconst isExpanded =\n\t\t\texpandedState[ block.clientId ] ?? isExpandedByDefault;\n\t\tif ( isExpanded && block.innerBlocks.length > 0 ) {\n\t\t\treturn (\n\t\t\t\tcount +\n\t\t\t\tcountBlocks(\n\t\t\t\t\tblock,\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\treturn count + 1;\n\t};\n\nconst noop = () => {};\n\nfunction ListViewBranch( props ) {\n\tconst {\n\t\tblocks,\n\t\tselectBlock = noop,\n\t\tshowBlockMovers,\n\t\tselectedClientIds,\n\t\tlevel = 1,\n\t\tpath = '',\n\t\tisBranchSelected = false,\n\t\tlistPosition = 0,\n\t\tfixedListWindow,\n\t\tisExpanded,\n\t\tparentId,\n\t\tshouldShowInnerBlocks = true,\n\t\tisSyncedBranch = false,\n\t\tshowAppender: showAppenderProp = true,\n\t} = props;\n\n\tconst parentBlockInformation = useBlockDisplayInformation( parentId );\n\tconst syncedBranch = isSyncedBranch || !! parentBlockInformation?.isSynced;\n\n\tconst canParentExpand = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! parentId ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn select( blockEditorStore ).canEditBlock( parentId );\n\t\t},\n\t\t[ parentId ]\n\t);\n\n\tconst {\n\t\tblockDropPosition,\n\t\tblockDropTargetIndex,\n\t\tfirstDraggedBlockIndex,\n\t\tblockIndexes,\n\t\texpandedState,\n\t\tdraggedClientIds,\n\t} = useListViewContext();\n\n\tif ( ! canParentExpand ) {\n\t\treturn null;\n\t}\n\n\t// Only show the appender at the first level.\n\tconst showAppender = showAppenderProp && level === 1;\n\tconst filteredBlocks = blocks.filter( Boolean );\n\tconst blockCount = filteredBlocks.length;\n\t// The appender means an extra row in List View, so add 1 to the row count.\n\tconst rowCount = showAppender ? blockCount + 1 : blockCount;\n\tlet nextPosition = listPosition;\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredBlocks.map( ( block, index ) => {\n\t\t\t\tconst { clientId, innerBlocks } = block;\n\n\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\tnextPosition += countBlocks(\n\t\t\t\t\t\tfilteredBlocks[ index - 1 ],\n\t\t\t\t\t\texpandedState,\n\t\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\t\tisExpanded\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst isDragged = !! draggedClientIds?.includes( clientId );\n\n\t\t\t\t// Determine the displacement of the block while dragging. This\n\t\t\t\t// works out whether the current block should be displaced up or\n\t\t\t\t// down, relative to the dragged blocks and the drop target.\n\t\t\t\tconst { displacement, isAfterDraggedBlocks, isNesting } =\n\t\t\t\t\tgetDragDisplacementValues( {\n\t\t\t\t\t\tblockIndexes,\n\t\t\t\t\t\tblockDropTargetIndex,\n\t\t\t\t\t\tblockDropPosition,\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\tfirstDraggedBlockIndex,\n\t\t\t\t\t\tisDragged,\n\t\t\t\t\t} );\n\n\t\t\t\tconst { itemInView } = fixedListWindow;\n\t\t\t\tconst blockInView = itemInView( nextPosition );\n\n\t\t\t\tconst position = index + 1;\n\t\t\t\tconst updatedPath =\n\t\t\t\t\tpath.length > 0\n\t\t\t\t\t\t? `${ path }_${ position }`\n\t\t\t\t\t\t: `${ position }`;\n\t\t\t\tconst hasNestedBlocks = !! innerBlocks?.length;\n\n\t\t\t\tconst shouldExpand =\n\t\t\t\t\thasNestedBlocks && shouldShowInnerBlocks\n\t\t\t\t\t\t? expandedState[ clientId ] ?? isExpanded\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t// Make updates to the selected or dragged blocks synchronous,\n\t\t\t\t// but asynchronous for any other block.\n\t\t\t\tconst isSelected = isClientIdSelected(\n\t\t\t\t\tclientId,\n\t\t\t\t\tselectedClientIds\n\t\t\t\t);\n\t\t\t\tconst isSelectedBranch =\n\t\t\t\t\tisBranchSelected || ( isSelected && hasNestedBlocks );\n\n\t\t\t\t// To avoid performance issues, we only render blocks that are in view,\n\t\t\t\t// or blocks that are selected or dragged. If a block is selected,\n\t\t\t\t// it is only counted if it is the first of the block selection.\n\t\t\t\t// This prevents the entire tree from being rendered when a branch is\n\t\t\t\t// selected, or a user selects all blocks, while still enabling scroll\n\t\t\t\t// into view behavior when selecting a block or opening the list view.\n\t\t\t\t// The first and last blocks of the list are always rendered, to ensure\n\t\t\t\t// that Home and End keys work as expected.\n\t\t\t\tconst showBlock =\n\t\t\t\t\tisDragged ||\n\t\t\t\t\tblockInView ||\n\t\t\t\t\t( isSelected && clientId === selectedClientIds[ 0 ] ) ||\n\t\t\t\t\tindex === 0 ||\n\t\t\t\t\tindex === blockCount - 1;\n\t\t\t\treturn (\n\t\t\t\t\t<AsyncModeProvider key={ clientId } value={ ! isSelected }>\n\t\t\t\t\t\t{ showBlock && (\n\t\t\t\t\t\t\t<ListViewBlock\n\t\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tisDragged={ isDragged }\n\t\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\t\trowCount={ rowCount }\n\t\t\t\t\t\t\t\tsiblingBlockCount={ blockCount }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tisExpanded={ isDragged ? false : shouldExpand }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t\tisSyncedBranch={ syncedBranch }\n\t\t\t\t\t\t\t\tdisplacement={ displacement }\n\t\t\t\t\t\t\t\tisAfterDraggedBlocks={ isAfterDraggedBlocks }\n\t\t\t\t\t\t\t\tisNesting={ isNesting }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! showBlock && (\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td className=\"block-editor-list-view-placeholder\" />\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasNestedBlocks && shouldExpand && ! isDragged && (\n\t\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\t\tparentId={ clientId }\n\t\t\t\t\t\t\t\tblocks={ innerBlocks }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tlevel={ level + 1 }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition + 1 }\n\t\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t\tisSyncedBranch={ syncedBranch }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</AsyncModeProvider>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ showAppender && (\n\t\t\t\t<TreeGridRow\n\t\t\t\t\tlevel={ level }\n\t\t\t\t\tsetSize={ rowCount }\n\t\t\t\t\tpositionInSet={ rowCount }\n\t\t\t\t\tisExpanded\n\t\t\t\t>\n\t\t\t\t\t<TreeGridCell>\n\t\t\t\t\t\t{ ( treeGridCellProps ) => (\n\t\t\t\t\t\t\t<Appender\n\t\t\t\t\t\t\t\tclientId={ parentId }\n\t\t\t\t\t\t\t\tnestingLevel={ level }\n\t\t\t\t\t\t\t\tblockCount={ blockCount }\n\t\t\t\t\t\t\t\t{ ...treeGridCellProps }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</TreeGridRow>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default memo( ListViewBranch );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -105,7 +105,7 @@ function useClipboardHandler({
|
|
|
105
105
|
if (event.type === 'cut') {
|
|
106
106
|
var _getPreviousBlockClie;
|
|
107
107
|
// Don't update the selection if the blocks cannot be deleted.
|
|
108
|
-
if (!canRemoveBlocks(selectedBlockClientIds
|
|
108
|
+
if (!canRemoveBlocks(selectedBlockClientIds)) {
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
111
|
let blockToFocus = (_getPreviousBlockClie = getPreviousBlockClientId(firstBlockClientId)) !== null && _getPreviousBlockClie !== void 0 ? _getPreviousBlockClie :
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_compose","_store","_useNotifyCopy","_utils","_utils2","useClipboardHandler","selectBlock","registry","useRegistry","getBlockOrder","getBlockRootClientId","getBlocksByClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getSettings","canInsertBlockType","canRemoveBlocks","useSelect","blockEditorStore","flashBlock","removeBlocks","replaceBlocks","insertBlocks","useDispatch","notifyCopy","useNotifyCopy","useRefEffect","node","updateFocusAndSelection","focusClientId","shouldSelectBlock","undefined","focusListItem","getBlocksToUpdate","clientId","selectedBlockClientIds","isUpdatingSelectedBlocks","includes","firstBlockClientId","firstBlockRootClientId","blocksToUpdate","originallySelectedBlockClientIds","handler","event","defaultPrevented","contains","target","ownerDocument","activeElement","listViewRow","closest","dataset","block","length","preventDefault","type","blocks","setClipboardBlocks","_getPreviousBlockClie","blockToFocus","shouldUpdateSelection","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","getPasteBlocks","selectedBlockClientId","every","name","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/list-view/use-clipboard-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useNotifyCopy } from '../../utils/use-notify-copy';\nimport { focusListItem } from './utils';\nimport { getPasteBlocks, setClipboardBlocks } from '../writing-flow/utils';\n\n// This hook borrows from useClipboardHandler in ../writing-flow/use-clipboard-handler.js\n// and adds behaviour for the list view, while skipping partial selection.\nexport default function useClipboardHandler( { selectBlock } ) {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetBlockOrder,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tgetPreviousBlockClientId,\n\t\tgetSelectedBlockClientIds,\n\t\tgetSettings,\n\t\tcanInsertBlockType,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { flashBlock, removeBlocks, replaceBlocks, insertBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction updateFocusAndSelection( focusClientId, shouldSelectBlock ) {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, node );\n\t\t}\n\n\t\t// Determine which blocks to update:\n\t\t// If the current (focused) block is part of the block selection, use the whole selection.\n\t\t// If the focused block is not part of the block selection, only update the focused block.\n\t\tfunction getBlocksToUpdate( clientId ) {\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst isUpdatingSelectedBlocks =\n\t\t\t\tselectedBlockClientIds.includes( clientId );\n\t\t\tconst firstBlockClientId = isUpdatingSelectedBlocks\n\t\t\t\t? selectedBlockClientIds[ 0 ]\n\t\t\t\t: clientId;\n\t\t\tconst firstBlockRootClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\n\t\t\tconst blocksToUpdate = isUpdatingSelectedBlocks\n\t\t\t\t? selectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\treturn {\n\t\t\t\tblocksToUpdate,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\toriginallySelectedBlockClientIds: selectedBlockClientIds,\n\t\t\t};\n\t\t}\n\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was possibly already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only handle events that occur within the list view.\n\t\t\tif ( ! node.contains( event.target.ownerDocument.activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Retrieve the block clientId associated with the focused list view row.\n\t\t\t// This enables applying copy / cut / paste behavior to the focused block,\n\t\t\t// rather than just the blocks that are currently selected.\n\t\t\tconst listViewRow =\n\t\t\t\tevent.target.ownerDocument.activeElement?.closest(\n\t\t\t\t\t'[role=row]'\n\t\t\t\t);\n\t\t\tconst clientId = listViewRow?.dataset?.block;\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tblocksToUpdate: selectedBlockClientIds,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\toriginallySelectedBlockClientIds,\n\t\t\t} = getBlocksToUpdate( clientId );\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\tconst blocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\tsetClipboardBlocks( event, blocks, registry );\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// Don't update the selection if the blocks cannot be deleted.\n\t\t\t\tif (\n\t\t\t\t\t! canRemoveBlocks(\n\t\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\t\tfirstBlockRootClientId\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet blockToFocus =\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ) ??\n\t\t\t\t\t// If the previous block is not found (when the first block is deleted),\n\t\t\t\t\t// fallback to focus the parent block.\n\t\t\t\t\tfirstBlockRootClientId;\n\n\t\t\t\t// Remove blocks, but don't update selection, and it will be handled below.\n\t\t\t\tremoveBlocks( selectedBlockClientIds, false );\n\n\t\t\t\t// Update the selection if the original selection has been removed.\n\t\t\t\tconst shouldUpdateSelection =\n\t\t\t\t\toriginallySelectedBlockClientIds.length > 0 &&\n\t\t\t\t\tgetSelectedBlockClientIds().length === 0;\n\n\t\t\t\t// If there's no previous block nor parent block, focus the first block.\n\t\t\t\tif ( ! blockToFocus ) {\n\t\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t\t}\n\n\t\t\t\tupdateFocusAndSelection( blockToFocus, shouldUpdateSelection );\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst blocks = getPasteBlocks(\n\t\t\t\t\tevent,\n\t\t\t\t\tcanUserUseUnfilteredHTML\n\t\t\t\t);\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tconst [ selectedBlockClientId ] = selectedBlockClientIds;\n\n\t\t\t\t\t// If a single block is focused, and the blocks to be posted can\n\t\t\t\t\t// be inserted within the block, then append the pasted blocks\n\t\t\t\t\t// within the focused block. For example, if you have copied a paragraph\n\t\t\t\t\t// block and paste it within a single Group block, this will append\n\t\t\t\t\t// the paragraph block within the Group block.\n\t\t\t\t\tif (\n\t\t\t\t\t\tblocks.every( ( block ) =>\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\tselectedBlockClientId\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\tinsertBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t\tupdateFocusAndSelection( blocks[ 0 ]?.clientId, false );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\tblocks,\n\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t-1\n\t\t\t\t);\n\t\t\t\tupdateFocusAndSelection( blocks[ 0 ]?.clientId, false );\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_data","require","_compose","_store","_useNotifyCopy","_utils","_utils2","useClipboardHandler","selectBlock","registry","useRegistry","getBlockOrder","getBlockRootClientId","getBlocksByClientId","getPreviousBlockClientId","getSelectedBlockClientIds","getSettings","canInsertBlockType","canRemoveBlocks","useSelect","blockEditorStore","flashBlock","removeBlocks","replaceBlocks","insertBlocks","useDispatch","notifyCopy","useNotifyCopy","useRefEffect","node","updateFocusAndSelection","focusClientId","shouldSelectBlock","undefined","focusListItem","getBlocksToUpdate","clientId","selectedBlockClientIds","isUpdatingSelectedBlocks","includes","firstBlockClientId","firstBlockRootClientId","blocksToUpdate","originallySelectedBlockClientIds","handler","event","defaultPrevented","contains","target","ownerDocument","activeElement","listViewRow","closest","dataset","block","length","preventDefault","type","blocks","setClipboardBlocks","_getPreviousBlockClie","blockToFocus","shouldUpdateSelection","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","getPasteBlocks","selectedBlockClientId","every","name","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/list-view/use-clipboard-handler.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useNotifyCopy } from '../../utils/use-notify-copy';\nimport { focusListItem } from './utils';\nimport { getPasteBlocks, setClipboardBlocks } from '../writing-flow/utils';\n\n// This hook borrows from useClipboardHandler in ../writing-flow/use-clipboard-handler.js\n// and adds behaviour for the list view, while skipping partial selection.\nexport default function useClipboardHandler( { selectBlock } ) {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetBlockOrder,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tgetPreviousBlockClientId,\n\t\tgetSelectedBlockClientIds,\n\t\tgetSettings,\n\t\tcanInsertBlockType,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { flashBlock, removeBlocks, replaceBlocks, insertBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction updateFocusAndSelection( focusClientId, shouldSelectBlock ) {\n\t\t\tif ( shouldSelectBlock ) {\n\t\t\t\tselectBlock( undefined, focusClientId, null, null );\n\t\t\t}\n\n\t\t\tfocusListItem( focusClientId, node );\n\t\t}\n\n\t\t// Determine which blocks to update:\n\t\t// If the current (focused) block is part of the block selection, use the whole selection.\n\t\t// If the focused block is not part of the block selection, only update the focused block.\n\t\tfunction getBlocksToUpdate( clientId ) {\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst isUpdatingSelectedBlocks =\n\t\t\t\tselectedBlockClientIds.includes( clientId );\n\t\t\tconst firstBlockClientId = isUpdatingSelectedBlocks\n\t\t\t\t? selectedBlockClientIds[ 0 ]\n\t\t\t\t: clientId;\n\t\t\tconst firstBlockRootClientId =\n\t\t\t\tgetBlockRootClientId( firstBlockClientId );\n\n\t\t\tconst blocksToUpdate = isUpdatingSelectedBlocks\n\t\t\t\t? selectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\treturn {\n\t\t\t\tblocksToUpdate,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\toriginallySelectedBlockClientIds: selectedBlockClientIds,\n\t\t\t};\n\t\t}\n\n\t\tfunction handler( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\t// This was possibly already handled in rich-text/use-paste-handler.js.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only handle events that occur within the list view.\n\t\t\tif ( ! node.contains( event.target.ownerDocument.activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Retrieve the block clientId associated with the focused list view row.\n\t\t\t// This enables applying copy / cut / paste behavior to the focused block,\n\t\t\t// rather than just the blocks that are currently selected.\n\t\t\tconst listViewRow =\n\t\t\t\tevent.target.ownerDocument.activeElement?.closest(\n\t\t\t\t\t'[role=row]'\n\t\t\t\t);\n\t\t\tconst clientId = listViewRow?.dataset?.block;\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\tblocksToUpdate: selectedBlockClientIds,\n\t\t\t\tfirstBlockClientId,\n\t\t\t\tfirstBlockRootClientId,\n\t\t\t\toriginallySelectedBlockClientIds,\n\t\t\t} = getBlocksToUpdate( clientId );\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\tconst blocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\tsetClipboardBlocks( event, blocks, registry );\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// Don't update the selection if the blocks cannot be deleted.\n\t\t\t\tif ( ! canRemoveBlocks( selectedBlockClientIds ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet blockToFocus =\n\t\t\t\t\tgetPreviousBlockClientId( firstBlockClientId ) ??\n\t\t\t\t\t// If the previous block is not found (when the first block is deleted),\n\t\t\t\t\t// fallback to focus the parent block.\n\t\t\t\t\tfirstBlockRootClientId;\n\n\t\t\t\t// Remove blocks, but don't update selection, and it will be handled below.\n\t\t\t\tremoveBlocks( selectedBlockClientIds, false );\n\n\t\t\t\t// Update the selection if the original selection has been removed.\n\t\t\t\tconst shouldUpdateSelection =\n\t\t\t\t\toriginallySelectedBlockClientIds.length > 0 &&\n\t\t\t\t\tgetSelectedBlockClientIds().length === 0;\n\n\t\t\t\t// If there's no previous block nor parent block, focus the first block.\n\t\t\t\tif ( ! blockToFocus ) {\n\t\t\t\t\tblockToFocus = getBlockOrder()[ 0 ];\n\t\t\t\t}\n\n\t\t\t\tupdateFocusAndSelection( blockToFocus, shouldUpdateSelection );\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML:\n\t\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst blocks = getPasteBlocks(\n\t\t\t\t\tevent,\n\t\t\t\t\tcanUserUseUnfilteredHTML\n\t\t\t\t);\n\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tconst [ selectedBlockClientId ] = selectedBlockClientIds;\n\n\t\t\t\t\t// If a single block is focused, and the blocks to be posted can\n\t\t\t\t\t// be inserted within the block, then append the pasted blocks\n\t\t\t\t\t// within the focused block. For example, if you have copied a paragraph\n\t\t\t\t\t// block and paste it within a single Group block, this will append\n\t\t\t\t\t// the paragraph block within the Group block.\n\t\t\t\t\tif (\n\t\t\t\t\t\tblocks.every( ( block ) =>\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\tselectedBlockClientId\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\tinsertBlocks(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t\t);\n\t\t\t\t\t\tupdateFocusAndSelection( blocks[ 0 ]?.clientId, false );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\tblocks,\n\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t-1\n\t\t\t\t);\n\t\t\t\tupdateFocusAndSelection( blocks[ 0 ]?.clientId, false );\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -32,10 +32,10 @@ function useSpacingSizes() {
|
|
|
32
32
|
size: 0
|
|
33
33
|
}, ...customSizes, ...themeSizes, ...defaultSizes];
|
|
34
34
|
|
|
35
|
-
//
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
// Using numeric slugs opts-in to sorting by slug.
|
|
36
|
+
if (sizes.every(({
|
|
37
|
+
slug
|
|
38
|
+
}) => /^[0-9]/.test(slug))) {
|
|
39
39
|
sizes.sort((a, b) => compare(a.slug, b.slug));
|
|
40
40
|
}
|
|
41
41
|
return sizes.length > _utils.RANGE_CONTROL_MAX_SIZE ? [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_i18n","_useSettings","_utils","EMPTY_ARRAY","compare","Intl","Collator","numeric","useSpacingSizes","customSpacingSizes","themeSpacingSizes","defaultSpacingSizes","defaultSpacingSizesEnabled","useSettings","customSizes","themeSizes","defaultSizes","useMemo","sizes","name","__","slug","size","
|
|
1
|
+
{"version":3,"names":["_element","require","_i18n","_useSettings","_utils","EMPTY_ARRAY","compare","Intl","Collator","numeric","useSpacingSizes","customSpacingSizes","themeSpacingSizes","defaultSpacingSizes","defaultSpacingSizesEnabled","useSettings","customSizes","themeSizes","defaultSizes","useMemo","sizes","name","__","slug","size","every","test","sort","a","b","length","RANGE_CONTROL_MAX_SIZE","undefined"],"sources":["@wordpress/block-editor/src/components/spacing-sizes-control/hooks/use-spacing-sizes.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useSettings } from '../../use-settings';\nimport { RANGE_CONTROL_MAX_SIZE } from '../utils';\n\nconst EMPTY_ARRAY = [];\n\nconst compare = new Intl.Collator( 'und', { numeric: true } ).compare;\n\nexport default function useSpacingSizes() {\n\tconst [\n\t\tcustomSpacingSizes,\n\t\tthemeSpacingSizes,\n\t\tdefaultSpacingSizes,\n\t\tdefaultSpacingSizesEnabled,\n\t] = useSettings(\n\t\t'spacing.spacingSizes.custom',\n\t\t'spacing.spacingSizes.theme',\n\t\t'spacing.spacingSizes.default',\n\t\t'spacing.defaultSpacingSizes'\n\t);\n\n\tconst customSizes = customSpacingSizes ?? EMPTY_ARRAY;\n\n\tconst themeSizes = themeSpacingSizes ?? EMPTY_ARRAY;\n\n\tconst defaultSizes =\n\t\tdefaultSpacingSizes && defaultSpacingSizesEnabled !== false\n\t\t\t? defaultSpacingSizes\n\t\t\t: EMPTY_ARRAY;\n\n\treturn useMemo( () => {\n\t\tconst sizes = [\n\t\t\t{ name: __( 'None' ), slug: '0', size: 0 },\n\t\t\t...customSizes,\n\t\t\t...themeSizes,\n\t\t\t...defaultSizes,\n\t\t];\n\n\t\t// Using numeric slugs opts-in to sorting by slug.\n\t\tif ( sizes.every( ( { slug } ) => /^[0-9]/.test( slug ) ) ) {\n\t\t\tsizes.sort( ( a, b ) => compare( a.slug, b.slug ) );\n\t\t}\n\n\t\treturn sizes.length > RANGE_CONTROL_MAX_SIZE\n\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: __( 'Default' ),\n\t\t\t\t\t\tslug: 'default',\n\t\t\t\t\t\tsize: undefined,\n\t\t\t\t\t},\n\t\t\t\t\t...sizes,\n\t\t\t ]\n\t\t\t: sizes;\n\t}, [ customSizes, themeSizes, defaultSizes ] );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAIA,MAAMI,WAAW,GAAG,EAAE;AAEtB,MAAMC,OAAO,GAAG,IAAIC,IAAI,CAACC,QAAQ,CAAE,KAAK,EAAE;EAAEC,OAAO,EAAE;AAAK,CAAE,CAAC,CAACH,OAAO;AAEtD,SAASI,eAAeA,CAAA,EAAG;EACzC,MAAM,CACLC,kBAAkB,EAClBC,iBAAiB,EACjBC,mBAAmB,EACnBC,0BAA0B,CAC1B,GAAG,IAAAC,wBAAW,EACd,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,EAC9B,6BACD,CAAC;EAED,MAAMC,WAAW,GAAGL,kBAAkB,aAAlBA,kBAAkB,cAAlBA,kBAAkB,GAAIN,WAAW;EAErD,MAAMY,UAAU,GAAGL,iBAAiB,aAAjBA,iBAAiB,cAAjBA,iBAAiB,GAAIP,WAAW;EAEnD,MAAMa,YAAY,GACjBL,mBAAmB,IAAIC,0BAA0B,KAAK,KAAK,GACxDD,mBAAmB,GACnBR,WAAW;EAEf,OAAO,IAAAc,gBAAO,EAAE,MAAM;IACrB,MAAMC,KAAK,GAAG,CACb;MAAEC,IAAI,EAAE,IAAAC,QAAE,EAAE,MAAO,CAAC;MAAEC,IAAI,EAAE,GAAG;MAAEC,IAAI,EAAE;IAAE,CAAC,EAC1C,GAAGR,WAAW,EACd,GAAGC,UAAU,EACb,GAAGC,YAAY,CACf;;IAED;IACA,IAAKE,KAAK,CAACK,KAAK,CAAE,CAAE;MAAEF;IAAK,CAAC,KAAM,QAAQ,CAACG,IAAI,CAAEH,IAAK,CAAE,CAAC,EAAG;MAC3DH,KAAK,CAACO,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMvB,OAAO,CAAEsB,CAAC,CAACL,IAAI,EAAEM,CAAC,CAACN,IAAK,CAAE,CAAC;IACpD;IAEA,OAAOH,KAAK,CAACU,MAAM,GAAGC,6BAAsB,GACzC,CACA;MACCV,IAAI,EAAE,IAAAC,QAAE,EAAE,SAAU,CAAC;MACrBC,IAAI,EAAE,SAAS;MACfC,IAAI,EAAEQ;IACP,CAAC,EACD,GAAGZ,KAAK,CACP,GACDA,KAAK;EACT,CAAC,EAAE,CAAEJ,WAAW,EAAEC,UAAU,EAAEC,YAAY,CAAG,CAAC;AAC/C","ignoreList":[]}
|
|
@@ -57,7 +57,7 @@ const useTransformCommands = () => {
|
|
|
57
57
|
blocks: selectedBlocks,
|
|
58
58
|
clientIds: selectedBlockClientIds,
|
|
59
59
|
possibleBlockTransformations: getBlockTransformItems(selectedBlocks, rootClientId),
|
|
60
|
-
canRemove: canRemoveBlocks(selectedBlockClientIds
|
|
60
|
+
canRemove: canRemoveBlocks(selectedBlockClientIds),
|
|
61
61
|
invalidSelection: false
|
|
62
62
|
};
|
|
63
63
|
}, []);
|
|
@@ -149,7 +149,7 @@ const useActionsCommands = () => {
|
|
|
149
149
|
};
|
|
150
150
|
}
|
|
151
151
|
const rootClientId = getBlockRootClientId(clientIds[0]);
|
|
152
|
-
const canMove = canMoveBlocks(clientIds
|
|
152
|
+
const canMove = canMoveBlocks(clientIds) && getBlockCount(rootClientId) !== 1;
|
|
153
153
|
const commands = [];
|
|
154
154
|
if (canMove) {
|
|
155
155
|
commands.push({
|
|
@@ -247,7 +247,7 @@ const useQuickActionsCommands = () => {
|
|
|
247
247
|
const canDuplicate = blocks.every(block => {
|
|
248
248
|
return !!block && (0, _blocks.hasBlockSupport)(block.name, 'multiple', true) && canInsertBlockType(block.name, rootClientId);
|
|
249
249
|
});
|
|
250
|
-
const canRemove = canRemoveBlocks(clientIds
|
|
250
|
+
const canRemove = canRemoveBlocks(clientIds);
|
|
251
251
|
const commands = [];
|
|
252
252
|
if (canDuplicate) {
|
|
253
253
|
commands.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_blocks","_data","_commands","_icons","_blockIcon","_interopRequireDefault","_store","_jsxRuntime","useTransformCommands","replaceBlocks","multiSelect","useDispatch","blockEditorStore","blocks","clientIds","canRemove","possibleBlockTransformations","invalidSelection","useSelect","select","getBlockRootClientId","getBlockTransformItems","getSelectedBlockClientIds","getBlocksByClientId","canRemoveBlocks","selectedBlockClientIds","selectedBlocks","filter","block","length","rootClientId","isLoading","commands","isTemplate","isTemplatePart","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","switchToBlockType","hasPossibleBlockTransformations","map","transformation","title","icon","replace","label","sprintf","__","jsx","default","callback","close","exports","useActionsCommands","canMoveBlocks","getBlockCount","setBlockMovingClientId","setNavigationMode","selectBlock","canMove","push","move","command","useQuickActionsCommands","isUngroupable","isGroupable","_isUngroupable","_isGroupable","canInsertBlockType","getDefaultBlockName","getGroupingBlockName","blocksStore","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","onGroup","groupingBlockName","onUngroup","innerBlocks","canInsertDefaultBlock","canDuplicate","every","hasBlockSupport","copy","Array","isArray","add","group","ungroup","remove","useBlockCommands","useCommandLoader","hook","context"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\ttrash as remove,\n\tplus as add,\n\tgroup,\n\tungroup,\n\tmoveTo as move,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nexport const useTransformCommands = () => {\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst {\n\t\tblocks,\n\t\tclientIds,\n\t\tcanRemove,\n\t\tpossibleBlockTransformations,\n\t\tinvalidSelection,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockTransformItems,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tgetBlocksByClientId,\n\t\t\tcanRemoveBlocks,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlocks = getBlocksByClientId( selectedBlockClientIds );\n\n\t\t// selectedBlocks can have `null`s when something tries to call `selectBlock` with an inexistent clientId.\n\t\t// These nulls will cause fatal errors down the line.\n\t\t// In order to prevent discrepancies between selectedBlockClientIds and selectedBlocks, we effectively treat the entire selection as invalid.\n\t\t// @see https://github.com/WordPress/gutenberg/pull/59410#issuecomment-2006304536\n\t\tif ( selectedBlocks.filter( ( block ) => ! block ).length > 0 ) {\n\t\t\treturn {\n\t\t\t\tinvalidSelection: true,\n\t\t\t};\n\t\t}\n\n\t\tconst rootClientId = getBlockRootClientId(\n\t\t\tselectedBlockClientIds[ 0 ]\n\t\t);\n\t\treturn {\n\t\t\tblocks: selectedBlocks,\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\tselectedBlocks,\n\t\t\t\trootClientId\n\t\t\t),\n\t\t\tcanRemove: canRemoveBlocks( selectedBlockClientIds, rootClientId ),\n\t\t\tinvalidSelection: false,\n\t\t};\n\t}, [] );\n\n\tif ( invalidSelection ) {\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tcommands: [],\n\t\t};\n\t}\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\tif (\n\t\t! clientIds ||\n\t\tclientIds.length < 1 ||\n\t\t! hasPossibleBlockTransformations\n\t) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst commands = possibleBlockTransformations.map( ( transformation ) => {\n\t\tconst { name, title, icon } = transformation;\n\t\treturn {\n\t\t\tname: 'core/block-editor/transform-to-' + name.replace( '/', '-' ),\n\t\t\t// translators: %s: block title/name.\n\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\ticon: <BlockIcon icon={ icon } />,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tonBlockTransform( name );\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\n};\n\nconst useActionsCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\n\tconst { getBlockRootClientId, canMoveBlocks, getBlockCount } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst { setBlockMovingClientId, setNavigationMode, selectBlock } =\n\t\tuseDispatch( blockEditorStore );\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\n\tconst canMove =\n\t\tcanMoveBlocks( clientIds, rootClientId ) &&\n\t\tgetBlockCount( rootClientId ) !== 1;\n\n\tconst commands = [];\n\n\tif ( canMove ) {\n\t\tcommands.push( {\n\t\t\tname: 'move-to',\n\t\t\tlabel: __( 'Move to' ),\n\t\t\tcallback: () => {\n\t\t\t\tsetNavigationMode( true );\n\t\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t\t},\n\t\t\ticon: move,\n\t\t} );\n\t}\n\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nconst useQuickActionsCommands = () => {\n\tconst { clientIds, isUngroupable, isGroupable } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable,\n\t\t\tisGroupable: _isGroupable,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable(),\n\t\t\tisGroupable: _isGroupable(),\n\t\t};\n\t}, [] );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst onGroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\tif ( ! newBlocks ) {\n\t\t\treturn;\n\t\t}\n\t\treplaceBlocks( clientIds, newBlocks );\n\t};\n\tconst onUngroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\treplaceBlocks( clientIds, innerBlocks );\n\t};\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\n\tconst commands = [];\n\n\tif ( canDuplicate ) {\n\t\tcommands.push( {\n\t\t\tname: 'duplicate',\n\t\t\tlabel: __( 'Duplicate' ),\n\t\t\tcallback: () => duplicateBlocks( clientIds, true ),\n\t\t\ticon: copy,\n\t\t} );\n\t}\n\n\tif ( canInsertDefaultBlock ) {\n\t\tcommands.push(\n\t\t\t{\n\t\t\t\tname: 'add-before',\n\t\t\t\tlabel: __( 'Add before' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertBeforeBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'add-after',\n\t\t\t\tlabel: __( 'Add after' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t}\n\t\t);\n\t}\n\n\tif ( isGroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'Group',\n\t\t\tlabel: __( 'Group' ),\n\t\t\tcallback: onGroup,\n\t\t\ticon: group,\n\t\t} );\n\t}\n\n\tif ( isUngroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'ungroup',\n\t\t\tlabel: __( 'Ungroup' ),\n\t\t\tcallback: onUngroup,\n\t\t\ticon: ungroup,\n\t\t} );\n\t}\n\n\tif ( canRemove ) {\n\t\tcommands.push( {\n\t\t\tname: 'remove',\n\t\t\tlabel: __( 'Delete' ),\n\t\t\tcallback: () => removeBlocks( clientIds, true ),\n\t\t\ticon: remove,\n\t\t} );\n\t}\n\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: useTransformCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockActions',\n\t\thook: useActionsCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockQuickActions',\n\t\thook: useQuickActionsCommands,\n\t\tcontext: 'block-selection-edit',\n\t} );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_i18n","require","_blocks","_data","_commands","_icons","_blockIcon","_interopRequireDefault","_store","_jsxRuntime","useTransformCommands","replaceBlocks","multiSelect","useDispatch","blockEditorStore","blocks","clientIds","canRemove","possibleBlockTransformations","invalidSelection","useSelect","select","getBlockRootClientId","getBlockTransformItems","getSelectedBlockClientIds","getBlocksByClientId","canRemoveBlocks","selectedBlockClientIds","selectedBlocks","filter","block","length","rootClientId","isLoading","commands","isTemplate","isTemplatePart","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","switchToBlockType","hasPossibleBlockTransformations","map","transformation","title","icon","replace","label","sprintf","__","jsx","default","callback","close","exports","useActionsCommands","canMoveBlocks","getBlockCount","setBlockMovingClientId","setNavigationMode","selectBlock","canMove","push","move","command","useQuickActionsCommands","isUngroupable","isGroupable","_isUngroupable","_isGroupable","canInsertBlockType","getDefaultBlockName","getGroupingBlockName","blocksStore","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","onGroup","groupingBlockName","onUngroup","innerBlocks","canInsertDefaultBlock","canDuplicate","every","hasBlockSupport","copy","Array","isArray","add","group","ungroup","remove","useBlockCommands","useCommandLoader","hook","context"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\ttrash as remove,\n\tplus as add,\n\tgroup,\n\tungroup,\n\tmoveTo as move,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nexport const useTransformCommands = () => {\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst {\n\t\tblocks,\n\t\tclientIds,\n\t\tcanRemove,\n\t\tpossibleBlockTransformations,\n\t\tinvalidSelection,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockRootClientId,\n\t\t\tgetBlockTransformItems,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tgetBlocksByClientId,\n\t\t\tcanRemoveBlocks,\n\t\t} = select( blockEditorStore );\n\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlocks = getBlocksByClientId( selectedBlockClientIds );\n\n\t\t// selectedBlocks can have `null`s when something tries to call `selectBlock` with an inexistent clientId.\n\t\t// These nulls will cause fatal errors down the line.\n\t\t// In order to prevent discrepancies between selectedBlockClientIds and selectedBlocks, we effectively treat the entire selection as invalid.\n\t\t// @see https://github.com/WordPress/gutenberg/pull/59410#issuecomment-2006304536\n\t\tif ( selectedBlocks.filter( ( block ) => ! block ).length > 0 ) {\n\t\t\treturn {\n\t\t\t\tinvalidSelection: true,\n\t\t\t};\n\t\t}\n\n\t\tconst rootClientId = getBlockRootClientId(\n\t\t\tselectedBlockClientIds[ 0 ]\n\t\t);\n\t\treturn {\n\t\t\tblocks: selectedBlocks,\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\tselectedBlocks,\n\t\t\t\trootClientId\n\t\t\t),\n\t\t\tcanRemove: canRemoveBlocks( selectedBlockClientIds ),\n\t\t\tinvalidSelection: false,\n\t\t};\n\t}, [] );\n\n\tif ( invalidSelection ) {\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tcommands: [],\n\t\t};\n\t}\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\tif (\n\t\t! clientIds ||\n\t\tclientIds.length < 1 ||\n\t\t! hasPossibleBlockTransformations\n\t) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst commands = possibleBlockTransformations.map( ( transformation ) => {\n\t\tconst { name, title, icon } = transformation;\n\t\treturn {\n\t\t\tname: 'core/block-editor/transform-to-' + name.replace( '/', '-' ),\n\t\t\t// translators: %s: block title/name.\n\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\ticon: <BlockIcon icon={ icon } />,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tonBlockTransform( name );\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\n};\n\nconst useActionsCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\n\tconst { getBlockRootClientId, canMoveBlocks, getBlockCount } =\n\t\tuseSelect( blockEditorStore );\n\n\tconst { setBlockMovingClientId, setNavigationMode, selectBlock } =\n\t\tuseDispatch( blockEditorStore );\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\n\tconst canMove =\n\t\tcanMoveBlocks( clientIds ) && getBlockCount( rootClientId ) !== 1;\n\n\tconst commands = [];\n\n\tif ( canMove ) {\n\t\tcommands.push( {\n\t\t\tname: 'move-to',\n\t\t\tlabel: __( 'Move to' ),\n\t\t\tcallback: () => {\n\t\t\t\tsetNavigationMode( true );\n\t\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t\t},\n\t\t\ticon: move,\n\t\t} );\n\t}\n\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nconst useQuickActionsCommands = () => {\n\tconst { clientIds, isUngroupable, isGroupable } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable,\n\t\t\tisGroupable: _isGroupable,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable(),\n\t\t\tisGroupable: _isGroupable(),\n\t\t};\n\t}, [] );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst onGroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\tif ( ! newBlocks ) {\n\t\t\treturn;\n\t\t}\n\t\treplaceBlocks( clientIds, newBlocks );\n\t};\n\tconst onUngroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\treplaceBlocks( clientIds, innerBlocks );\n\t};\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\tconst canRemove = canRemoveBlocks( clientIds );\n\n\tconst commands = [];\n\n\tif ( canDuplicate ) {\n\t\tcommands.push( {\n\t\t\tname: 'duplicate',\n\t\t\tlabel: __( 'Duplicate' ),\n\t\t\tcallback: () => duplicateBlocks( clientIds, true ),\n\t\t\ticon: copy,\n\t\t} );\n\t}\n\n\tif ( canInsertDefaultBlock ) {\n\t\tcommands.push(\n\t\t\t{\n\t\t\t\tname: 'add-before',\n\t\t\t\tlabel: __( 'Add before' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertBeforeBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'add-after',\n\t\t\t\tlabel: __( 'Add after' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t}\n\t\t);\n\t}\n\n\tif ( isGroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'Group',\n\t\t\tlabel: __( 'Group' ),\n\t\t\tcallback: onGroup,\n\t\t\ticon: group,\n\t\t} );\n\t}\n\n\tif ( isUngroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'ungroup',\n\t\t\tlabel: __( 'Ungroup' ),\n\t\t\tcallback: onUngroup,\n\t\t\ticon: ungroup,\n\t\t} );\n\t}\n\n\tif ( canRemove ) {\n\t\tcommands.push( {\n\t\t\tname: 'remove',\n\t\t\tlabel: __( 'Delete' ),\n\t\t\tcallback: () => removeBlocks( clientIds, true ),\n\t\t\ticon: remove,\n\t\t} );\n\t}\n\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: useTransformCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockActions',\n\t\thook: useActionsCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockQuickActions',\n\t\thook: useQuickActionsCommands,\n\t\tcontext: 'block-selection-edit',\n\t} );\n};\n"],"mappings":"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","ignoreList":[]}
|