@wordpress/block-editor 14.21.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/background-image-control/index.js +0 -4
  3. package/build/components/background-image-control/index.js.map +1 -1
  4. package/build/components/block-list/block-invalid-warning.native.js +1 -1
  5. package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
  6. package/build/components/block-list/use-block-props/index.js +1 -3
  7. package/build/components/block-list/use-block-props/index.js.map +1 -1
  8. package/build/components/block-list/use-block-props/use-is-hovered.js +8 -25
  9. package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  10. package/build/components/block-lock/modal.js +1 -0
  11. package/build/components/block-lock/modal.js.map +1 -1
  12. package/build/components/block-settings-menu/block-settings-dropdown.js +7 -4
  13. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  14. package/build/components/child-layout-control/index.js +53 -34
  15. package/build/components/child-layout-control/index.js.map +1 -1
  16. package/build/components/image-size-control/index.js +1 -1
  17. package/build/components/image-size-control/index.js.map +1 -1
  18. package/build/components/link-control/search-input.js +4 -2
  19. package/build/components/link-control/search-input.js.map +1 -1
  20. package/build/components/list-view/block.js +5 -4
  21. package/build/components/list-view/block.js.map +1 -1
  22. package/build/components/list-view/use-list-view-images.js +62 -30
  23. package/build/components/list-view/use-list-view-images.js.map +1 -1
  24. package/build/components/use-paste-styles/index.js +2 -2
  25. package/build/components/use-paste-styles/index.js.map +1 -1
  26. package/build/layouts/grid.js +2 -0
  27. package/build/layouts/grid.js.map +1 -1
  28. package/build/store/actions.js +7 -6
  29. package/build/store/actions.js.map +1 -1
  30. package/build/store/reducer.js +0 -18
  31. package/build/store/reducer.js.map +1 -1
  32. package/build/store/selectors.js +13 -9
  33. package/build/store/selectors.js.map +1 -1
  34. package/build/utils/use-notify-copy.js +2 -2
  35. package/build/utils/use-notify-copy.js.map +1 -1
  36. package/build-module/components/background-image-control/index.js +0 -4
  37. package/build-module/components/background-image-control/index.js.map +1 -1
  38. package/build-module/components/block-list/block-invalid-warning.native.js +1 -1
  39. package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
  40. package/build-module/components/block-list/use-block-props/index.js +1 -3
  41. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  42. package/build-module/components/block-list/use-block-props/use-is-hovered.js +8 -26
  43. package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
  44. package/build-module/components/block-lock/modal.js +1 -0
  45. package/build-module/components/block-lock/modal.js.map +1 -1
  46. package/build-module/components/block-settings-menu/block-settings-dropdown.js +7 -4
  47. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  48. package/build-module/components/child-layout-control/index.js +54 -35
  49. package/build-module/components/child-layout-control/index.js.map +1 -1
  50. package/build-module/components/image-size-control/index.js +1 -1
  51. package/build-module/components/image-size-control/index.js.map +1 -1
  52. package/build-module/components/link-control/search-input.js +4 -2
  53. package/build-module/components/link-control/search-input.js.map +1 -1
  54. package/build-module/components/list-view/block.js +6 -5
  55. package/build-module/components/list-view/block.js.map +1 -1
  56. package/build-module/components/list-view/use-list-view-images.js +62 -30
  57. package/build-module/components/list-view/use-list-view-images.js.map +1 -1
  58. package/build-module/components/use-paste-styles/index.js +2 -2
  59. package/build-module/components/use-paste-styles/index.js.map +1 -1
  60. package/build-module/layouts/grid.js +2 -0
  61. package/build-module/layouts/grid.js.map +1 -1
  62. package/build-module/store/actions.js +7 -6
  63. package/build-module/store/actions.js.map +1 -1
  64. package/build-module/store/reducer.js +0 -17
  65. package/build-module/store/reducer.js.map +1 -1
  66. package/build-module/store/selectors.js +12 -9
  67. package/build-module/store/selectors.js.map +1 -1
  68. package/build-module/utils/use-notify-copy.js +2 -2
  69. package/build-module/utils/use-notify-copy.js.map +1 -1
  70. package/build-style/style-rtl.css +48 -19
  71. package/build-style/style.css +48 -19
  72. package/package.json +34 -34
  73. package/src/components/background-image-control/index.js +1 -8
  74. package/src/components/background-image-control/style.scss +3 -7
  75. package/src/components/block-list/block-invalid-warning.native.js +1 -1
  76. package/src/components/block-list/use-block-props/index.js +1 -1
  77. package/src/components/block-list/use-block-props/use-is-hovered.js +12 -26
  78. package/src/components/block-lock/modal.js +1 -0
  79. package/src/components/block-lock/style.scss +9 -5
  80. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
  81. package/src/components/block-variation-transforms/style.scss +7 -0
  82. package/src/components/border-radius-control/style.scss +5 -0
  83. package/src/components/child-layout-control/index.js +66 -42
  84. package/src/components/colors-gradients/style.scss +5 -0
  85. package/src/components/image-size-control/index.js +1 -1
  86. package/src/components/inserter-list-item/style.scss +9 -6
  87. package/src/components/link-control/search-input.js +9 -2
  88. package/src/components/link-control/style.scss +7 -0
  89. package/src/components/link-control/test/index.js +44 -44
  90. package/src/components/list-view/block.js +9 -5
  91. package/src/components/list-view/use-list-view-images.js +57 -36
  92. package/src/components/media-replace-flow/test/index.js +1 -1
  93. package/src/components/spacing-sizes-control/style.scss +5 -0
  94. package/src/components/use-paste-styles/index.js +2 -2
  95. package/src/hooks/layout.scss +8 -0
  96. package/src/layouts/grid.js +2 -2
  97. package/src/store/actions.js +7 -6
  98. package/src/store/reducer.js +0 -18
  99. package/src/store/selectors.js +29 -31
  100. package/src/utils/use-notify-copy.js +2 -2
  101. package/tsconfig.tsbuildinfo +1 -1
@@ -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","_usePasteStyles","_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","pasteStyles","usePasteStyles","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","blocks","canDuplicate","every","blockToUpdate","name","updatedBlocks","newlySelectedBlocks","at","blockClientIds","isShallowEqual","blockParents","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","filter","Boolean","join","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';\nimport usePasteStyles from '../use-paste-styles';\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 pasteStyles = usePasteStyles();\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/paste-styles', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate } = getBlocksToUpdate();\n\t\t\tconst blocks = getBlocksByClientId( blocksToUpdate );\n\n\t\t\tpasteStyles( blocks );\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 = getBlockPropertiesDescription(\n\t\tblockInformation,\n\t\tisLocked\n\t);\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{ [\n\t\t\t\t\t\t\t\tblockPositionDescription,\n\t\t\t\t\t\t\t\tblockPropertiesDescription,\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t\t\t\t.join( ' ' ) }\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":"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","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","_usePasteStyles","_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","debouncedToggleBlockHighlight","useDebounce","canInsertBlockType","getSelectedBlockClientIds","getPreviousBlockClientId","getBlockRootClientId","getBlockOrder","getBlockParents","getBlocksByClientId","canRemoveBlocks","isGroupable","useSelect","getGroupingBlockName","blocksStore","blockInformation","useBlockDisplayInformation","pasteStyles","usePasteStyles","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","blocks","canDuplicate","every","blockToUpdate","name","updatedBlocks","newlySelectedBlocks","at","blockClientIds","isShallowEqual","blockParents","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","filter","Boolean","join","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, useDebounce } 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';\nimport usePasteStyles from '../use-paste-styles';\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\tconst debouncedToggleBlockHighlight = useDebounce(\n\t\ttoggleBlockHighlight,\n\t\t50\n\t);\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 pasteStyles = usePasteStyles();\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/paste-styles', event ) ) {\n\t\t\tevent.preventDefault();\n\n\t\t\tconst { blocksToUpdate } = getBlocksToUpdate();\n\t\t\tconst blocks = getBlocksByClientId( blocksToUpdate );\n\n\t\t\tpasteStyles( blocks );\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\tdebouncedToggleBlockHighlight( clientId, true );\n\t}, [ clientId, setIsHovered, debouncedToggleBlockHighlight ] );\n\tconst onMouseLeave = useCallback( () => {\n\t\tsetIsHovered( false );\n\t\tdebouncedToggleBlockHighlight( clientId, false );\n\t}, [ clientId, setIsHovered, debouncedToggleBlockHighlight ] );\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 = getBlockPropertiesDescription(\n\t\tblockInformation,\n\t\tisLocked\n\t);\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{ [\n\t\t\t\t\t\t\t\tblockPositionDescription,\n\t\t\t\t\t\t\t\tblockPropertiesDescription,\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t\t\t\t.join( ' ' ) }\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":"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","ignoreList":[]}
@@ -17,40 +17,73 @@ var _store = require("../../store");
17
17
 
18
18
  // Maximum number of images to display in a list view row.
19
19
  const MAX_IMAGES = 3;
20
- function getImage(block) {
21
- if (block.name !== 'core/image') {
22
- return;
23
- }
24
- if (block.attributes?.url) {
25
- return {
26
- url: block.attributes.url,
27
- alt: block.attributes.alt,
28
- clientId: block.clientId
29
- };
30
- }
31
- }
32
- function getImagesFromGallery(block) {
33
- if (block.name !== 'core/gallery' || !block.innerBlocks) {
34
- return [];
35
- }
36
- const images = [];
37
- for (const innerBlock of block.innerBlocks) {
38
- const img = getImage(innerBlock);
39
- if (img) {
40
- images.push(img);
20
+ const IMAGE_GETTERS = {
21
+ 'core/image': ({
22
+ clientId,
23
+ attributes
24
+ }) => {
25
+ if (attributes.url) {
26
+ return {
27
+ url: attributes.url,
28
+ alt: attributes.alt || '',
29
+ clientId
30
+ };
41
31
  }
42
- if (images.length >= MAX_IMAGES) {
32
+ },
33
+ 'core/cover': ({
34
+ clientId,
35
+ attributes
36
+ }) => {
37
+ if (attributes.backgroundType === 'image' && attributes.url) {
38
+ return {
39
+ url: attributes.url,
40
+ alt: attributes.alt || '',
41
+ clientId
42
+ };
43
+ }
44
+ },
45
+ 'core/media-text': ({
46
+ clientId,
47
+ attributes
48
+ }) => {
49
+ if (attributes.mediaType === 'image' && attributes.mediaUrl) {
50
+ return {
51
+ url: attributes.mediaUrl,
52
+ alt: attributes.mediaAlt || '',
53
+ clientId
54
+ };
55
+ }
56
+ },
57
+ 'core/gallery': ({
58
+ innerBlocks
59
+ }) => {
60
+ const images = [];
61
+ const getValues = !!innerBlocks?.length ? IMAGE_GETTERS[innerBlocks[0].name] : undefined;
62
+ if (!getValues) {
43
63
  return images;
44
64
  }
65
+ for (const innerBlock of innerBlocks) {
66
+ const img = getValues(innerBlock);
67
+ if (img) {
68
+ images.push(img);
69
+ }
70
+ if (images.length >= MAX_IMAGES) {
71
+ return images;
72
+ }
73
+ }
74
+ return images;
45
75
  }
46
- return images;
47
- }
76
+ };
48
77
  function getImagesFromBlock(block, isExpanded) {
49
- const img = getImage(block);
50
- if (img) {
51
- return [img];
78
+ const getImages = IMAGE_GETTERS[block.name];
79
+ const images = !!getImages ? getImages(block) : undefined;
80
+ if (!images) {
81
+ return [];
82
+ }
83
+ if (!Array.isArray(images)) {
84
+ return [images];
52
85
  }
53
- return isExpanded ? [] : getImagesFromGallery(block);
86
+ return isExpanded ? [] : images;
54
87
  }
55
88
 
56
89
  /**
@@ -72,9 +105,8 @@ function useListViewImages({
72
105
  const {
73
106
  block
74
107
  } = (0, _data.useSelect)(select => {
75
- const _block = select(_store.store).getBlock(clientId);
76
108
  return {
77
- block: _block
109
+ block: select(_store.store).getBlock(clientId)
78
110
  };
79
111
  }, [clientId]);
80
112
  const images = (0, _element.useMemo)(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_data","_store","MAX_IMAGES","getImage","block","name","attributes","url","alt","clientId","getImagesFromGallery","innerBlocks","images","innerBlock","img","push","length","getImagesFromBlock","isExpanded","useListViewImages","useSelect","select","_block","blockEditorStore","getBlock","useMemo"],"sources":["@wordpress/block-editor/src/components/list-view/use-list-view-images.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n// Maximum number of images to display in a list view row.\nconst MAX_IMAGES = 3;\n\nfunction getImage( block ) {\n\tif ( block.name !== 'core/image' ) {\n\t\treturn;\n\t}\n\n\tif ( block.attributes?.url ) {\n\t\treturn {\n\t\t\turl: block.attributes.url,\n\t\t\talt: block.attributes.alt,\n\t\t\tclientId: block.clientId,\n\t\t};\n\t}\n}\n\nfunction getImagesFromGallery( block ) {\n\tif ( block.name !== 'core/gallery' || ! block.innerBlocks ) {\n\t\treturn [];\n\t}\n\n\tconst images = [];\n\n\tfor ( const innerBlock of block.innerBlocks ) {\n\t\tconst img = getImage( innerBlock );\n\t\tif ( img ) {\n\t\t\timages.push( img );\n\t\t}\n\t\tif ( images.length >= MAX_IMAGES ) {\n\t\t\treturn images;\n\t\t}\n\t}\n\n\treturn images;\n}\n\nfunction getImagesFromBlock( block, isExpanded ) {\n\tconst img = getImage( block );\n\tif ( img ) {\n\t\treturn [ img ];\n\t}\n\treturn isExpanded ? [] : getImagesFromGallery( block );\n}\n\n/**\n * Get a block's preview images for display within a list view row.\n *\n * TODO: Currently only supports images from the core/image and core/gallery\n * blocks. This should be expanded to support other blocks that have images,\n * potentially via an API that blocks can opt into / provide their own logic.\n *\n * @param {Object} props Hook properties.\n * @param {string} props.clientId The block's clientId.\n * @param {boolean} props.isExpanded Whether or not the block is expanded in the list view.\n * @return {Array} Images.\n */\nexport default function useListViewImages( { clientId, isExpanded } ) {\n\tconst { block } = useSelect(\n\t\t( select ) => {\n\t\t\tconst _block = select( blockEditorStore ).getBlock( clientId );\n\t\t\treturn { block: _block };\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst images = useMemo( () => {\n\t\treturn getImagesFromBlock( block, isExpanded );\n\t}, [ block, isExpanded ] );\n\n\treturn images;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA,MAAMG,UAAU,GAAG,CAAC;AAEpB,SAASC,QAAQA,CAAEC,KAAK,EAAG;EAC1B,IAAKA,KAAK,CAACC,IAAI,KAAK,YAAY,EAAG;IAClC;EACD;EAEA,IAAKD,KAAK,CAACE,UAAU,EAAEC,GAAG,EAAG;IAC5B,OAAO;MACNA,GAAG,EAAEH,KAAK,CAACE,UAAU,CAACC,GAAG;MACzBC,GAAG,EAAEJ,KAAK,CAACE,UAAU,CAACE,GAAG;MACzBC,QAAQ,EAAEL,KAAK,CAACK;IACjB,CAAC;EACF;AACD;AAEA,SAASC,oBAAoBA,CAAEN,KAAK,EAAG;EACtC,IAAKA,KAAK,CAACC,IAAI,KAAK,cAAc,IAAI,CAAED,KAAK,CAACO,WAAW,EAAG;IAC3D,OAAO,EAAE;EACV;EAEA,MAAMC,MAAM,GAAG,EAAE;EAEjB,KAAM,MAAMC,UAAU,IAAIT,KAAK,CAACO,WAAW,EAAG;IAC7C,MAAMG,GAAG,GAAGX,QAAQ,CAAEU,UAAW,CAAC;IAClC,IAAKC,GAAG,EAAG;MACVF,MAAM,CAACG,IAAI,CAAED,GAAI,CAAC;IACnB;IACA,IAAKF,MAAM,CAACI,MAAM,IAAId,UAAU,EAAG;MAClC,OAAOU,MAAM;IACd;EACD;EAEA,OAAOA,MAAM;AACd;AAEA,SAASK,kBAAkBA,CAAEb,KAAK,EAAEc,UAAU,EAAG;EAChD,MAAMJ,GAAG,GAAGX,QAAQ,CAAEC,KAAM,CAAC;EAC7B,IAAKU,GAAG,EAAG;IACV,OAAO,CAAEA,GAAG,CAAE;EACf;EACA,OAAOI,UAAU,GAAG,EAAE,GAAGR,oBAAoB,CAAEN,KAAM,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASe,iBAAiBA,CAAE;EAAEV,QAAQ;EAAES;AAAW,CAAC,EAAG;EACrE,MAAM;IAAEd;EAAM,CAAC,GAAG,IAAAgB,eAAS,EACxBC,MAAM,IAAM;IACb,MAAMC,MAAM,GAAGD,MAAM,CAAEE,YAAiB,CAAC,CAACC,QAAQ,CAAEf,QAAS,CAAC;IAC9D,OAAO;MAAEL,KAAK,EAAEkB;IAAO,CAAC;EACzB,CAAC,EACD,CAAEb,QAAQ,CACX,CAAC;EAED,MAAMG,MAAM,GAAG,IAAAa,gBAAO,EAAE,MAAM;IAC7B,OAAOR,kBAAkB,CAAEb,KAAK,EAAEc,UAAW,CAAC;EAC/C,CAAC,EAAE,CAAEd,KAAK,EAAEc,UAAU,CAAG,CAAC;EAE1B,OAAON,MAAM;AACd","ignoreList":[]}
1
+ {"version":3,"names":["_element","require","_data","_store","MAX_IMAGES","IMAGE_GETTERS","core/image","clientId","attributes","url","alt","core/cover","backgroundType","core/media-text","mediaType","mediaUrl","mediaAlt","core/gallery","innerBlocks","images","getValues","length","name","undefined","innerBlock","img","push","getImagesFromBlock","block","isExpanded","getImages","Array","isArray","useListViewImages","useSelect","select","blockEditorStore","getBlock","useMemo"],"sources":["@wordpress/block-editor/src/components/list-view/use-list-view-images.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n// Maximum number of images to display in a list view row.\nconst MAX_IMAGES = 3;\nconst IMAGE_GETTERS = {\n\t'core/image': ( { clientId, attributes } ) => {\n\t\tif ( attributes.url ) {\n\t\t\treturn {\n\t\t\t\turl: attributes.url,\n\t\t\t\talt: attributes.alt || '',\n\t\t\t\tclientId,\n\t\t\t};\n\t\t}\n\t},\n\t'core/cover': ( { clientId, attributes } ) => {\n\t\tif ( attributes.backgroundType === 'image' && attributes.url ) {\n\t\t\treturn {\n\t\t\t\turl: attributes.url,\n\t\t\t\talt: attributes.alt || '',\n\t\t\t\tclientId,\n\t\t\t};\n\t\t}\n\t},\n\t'core/media-text': ( { clientId, attributes } ) => {\n\t\tif ( attributes.mediaType === 'image' && attributes.mediaUrl ) {\n\t\t\treturn {\n\t\t\t\turl: attributes.mediaUrl,\n\t\t\t\talt: attributes.mediaAlt || '',\n\t\t\t\tclientId,\n\t\t\t};\n\t\t}\n\t},\n\t'core/gallery': ( { innerBlocks } ) => {\n\t\tconst images = [];\n\t\tconst getValues = !! innerBlocks?.length\n\t\t\t? IMAGE_GETTERS[ innerBlocks[ 0 ].name ]\n\t\t\t: undefined;\n\t\tif ( ! getValues ) {\n\t\t\treturn images;\n\t\t}\n\n\t\tfor ( const innerBlock of innerBlocks ) {\n\t\t\tconst img = getValues( innerBlock );\n\t\t\tif ( img ) {\n\t\t\t\timages.push( img );\n\t\t\t}\n\t\t\tif ( images.length >= MAX_IMAGES ) {\n\t\t\t\treturn images;\n\t\t\t}\n\t\t}\n\n\t\treturn images;\n\t},\n};\n\nfunction getImagesFromBlock( block, isExpanded ) {\n\tconst getImages = IMAGE_GETTERS[ block.name ];\n\tconst images = !! getImages ? getImages( block ) : undefined;\n\n\tif ( ! images ) {\n\t\treturn [];\n\t}\n\n\tif ( ! Array.isArray( images ) ) {\n\t\treturn [ images ];\n\t}\n\n\treturn isExpanded ? [] : images;\n}\n\n/**\n * Get a block's preview images for display within a list view row.\n *\n * TODO: Currently only supports images from the core/image and core/gallery\n * blocks. This should be expanded to support other blocks that have images,\n * potentially via an API that blocks can opt into / provide their own logic.\n *\n * @param {Object} props Hook properties.\n * @param {string} props.clientId The block's clientId.\n * @param {boolean} props.isExpanded Whether or not the block is expanded in the list view.\n * @return {Array} Images.\n */\nexport default function useListViewImages( { clientId, isExpanded } ) {\n\tconst { block } = useSelect(\n\t\t( select ) => {\n\t\t\treturn { block: select( blockEditorStore ).getBlock( clientId ) };\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst images = useMemo( () => {\n\t\treturn getImagesFromBlock( block, isExpanded );\n\t}, [ block, isExpanded ] );\n\n\treturn images;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -152,13 +152,13 @@ function usePasteStyles() {
152
152
  if (targetBlocks.length === 1) {
153
153
  const title = (0, _blocks.getBlockType)(targetBlocks[0].name)?.title;
154
154
  createSuccessNotice((0, _i18n.sprintf)(
155
- // Translators: Name of the block being pasted, e.g. "Paragraph".
155
+ // Translators: %s: Name of the block being pasted, e.g. "Paragraph".
156
156
  (0, _i18n.__)('Pasted styles to %s.'), title), {
157
157
  type: 'snackbar'
158
158
  });
159
159
  } else {
160
160
  createSuccessNotice((0, _i18n.sprintf)(
161
- // Translators: The number of the blocks.
161
+ // Translators: %d: The number of the blocks.
162
162
  (0, _i18n.__)('Pasted styles to %d blocks.'), targetBlocks.length), {
163
163
  type: 'snackbar'
164
164
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_blocks","_data","_notices","_i18n","_store","_supports","hasSerializedBlocks","text","blocks","parse","__unstableSkipMigrationLogs","__unstableSkipAutop","length","name","err","STYLE_ATTRIBUTES","align","hasAlignSupport","borderColor","nameOrType","hasBorderSupport","backgroundColor","hasBackgroundColorSupport","textAlign","hasTextAlignSupport","textColor","hasTextColorSupport","gradient","hasGradientSupport","className","hasCustomClassNameSupport","fontFamily","hasFontFamilySupport","fontSize","hasFontSizeSupport","layout","hasLayoutSupport","style","hasStyleSupport","getStyleAttributes","sourceBlock","targetBlock","Object","entries","reduce","attributes","attributeKey","hasSupport","recursivelyUpdateBlockAttributes","targetBlocks","sourceBlocks","updateBlockAttributes","index","Math","min","clientId","innerBlocks","usePasteStyles","registry","useRegistry","useDispatch","blockEditorStore","createSuccessNotice","createWarningNotice","createErrorNotice","noticesStore","useCallback","html","window","navigator","clipboard","__","type","readText","error","copiedBlocks","batch","map","title","getBlockType","sprintf"],"sources":["@wordpress/block-editor/src/components/use-paste-styles/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { getBlockType, parse } from '@wordpress/blocks';\nimport { useDispatch, useRegistry } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport {\n\thasAlignSupport,\n\thasBorderSupport,\n\thasBackgroundColorSupport,\n\thasTextAlignSupport,\n\thasTextColorSupport,\n\thasGradientSupport,\n\thasCustomClassNameSupport,\n\thasFontFamilySupport,\n\thasFontSizeSupport,\n\thasLayoutSupport,\n\thasStyleSupport,\n} from '../../hooks/supports';\n\n/**\n * Determine if the copied text looks like serialized blocks or not.\n * Since plain text will always get parsed into a freeform block,\n * we check that if the parsed blocks is anything other than that.\n *\n * @param {string} text The copied text.\n * @return {boolean} True if the text looks like serialized blocks, false otherwise.\n */\nfunction hasSerializedBlocks( text ) {\n\ttry {\n\t\tconst blocks = parse( text, {\n\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t__unstableSkipAutop: true,\n\t\t} );\n\t\tif ( blocks.length === 1 && blocks[ 0 ].name === 'core/freeform' ) {\n\t\t\t// It's likely that the text is just plain text and not serialized blocks.\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t} catch ( err ) {\n\t\t// Parsing error, the text is not serialized blocks.\n\t\t// (Even though that it technically won't happen)\n\t\treturn false;\n\t}\n}\n\n/**\n * Style attributes are attributes being added in `block-editor/src/hooks/*`.\n * (Except for some unrelated to style like `anchor` or `settings`.)\n * They generally represent the default block supports.\n */\nconst STYLE_ATTRIBUTES = {\n\talign: hasAlignSupport,\n\tborderColor: ( nameOrType ) => hasBorderSupport( nameOrType, 'color' ),\n\tbackgroundColor: hasBackgroundColorSupport,\n\ttextAlign: hasTextAlignSupport,\n\ttextColor: hasTextColorSupport,\n\tgradient: hasGradientSupport,\n\tclassName: hasCustomClassNameSupport,\n\tfontFamily: hasFontFamilySupport,\n\tfontSize: hasFontSizeSupport,\n\tlayout: hasLayoutSupport,\n\tstyle: hasStyleSupport,\n};\n\n/**\n * Get the \"style attributes\" from a given block to a target block.\n *\n * @param {WPBlock} sourceBlock The source block.\n * @param {WPBlock} targetBlock The target block.\n * @return {Object} the filtered attributes object.\n */\nfunction getStyleAttributes( sourceBlock, targetBlock ) {\n\treturn Object.entries( STYLE_ATTRIBUTES ).reduce(\n\t\t( attributes, [ attributeKey, hasSupport ] ) => {\n\t\t\t// Only apply the attribute if both blocks support it.\n\t\t\tif (\n\t\t\t\thasSupport( sourceBlock.name ) &&\n\t\t\t\thasSupport( targetBlock.name )\n\t\t\t) {\n\t\t\t\t// Override attributes that are not present in the block to their defaults.\n\t\t\t\tattributes[ attributeKey ] =\n\t\t\t\t\tsourceBlock.attributes[ attributeKey ];\n\t\t\t}\n\t\t\treturn attributes;\n\t\t},\n\t\t{}\n\t);\n}\n\n/**\n * Update the target blocks with style attributes recursively.\n *\n * @param {WPBlock[]} targetBlocks The target blocks to be updated.\n * @param {WPBlock[]} sourceBlocks The source blocks to get th style attributes from.\n * @param {Function} updateBlockAttributes The function to update the attributes.\n */\nfunction recursivelyUpdateBlockAttributes(\n\ttargetBlocks,\n\tsourceBlocks,\n\tupdateBlockAttributes\n) {\n\tfor (\n\t\tlet index = 0;\n\t\tindex < Math.min( sourceBlocks.length, targetBlocks.length );\n\t\tindex += 1\n\t) {\n\t\tupdateBlockAttributes(\n\t\t\ttargetBlocks[ index ].clientId,\n\t\t\tgetStyleAttributes( sourceBlocks[ index ], targetBlocks[ index ] )\n\t\t);\n\n\t\trecursivelyUpdateBlockAttributes(\n\t\t\ttargetBlocks[ index ].innerBlocks,\n\t\t\tsourceBlocks[ index ].innerBlocks,\n\t\t\tupdateBlockAttributes\n\t\t);\n\t}\n}\n\n/**\n * A hook to return a pasteStyles event function for handling pasting styles to blocks.\n *\n * @return {Function} A function to update the styles to the blocks.\n */\nexport default function usePasteStyles() {\n\tconst registry = useRegistry();\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice, createWarningNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\treturn useCallback(\n\t\tasync ( targetBlocks ) => {\n\t\t\tlet html = '';\n\t\t\ttry {\n\t\t\t\t// `http:` sites won't have the clipboard property on navigator.\n\t\t\t\t// (with the exception of localhost.)\n\t\t\t\tif ( ! window.navigator.clipboard ) {\n\t\t\t\t\tcreateErrorNotice(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Unable to paste styles. This feature is only available on secure (https) sites in supporting browsers.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thtml = await window.navigator.clipboard.readText();\n\t\t\t} catch ( error ) {\n\t\t\t\t// Possibly the permission is denied.\n\t\t\t\tcreateErrorNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Unable to paste styles. Please allow browser clipboard permissions before continuing.'\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Abort if the copied text is empty or doesn't look like serialized blocks.\n\t\t\tif ( ! html || ! hasSerializedBlocks( html ) ) {\n\t\t\t\tcreateWarningNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t\"Unable to paste styles. Block styles couldn't be found within the copied content.\"\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst copiedBlocks = parse( html );\n\n\t\t\tif ( copiedBlocks.length === 1 ) {\n\t\t\t\t// Apply styles of the block to all the target blocks.\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\trecursivelyUpdateBlockAttributes(\n\t\t\t\t\t\ttargetBlocks,\n\t\t\t\t\t\ttargetBlocks.map( () => copiedBlocks[ 0 ] ),\n\t\t\t\t\t\tupdateBlockAttributes\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\trecursivelyUpdateBlockAttributes(\n\t\t\t\t\t\ttargetBlocks,\n\t\t\t\t\t\tcopiedBlocks,\n\t\t\t\t\t\tupdateBlockAttributes\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( targetBlocks.length === 1 ) {\n\t\t\t\tconst title = getBlockType( targetBlocks[ 0 ].name )?.title;\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// Translators: Name of the block being pasted, e.g. \"Paragraph\".\n\t\t\t\t\t\t__( 'Pasted styles to %s.' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t\t),\n\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// Translators: The number of the blocks.\n\t\t\t\t\t\t__( 'Pasted styles to %d blocks.' ),\n\t\t\t\t\t\ttargetBlocks.length\n\t\t\t\t\t),\n\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tregistry.batch,\n\t\t\tupdateBlockAttributes,\n\t\t\tcreateSuccessNotice,\n\t\t\tcreateWarningNotice,\n\t\t\tcreateErrorNotice,\n\t\t]\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_element","require","_blocks","_data","_notices","_i18n","_store","_supports","hasSerializedBlocks","text","blocks","parse","__unstableSkipMigrationLogs","__unstableSkipAutop","length","name","err","STYLE_ATTRIBUTES","align","hasAlignSupport","borderColor","nameOrType","hasBorderSupport","backgroundColor","hasBackgroundColorSupport","textAlign","hasTextAlignSupport","textColor","hasTextColorSupport","gradient","hasGradientSupport","className","hasCustomClassNameSupport","fontFamily","hasFontFamilySupport","fontSize","hasFontSizeSupport","layout","hasLayoutSupport","style","hasStyleSupport","getStyleAttributes","sourceBlock","targetBlock","Object","entries","reduce","attributes","attributeKey","hasSupport","recursivelyUpdateBlockAttributes","targetBlocks","sourceBlocks","updateBlockAttributes","index","Math","min","clientId","innerBlocks","usePasteStyles","registry","useRegistry","useDispatch","blockEditorStore","createSuccessNotice","createWarningNotice","createErrorNotice","noticesStore","useCallback","html","window","navigator","clipboard","__","type","readText","error","copiedBlocks","batch","map","title","getBlockType","sprintf"],"sources":["@wordpress/block-editor/src/components/use-paste-styles/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { getBlockType, parse } from '@wordpress/blocks';\nimport { useDispatch, useRegistry } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport {\n\thasAlignSupport,\n\thasBorderSupport,\n\thasBackgroundColorSupport,\n\thasTextAlignSupport,\n\thasTextColorSupport,\n\thasGradientSupport,\n\thasCustomClassNameSupport,\n\thasFontFamilySupport,\n\thasFontSizeSupport,\n\thasLayoutSupport,\n\thasStyleSupport,\n} from '../../hooks/supports';\n\n/**\n * Determine if the copied text looks like serialized blocks or not.\n * Since plain text will always get parsed into a freeform block,\n * we check that if the parsed blocks is anything other than that.\n *\n * @param {string} text The copied text.\n * @return {boolean} True if the text looks like serialized blocks, false otherwise.\n */\nfunction hasSerializedBlocks( text ) {\n\ttry {\n\t\tconst blocks = parse( text, {\n\t\t\t__unstableSkipMigrationLogs: true,\n\t\t\t__unstableSkipAutop: true,\n\t\t} );\n\t\tif ( blocks.length === 1 && blocks[ 0 ].name === 'core/freeform' ) {\n\t\t\t// It's likely that the text is just plain text and not serialized blocks.\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t} catch ( err ) {\n\t\t// Parsing error, the text is not serialized blocks.\n\t\t// (Even though that it technically won't happen)\n\t\treturn false;\n\t}\n}\n\n/**\n * Style attributes are attributes being added in `block-editor/src/hooks/*`.\n * (Except for some unrelated to style like `anchor` or `settings`.)\n * They generally represent the default block supports.\n */\nconst STYLE_ATTRIBUTES = {\n\talign: hasAlignSupport,\n\tborderColor: ( nameOrType ) => hasBorderSupport( nameOrType, 'color' ),\n\tbackgroundColor: hasBackgroundColorSupport,\n\ttextAlign: hasTextAlignSupport,\n\ttextColor: hasTextColorSupport,\n\tgradient: hasGradientSupport,\n\tclassName: hasCustomClassNameSupport,\n\tfontFamily: hasFontFamilySupport,\n\tfontSize: hasFontSizeSupport,\n\tlayout: hasLayoutSupport,\n\tstyle: hasStyleSupport,\n};\n\n/**\n * Get the \"style attributes\" from a given block to a target block.\n *\n * @param {WPBlock} sourceBlock The source block.\n * @param {WPBlock} targetBlock The target block.\n * @return {Object} the filtered attributes object.\n */\nfunction getStyleAttributes( sourceBlock, targetBlock ) {\n\treturn Object.entries( STYLE_ATTRIBUTES ).reduce(\n\t\t( attributes, [ attributeKey, hasSupport ] ) => {\n\t\t\t// Only apply the attribute if both blocks support it.\n\t\t\tif (\n\t\t\t\thasSupport( sourceBlock.name ) &&\n\t\t\t\thasSupport( targetBlock.name )\n\t\t\t) {\n\t\t\t\t// Override attributes that are not present in the block to their defaults.\n\t\t\t\tattributes[ attributeKey ] =\n\t\t\t\t\tsourceBlock.attributes[ attributeKey ];\n\t\t\t}\n\t\t\treturn attributes;\n\t\t},\n\t\t{}\n\t);\n}\n\n/**\n * Update the target blocks with style attributes recursively.\n *\n * @param {WPBlock[]} targetBlocks The target blocks to be updated.\n * @param {WPBlock[]} sourceBlocks The source blocks to get th style attributes from.\n * @param {Function} updateBlockAttributes The function to update the attributes.\n */\nfunction recursivelyUpdateBlockAttributes(\n\ttargetBlocks,\n\tsourceBlocks,\n\tupdateBlockAttributes\n) {\n\tfor (\n\t\tlet index = 0;\n\t\tindex < Math.min( sourceBlocks.length, targetBlocks.length );\n\t\tindex += 1\n\t) {\n\t\tupdateBlockAttributes(\n\t\t\ttargetBlocks[ index ].clientId,\n\t\t\tgetStyleAttributes( sourceBlocks[ index ], targetBlocks[ index ] )\n\t\t);\n\n\t\trecursivelyUpdateBlockAttributes(\n\t\t\ttargetBlocks[ index ].innerBlocks,\n\t\t\tsourceBlocks[ index ].innerBlocks,\n\t\t\tupdateBlockAttributes\n\t\t);\n\t}\n}\n\n/**\n * A hook to return a pasteStyles event function for handling pasting styles to blocks.\n *\n * @return {Function} A function to update the styles to the blocks.\n */\nexport default function usePasteStyles() {\n\tconst registry = useRegistry();\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { createSuccessNotice, createWarningNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\treturn useCallback(\n\t\tasync ( targetBlocks ) => {\n\t\t\tlet html = '';\n\t\t\ttry {\n\t\t\t\t// `http:` sites won't have the clipboard property on navigator.\n\t\t\t\t// (with the exception of localhost.)\n\t\t\t\tif ( ! window.navigator.clipboard ) {\n\t\t\t\t\tcreateErrorNotice(\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Unable to paste styles. This feature is only available on secure (https) sites in supporting browsers.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thtml = await window.navigator.clipboard.readText();\n\t\t\t} catch ( error ) {\n\t\t\t\t// Possibly the permission is denied.\n\t\t\t\tcreateErrorNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Unable to paste styles. Please allow browser clipboard permissions before continuing.'\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Abort if the copied text is empty or doesn't look like serialized blocks.\n\t\t\tif ( ! html || ! hasSerializedBlocks( html ) ) {\n\t\t\t\tcreateWarningNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t\"Unable to paste styles. Block styles couldn't be found within the copied content.\"\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst copiedBlocks = parse( html );\n\n\t\t\tif ( copiedBlocks.length === 1 ) {\n\t\t\t\t// Apply styles of the block to all the target blocks.\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\trecursivelyUpdateBlockAttributes(\n\t\t\t\t\t\ttargetBlocks,\n\t\t\t\t\t\ttargetBlocks.map( () => copiedBlocks[ 0 ] ),\n\t\t\t\t\t\tupdateBlockAttributes\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tregistry.batch( () => {\n\t\t\t\t\trecursivelyUpdateBlockAttributes(\n\t\t\t\t\t\ttargetBlocks,\n\t\t\t\t\t\tcopiedBlocks,\n\t\t\t\t\t\tupdateBlockAttributes\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( targetBlocks.length === 1 ) {\n\t\t\t\tconst title = getBlockType( targetBlocks[ 0 ].name )?.title;\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// Translators: %s: Name of the block being pasted, e.g. \"Paragraph\".\n\t\t\t\t\t\t__( 'Pasted styles to %s.' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t\t),\n\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tcreateSuccessNotice(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// Translators: %d: The number of the blocks.\n\t\t\t\t\t\t__( 'Pasted styles to %d blocks.' ),\n\t\t\t\t\t\ttargetBlocks.length\n\t\t\t\t\t),\n\t\t\t\t\t{ type: 'snackbar' }\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tregistry.batch,\n\t\t\tupdateBlockAttributes,\n\t\t\tcreateSuccessNotice,\n\t\t\tcreateWarningNotice,\n\t\t\tcreateErrorNotice,\n\t\t]\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -202,6 +202,7 @@ function GridLayoutMinimumWidthControl({
202
202
  });
203
203
  };
204
204
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("fieldset", {
205
+ className: "block-editor-hooks__grid-layout-minimum-width-control",
205
206
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.BaseControl.VisualLabel, {
206
207
  as: "legend",
207
208
  children: (0, _i18n.__)('Minimum column width')
@@ -257,6 +258,7 @@ function GridLayoutColumnsAndRowsControl({
257
258
  } = layout;
258
259
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
259
260
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("fieldset", {
261
+ className: "block-editor-hooks__grid-layout-columns-and-rows-controls",
260
262
  children: [(!window.__experimentalEnableGridInteractivity || !isManualPlacement) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.BaseControl.VisualLabel, {
261
263
  as: "legend",
262
264
  children: (0, _i18n.__)('Columns')
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_components","_element","_utils","_gap","_utils2","_definitions","_jsxRuntime","RANGE_CONTROL_MAX_VALUES","px","vw","vh","em","rem","svw","lvw","dvw","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","units","value","label","default","_default","exports","name","__","inspectorControls","GridLayoutInspectorControls","layout","onChange","layoutBlockSupport","allowSizingOnChildren","showColumnsControl","window","__experimentalEnableGridInteractivity","columnCount","showMinWidthControl","jsxs","Fragment","children","jsx","GridLayoutTypeControl","__experimentalVStack","spacing","GridLayoutColumnsAndRowsControl","GridLayoutMinimumWidthControl","toolBarControls","GridLayoutToolbarControls","getLayoutStyle","selector","style","blockName","hasBlockGapSupport","layoutDefinitions","LAYOUT_DEFINITIONS","minimumColumnWidth","rowCount","process","env","NODE_ENV","Error","blockGapValue","blockGap","shouldSkipSerialization","getGapCSSValue","undefined","output","rules","maxValue","push","length","appendSelectors","join","getBlockGapCSS","getOrientation","getAlignments","isManualPlacement","defaultValue","quantity","unit","parseQuantityAndUnitFromRawValue","handleSliderChange","next","handleUnitChange","newUnit","newValue","includes","toFixed","Math","round","BaseControl","VisualLabel","as","Flex","gap","FlexItem","isBlock","__experimentalUnitControl","size","onUnitChange","min","hideLabelFromVision","RangeControl","__next40pxDefaultSize","__nextHasNoMarginBottom","max","withInputField","defaultColumnCount","__experimentalNumberControl","defaultNewColumnCount","newColumnCount","parseInt","newRowCount","tempColumnCount","setTempColumnCount","useState","tempRowCount","setTempRowCount","tempMinimumColumnWidth","setTempMinimumColumnWidth","gridPlacement","onChangeType","helpText","__experimentalToggleGroupControl","help","__experimentalToggleGroupControlOption"],"sources":["@wordpress/block-editor/src/layouts/grid.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\tBaseControl,\n\tFlex,\n\tFlexItem,\n\tRangeControl,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { appendSelectors, getBlockGapCSS } from './utils';\nimport { getGapCSSValue } from '../hooks/gap';\nimport { shouldSkipSerialization } from '../hooks/utils';\nimport { LAYOUT_DEFINITIONS } from './definitions';\n\nconst RANGE_CONTROL_MAX_VALUES = {\n\tpx: 600,\n\t'%': 100,\n\tvw: 100,\n\tvh: 100,\n\tem: 38,\n\trem: 38,\n\tsvw: 100,\n\tlvw: 100,\n\tdvw: 100,\n\tsvh: 100,\n\tlvh: 100,\n\tdvh: 100,\n\tvi: 100,\n\tsvi: 100,\n\tlvi: 100,\n\tdvi: 100,\n\tvb: 100,\n\tsvb: 100,\n\tlvb: 100,\n\tdvb: 100,\n\tvmin: 100,\n\tsvmin: 100,\n\tlvmin: 100,\n\tdvmin: 100,\n\tvmax: 100,\n\tsvmax: 100,\n\tlvmax: 100,\n\tdvmax: 100,\n};\n\nconst units = [\n\t{ value: 'px', label: 'px', default: 0 },\n\t{ value: 'rem', label: 'rem', default: 0 },\n\t{ value: 'em', label: 'em', default: 0 },\n];\n\nexport default {\n\tname: 'grid',\n\tlabel: __( 'Grid' ),\n\tinspectorControls: function GridLayoutInspectorControls( {\n\t\tlayout = {},\n\t\tonChange,\n\t\tlayoutBlockSupport = {},\n\t} ) {\n\t\tconst { allowSizingOnChildren = false } = layoutBlockSupport;\n\n\t\t// In the experiment we want to also show column control in Auto mode, and\n\t\t// the minimum width control in Manual mode.\n\t\tconst showColumnsControl =\n\t\t\twindow.__experimentalEnableGridInteractivity ||\n\t\t\t!! layout?.columnCount;\n\t\tconst showMinWidthControl =\n\t\t\twindow.__experimentalEnableGridInteractivity ||\n\t\t\t! layout?.columnCount;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<GridLayoutTypeControl\n\t\t\t\t\tlayout={ layout }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t{ showColumnsControl && (\n\t\t\t\t\t\t<GridLayoutColumnsAndRowsControl\n\t\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tallowSizingOnChildren={ allowSizingOnChildren }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showMinWidthControl && (\n\t\t\t\t\t\t<GridLayoutMinimumWidthControl\n\t\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</VStack>\n\t\t\t</>\n\t\t);\n\t},\n\ttoolBarControls: function GridLayoutToolbarControls() {\n\t\treturn null;\n\t},\n\tgetLayoutStyle: function getLayoutStyle( {\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\tblockName,\n\t\thasBlockGapSupport,\n\t\tlayoutDefinitions = LAYOUT_DEFINITIONS,\n\t} ) {\n\t\tconst {\n\t\t\tminimumColumnWidth = null,\n\t\t\tcolumnCount = null,\n\t\t\trowCount = null,\n\t\t} = layout;\n\n\t\t// Check that the grid layout attributes are of the correct type, so that we don't accidentally\n\t\t// write code that stores a string attribute instead of a number.\n\t\tif ( process.env.NODE_ENV === 'development' ) {\n\t\t\tif (\n\t\t\t\tminimumColumnWidth &&\n\t\t\t\ttypeof minimumColumnWidth !== 'string'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'minimumColumnWidth must be a string' );\n\t\t\t}\n\t\t\tif ( columnCount && typeof columnCount !== 'number' ) {\n\t\t\t\tthrow new Error( 'columnCount must be a number' );\n\t\t\t}\n\t\t\tif ( rowCount && typeof rowCount !== 'number' ) {\n\t\t\t\tthrow new Error( 'rowCount must be a number' );\n\t\t\t}\n\t\t}\n\n\t\t// If a block's block.json skips serialization for spacing or spacing.blockGap,\n\t\t// don't apply the user-defined value to the styles.\n\t\tconst blockGapValue =\n\t\t\tstyle?.spacing?.blockGap &&\n\t\t\t! shouldSkipSerialization( blockName, 'spacing', 'blockGap' )\n\t\t\t\t? getGapCSSValue( style?.spacing?.blockGap, '0.5em' )\n\t\t\t\t: undefined;\n\n\t\tlet output = '';\n\t\tconst rules = [];\n\n\t\tif ( minimumColumnWidth && columnCount > 0 ) {\n\t\t\tconst maxValue = `max(${ minimumColumnWidth }, ( 100% - (${\n\t\t\t\tblockGapValue || '1.2rem'\n\t\t\t}*${ columnCount - 1 }) ) / ${ columnCount })`;\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(auto-fill, minmax(${ maxValue }, 1fr))`,\n\t\t\t\t`container-type: inline-size`\n\t\t\t);\n\t\t\tif ( rowCount ) {\n\t\t\t\trules.push(\n\t\t\t\t\t`grid-template-rows: repeat(${ rowCount }, minmax(1rem, auto))`\n\t\t\t\t);\n\t\t\t}\n\t\t} else if ( columnCount ) {\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(${ columnCount }, minmax(0, 1fr))`\n\t\t\t);\n\t\t\tif ( rowCount ) {\n\t\t\t\trules.push(\n\t\t\t\t\t`grid-template-rows: repeat(${ rowCount }, minmax(1rem, auto))`\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(auto-fill, minmax(min(${\n\t\t\t\t\tminimumColumnWidth || '12rem'\n\t\t\t\t}, 100%), 1fr))`,\n\t\t\t\t'container-type: inline-size'\n\t\t\t);\n\t\t}\n\n\t\tif ( rules.length ) {\n\t\t\t// Reason to disable: the extra line breaks added by prettier mess with the unit tests.\n\t\t\t// eslint-disable-next-line prettier/prettier\n\t\t\toutput = `${ appendSelectors( selector ) } { ${ rules.join(\n\t\t\t\t'; '\n\t\t\t) }; }`;\n\t\t}\n\n\t\t// Output blockGap styles based on rules contained in layout definitions in theme.json.\n\t\tif ( hasBlockGapSupport && blockGapValue ) {\n\t\t\toutput += getBlockGapCSS(\n\t\t\t\tselector,\n\t\t\t\tlayoutDefinitions,\n\t\t\t\t'grid',\n\t\t\t\tblockGapValue\n\t\t\t);\n\t\t}\n\t\treturn output;\n\t},\n\tgetOrientation() {\n\t\treturn 'horizontal';\n\t},\n\tgetAlignments() {\n\t\treturn [];\n\t},\n};\n\n// Enables setting minimum width of grid items.\nfunction GridLayoutMinimumWidthControl( { layout, onChange } ) {\n\tconst { minimumColumnWidth, columnCount, isManualPlacement } = layout;\n\tconst defaultValue = isManualPlacement || columnCount ? null : '12rem';\n\tconst value = minimumColumnWidth || defaultValue;\n\tconst [ quantity, unit = 'rem' ] =\n\t\tparseQuantityAndUnitFromRawValue( value );\n\n\tconst handleSliderChange = ( next ) => {\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tminimumColumnWidth: [ next, unit ].join( '' ),\n\t\t} );\n\t};\n\n\t// Mostly copied from HeightControl.\n\tconst handleUnitChange = ( newUnit ) => {\n\t\t// Attempt to smooth over differences between currentUnit and newUnit.\n\t\t// This should slightly improve the experience of switching between unit types.\n\t\tlet newValue;\n\n\t\tif ( [ 'em', 'rem' ].includes( newUnit ) && unit === 'px' ) {\n\t\t\t// Convert pixel value to an approximate of the new unit, assuming a root size of 16px.\n\t\t\tnewValue = ( quantity / 16 ).toFixed( 2 ) + newUnit;\n\t\t} else if ( [ 'em', 'rem' ].includes( unit ) && newUnit === 'px' ) {\n\t\t\t// Convert to pixel value assuming a root size of 16px.\n\t\t\tnewValue = Math.round( quantity * 16 ) + newUnit;\n\t\t}\n\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tminimumColumnWidth: newValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<fieldset>\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ __( 'Minimum column width' ) }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<Flex gap={ 4 }>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\tminimumColumnWidth:\n\t\t\t\t\t\t\t\t\tnewValue === '' ? undefined : newValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonUnitChange={ handleUnitChange }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tlabel={ __( 'Minimum column width' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tonChange={ handleSliderChange }\n\t\t\t\t\t\tvalue={ quantity || 0 }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ RANGE_CONTROL_MAX_VALUES[ unit ] || 600 }\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tlabel={ __( 'Minimum column width' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</fieldset>\n\t);\n}\n\n// Enables setting number of grid columns\nfunction GridLayoutColumnsAndRowsControl( {\n\tlayout,\n\tonChange,\n\tallowSizingOnChildren,\n} ) {\n\t// If the grid interactivity experiment is enabled, allow unsetting the column count.\n\tconst defaultColumnCount = window.__experimentalEnableGridInteractivity\n\t\t? undefined\n\t\t: 3;\n\tconst {\n\t\tcolumnCount = defaultColumnCount,\n\t\trowCount,\n\t\tisManualPlacement,\n\t} = layout;\n\n\treturn (\n\t\t<>\n\t\t\t<fieldset>\n\t\t\t\t{ ( ! window.__experimentalEnableGridInteractivity ||\n\t\t\t\t\t! isManualPlacement ) && (\n\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t{ __( 'Columns' ) }\n\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t) }\n\t\t\t\t<Flex gap={ 4 }>\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t// Allow unsetting the column count when in auto mode.\n\t\t\t\t\t\t\t\t\tconst defaultNewColumnCount =\n\t\t\t\t\t\t\t\t\t\tisManualPlacement ? 1 : undefined;\n\t\t\t\t\t\t\t\t\tconst newColumnCount =\n\t\t\t\t\t\t\t\t\t\tvalue === '' || value === '0'\n\t\t\t\t\t\t\t\t\t\t\t? defaultNewColumnCount\n\t\t\t\t\t\t\t\t\t\t\t: parseInt( value, 10 );\n\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\t\t\tcolumnCount: newColumnCount,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Don't allow unsetting the column count.\n\t\t\t\t\t\t\t\t\tconst newColumnCount =\n\t\t\t\t\t\t\t\t\t\tvalue === '' || value === '0'\n\t\t\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t\t\t: parseInt( value, 10 );\n\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\t\t\tcolumnCount: newColumnCount,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ columnCount }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\t\t! window.__experimentalEnableGridInteractivity ||\n\t\t\t\t\t\t\t\t! isManualPlacement\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t{ window.__experimentalEnableGridInteractivity &&\n\t\t\t\t\t\tallowSizingOnChildren &&\n\t\t\t\t\t\tisManualPlacement ? (\n\t\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t// Don't allow unsetting the row count.\n\t\t\t\t\t\t\t\t\tconst newRowCount =\n\t\t\t\t\t\t\t\t\t\tvalue === '' || value === '0'\n\t\t\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t\t\t: parseInt( value, 10 );\n\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\t\t\trowCount: newRowCount,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tvalue={ rowCount }\n\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\tlabel={ __( 'Rows' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tvalue={ columnCount ?? 1 }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\t\t\tcolumnCount:\n\t\t\t\t\t\t\t\t\t\t\tvalue === '' || value === '0'\n\t\t\t\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t\t\t\t: value,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\tmax={ 16 }\n\t\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</fieldset>\n\t\t</>\n\t);\n}\n\n// Enables switching between grid types\nfunction GridLayoutTypeControl( { layout, onChange } ) {\n\tconst { columnCount, rowCount, minimumColumnWidth, isManualPlacement } =\n\t\tlayout;\n\n\t/**\n\t * When switching, temporarily save any custom values set on the\n\t * previous type so we can switch back without loss.\n\t */\n\tconst [ tempColumnCount, setTempColumnCount ] = useState(\n\t\tcolumnCount || 3\n\t);\n\tconst [ tempRowCount, setTempRowCount ] = useState( rowCount );\n\tconst [ tempMinimumColumnWidth, setTempMinimumColumnWidth ] = useState(\n\t\tminimumColumnWidth || '12rem'\n\t);\n\n\tconst gridPlacement =\n\t\tisManualPlacement ||\n\t\t( !! columnCount && ! window.__experimentalEnableGridInteractivity )\n\t\t\t? 'manual'\n\t\t\t: 'auto';\n\n\tconst onChangeType = ( value ) => {\n\t\tif ( value === 'manual' ) {\n\t\t\tsetTempMinimumColumnWidth( minimumColumnWidth || '12rem' );\n\t\t} else {\n\t\t\tsetTempColumnCount( columnCount || 3 );\n\t\t\tsetTempRowCount( rowCount );\n\t\t}\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tcolumnCount: value === 'manual' ? tempColumnCount : null,\n\t\t\trowCount:\n\t\t\t\tvalue === 'manual' &&\n\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t\t\t? tempRowCount\n\t\t\t\t\t: undefined,\n\t\t\tisManualPlacement:\n\t\t\t\tvalue === 'manual' &&\n\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t\t\t? true\n\t\t\t\t\t: undefined,\n\t\t\tminimumColumnWidth:\n\t\t\t\tvalue === 'auto' ? tempMinimumColumnWidth : null,\n\t\t} );\n\t};\n\n\tconst helpText =\n\t\tgridPlacement === 'manual'\n\t\t\t? __(\n\t\t\t\t\t'Grid items can be manually placed in any position on the grid.'\n\t\t\t )\n\t\t\t: __(\n\t\t\t\t\t'Grid items are placed automatically depending on their order.'\n\t\t\t );\n\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__next40pxDefaultSize\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ __( 'Grid item position' ) }\n\t\t\tvalue={ gridPlacement }\n\t\t\tonChange={ onChangeType }\n\t\t\tisBlock\n\t\t\thelp={\n\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t\t\t? helpText\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"auto\"\n\t\t\t\tvalue=\"auto\"\n\t\t\t\tlabel={ __( 'Auto' ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"manual\"\n\t\t\t\tvalue=\"manual\"\n\t\t\t\tlabel={ __( 'Manual' ) }\n\t\t\t/>\n\t\t</ToggleGroupControl>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_components","_element","_utils","_gap","_utils2","_definitions","_jsxRuntime","RANGE_CONTROL_MAX_VALUES","px","vw","vh","em","rem","svw","lvw","dvw","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","units","value","label","default","_default","exports","name","__","inspectorControls","GridLayoutInspectorControls","layout","onChange","layoutBlockSupport","allowSizingOnChildren","showColumnsControl","window","__experimentalEnableGridInteractivity","columnCount","showMinWidthControl","jsxs","Fragment","children","jsx","GridLayoutTypeControl","__experimentalVStack","spacing","GridLayoutColumnsAndRowsControl","GridLayoutMinimumWidthControl","toolBarControls","GridLayoutToolbarControls","getLayoutStyle","selector","style","blockName","hasBlockGapSupport","layoutDefinitions","LAYOUT_DEFINITIONS","minimumColumnWidth","rowCount","process","env","NODE_ENV","Error","blockGapValue","blockGap","shouldSkipSerialization","getGapCSSValue","undefined","output","rules","maxValue","push","length","appendSelectors","join","getBlockGapCSS","getOrientation","getAlignments","isManualPlacement","defaultValue","quantity","unit","parseQuantityAndUnitFromRawValue","handleSliderChange","next","handleUnitChange","newUnit","newValue","includes","toFixed","Math","round","className","BaseControl","VisualLabel","as","Flex","gap","FlexItem","isBlock","__experimentalUnitControl","size","onUnitChange","min","hideLabelFromVision","RangeControl","__next40pxDefaultSize","__nextHasNoMarginBottom","max","withInputField","defaultColumnCount","__experimentalNumberControl","defaultNewColumnCount","newColumnCount","parseInt","newRowCount","tempColumnCount","setTempColumnCount","useState","tempRowCount","setTempRowCount","tempMinimumColumnWidth","setTempMinimumColumnWidth","gridPlacement","onChangeType","helpText","__experimentalToggleGroupControl","help","__experimentalToggleGroupControlOption"],"sources":["@wordpress/block-editor/src/layouts/grid.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\tBaseControl,\n\tFlex,\n\tFlexItem,\n\tRangeControl,\n\t__experimentalNumberControl as NumberControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { appendSelectors, getBlockGapCSS } from './utils';\nimport { getGapCSSValue } from '../hooks/gap';\nimport { shouldSkipSerialization } from '../hooks/utils';\nimport { LAYOUT_DEFINITIONS } from './definitions';\n\nconst RANGE_CONTROL_MAX_VALUES = {\n\tpx: 600,\n\t'%': 100,\n\tvw: 100,\n\tvh: 100,\n\tem: 38,\n\trem: 38,\n\tsvw: 100,\n\tlvw: 100,\n\tdvw: 100,\n\tsvh: 100,\n\tlvh: 100,\n\tdvh: 100,\n\tvi: 100,\n\tsvi: 100,\n\tlvi: 100,\n\tdvi: 100,\n\tvb: 100,\n\tsvb: 100,\n\tlvb: 100,\n\tdvb: 100,\n\tvmin: 100,\n\tsvmin: 100,\n\tlvmin: 100,\n\tdvmin: 100,\n\tvmax: 100,\n\tsvmax: 100,\n\tlvmax: 100,\n\tdvmax: 100,\n};\n\nconst units = [\n\t{ value: 'px', label: 'px', default: 0 },\n\t{ value: 'rem', label: 'rem', default: 0 },\n\t{ value: 'em', label: 'em', default: 0 },\n];\n\nexport default {\n\tname: 'grid',\n\tlabel: __( 'Grid' ),\n\tinspectorControls: function GridLayoutInspectorControls( {\n\t\tlayout = {},\n\t\tonChange,\n\t\tlayoutBlockSupport = {},\n\t} ) {\n\t\tconst { allowSizingOnChildren = false } = layoutBlockSupport;\n\n\t\t// In the experiment we want to also show column control in Auto mode, and\n\t\t// the minimum width control in Manual mode.\n\t\tconst showColumnsControl =\n\t\t\twindow.__experimentalEnableGridInteractivity ||\n\t\t\t!! layout?.columnCount;\n\t\tconst showMinWidthControl =\n\t\t\twindow.__experimentalEnableGridInteractivity ||\n\t\t\t! layout?.columnCount;\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<GridLayoutTypeControl\n\t\t\t\t\tlayout={ layout }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t\t{ showColumnsControl && (\n\t\t\t\t\t\t<GridLayoutColumnsAndRowsControl\n\t\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tallowSizingOnChildren={ allowSizingOnChildren }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ showMinWidthControl && (\n\t\t\t\t\t\t<GridLayoutMinimumWidthControl\n\t\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</VStack>\n\t\t\t</>\n\t\t);\n\t},\n\ttoolBarControls: function GridLayoutToolbarControls() {\n\t\treturn null;\n\t},\n\tgetLayoutStyle: function getLayoutStyle( {\n\t\tselector,\n\t\tlayout,\n\t\tstyle,\n\t\tblockName,\n\t\thasBlockGapSupport,\n\t\tlayoutDefinitions = LAYOUT_DEFINITIONS,\n\t} ) {\n\t\tconst {\n\t\t\tminimumColumnWidth = null,\n\t\t\tcolumnCount = null,\n\t\t\trowCount = null,\n\t\t} = layout;\n\n\t\t// Check that the grid layout attributes are of the correct type, so that we don't accidentally\n\t\t// write code that stores a string attribute instead of a number.\n\t\tif ( process.env.NODE_ENV === 'development' ) {\n\t\t\tif (\n\t\t\t\tminimumColumnWidth &&\n\t\t\t\ttypeof minimumColumnWidth !== 'string'\n\t\t\t) {\n\t\t\t\tthrow new Error( 'minimumColumnWidth must be a string' );\n\t\t\t}\n\t\t\tif ( columnCount && typeof columnCount !== 'number' ) {\n\t\t\t\tthrow new Error( 'columnCount must be a number' );\n\t\t\t}\n\t\t\tif ( rowCount && typeof rowCount !== 'number' ) {\n\t\t\t\tthrow new Error( 'rowCount must be a number' );\n\t\t\t}\n\t\t}\n\n\t\t// If a block's block.json skips serialization for spacing or spacing.blockGap,\n\t\t// don't apply the user-defined value to the styles.\n\t\tconst blockGapValue =\n\t\t\tstyle?.spacing?.blockGap &&\n\t\t\t! shouldSkipSerialization( blockName, 'spacing', 'blockGap' )\n\t\t\t\t? getGapCSSValue( style?.spacing?.blockGap, '0.5em' )\n\t\t\t\t: undefined;\n\n\t\tlet output = '';\n\t\tconst rules = [];\n\n\t\tif ( minimumColumnWidth && columnCount > 0 ) {\n\t\t\tconst maxValue = `max(${ minimumColumnWidth }, ( 100% - (${\n\t\t\t\tblockGapValue || '1.2rem'\n\t\t\t}*${ columnCount - 1 }) ) / ${ columnCount })`;\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(auto-fill, minmax(${ maxValue }, 1fr))`,\n\t\t\t\t`container-type: inline-size`\n\t\t\t);\n\t\t\tif ( rowCount ) {\n\t\t\t\trules.push(\n\t\t\t\t\t`grid-template-rows: repeat(${ rowCount }, minmax(1rem, auto))`\n\t\t\t\t);\n\t\t\t}\n\t\t} else if ( columnCount ) {\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(${ columnCount }, minmax(0, 1fr))`\n\t\t\t);\n\t\t\tif ( rowCount ) {\n\t\t\t\trules.push(\n\t\t\t\t\t`grid-template-rows: repeat(${ rowCount }, minmax(1rem, auto))`\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\trules.push(\n\t\t\t\t`grid-template-columns: repeat(auto-fill, minmax(min(${\n\t\t\t\t\tminimumColumnWidth || '12rem'\n\t\t\t\t}, 100%), 1fr))`,\n\t\t\t\t'container-type: inline-size'\n\t\t\t);\n\t\t}\n\n\t\tif ( rules.length ) {\n\t\t\t// Reason to disable: the extra line breaks added by prettier mess with the unit tests.\n\t\t\t// eslint-disable-next-line prettier/prettier\n\t\t\toutput = `${ appendSelectors( selector ) } { ${ rules.join(\n\t\t\t\t'; '\n\t\t\t) }; }`;\n\t\t}\n\n\t\t// Output blockGap styles based on rules contained in layout definitions in theme.json.\n\t\tif ( hasBlockGapSupport && blockGapValue ) {\n\t\t\toutput += getBlockGapCSS(\n\t\t\t\tselector,\n\t\t\t\tlayoutDefinitions,\n\t\t\t\t'grid',\n\t\t\t\tblockGapValue\n\t\t\t);\n\t\t}\n\t\treturn output;\n\t},\n\tgetOrientation() {\n\t\treturn 'horizontal';\n\t},\n\tgetAlignments() {\n\t\treturn [];\n\t},\n};\n\n// Enables setting minimum width of grid items.\nfunction GridLayoutMinimumWidthControl( { layout, onChange } ) {\n\tconst { minimumColumnWidth, columnCount, isManualPlacement } = layout;\n\tconst defaultValue = isManualPlacement || columnCount ? null : '12rem';\n\tconst value = minimumColumnWidth || defaultValue;\n\tconst [ quantity, unit = 'rem' ] =\n\t\tparseQuantityAndUnitFromRawValue( value );\n\n\tconst handleSliderChange = ( next ) => {\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tminimumColumnWidth: [ next, unit ].join( '' ),\n\t\t} );\n\t};\n\n\t// Mostly copied from HeightControl.\n\tconst handleUnitChange = ( newUnit ) => {\n\t\t// Attempt to smooth over differences between currentUnit and newUnit.\n\t\t// This should slightly improve the experience of switching between unit types.\n\t\tlet newValue;\n\n\t\tif ( [ 'em', 'rem' ].includes( newUnit ) && unit === 'px' ) {\n\t\t\t// Convert pixel value to an approximate of the new unit, assuming a root size of 16px.\n\t\t\tnewValue = ( quantity / 16 ).toFixed( 2 ) + newUnit;\n\t\t} else if ( [ 'em', 'rem' ].includes( unit ) && newUnit === 'px' ) {\n\t\t\t// Convert to pixel value assuming a root size of 16px.\n\t\t\tnewValue = Math.round( quantity * 16 ) + newUnit;\n\t\t}\n\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tminimumColumnWidth: newValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<fieldset className=\"block-editor-hooks__grid-layout-minimum-width-control\">\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ __( 'Minimum column width' ) }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<Flex gap={ 4 }>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<UnitControl\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\tminimumColumnWidth:\n\t\t\t\t\t\t\t\t\tnewValue === '' ? undefined : newValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonUnitChange={ handleUnitChange }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tlabel={ __( 'Minimum column width' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tonChange={ handleSliderChange }\n\t\t\t\t\t\tvalue={ quantity || 0 }\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ RANGE_CONTROL_MAX_VALUES[ unit ] || 600 }\n\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\tlabel={ __( 'Minimum column width' ) }\n\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t/>\n\t\t\t\t</FlexItem>\n\t\t\t</Flex>\n\t\t</fieldset>\n\t);\n}\n\n// Enables setting number of grid columns\nfunction GridLayoutColumnsAndRowsControl( {\n\tlayout,\n\tonChange,\n\tallowSizingOnChildren,\n} ) {\n\t// If the grid interactivity experiment is enabled, allow unsetting the column count.\n\tconst defaultColumnCount = window.__experimentalEnableGridInteractivity\n\t\t? undefined\n\t\t: 3;\n\tconst {\n\t\tcolumnCount = defaultColumnCount,\n\t\trowCount,\n\t\tisManualPlacement,\n\t} = layout;\n\n\treturn (\n\t\t<>\n\t\t\t<fieldset className=\"block-editor-hooks__grid-layout-columns-and-rows-controls\">\n\t\t\t\t{ ( ! window.__experimentalEnableGridInteractivity ||\n\t\t\t\t\t! isManualPlacement ) && (\n\t\t\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t\t\t{ __( 'Columns' ) }\n\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t) }\n\t\t\t\t<Flex gap={ 4 }>\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t// Allow unsetting the column count when in auto mode.\n\t\t\t\t\t\t\t\t\tconst defaultNewColumnCount =\n\t\t\t\t\t\t\t\t\t\tisManualPlacement ? 1 : undefined;\n\t\t\t\t\t\t\t\t\tconst newColumnCount =\n\t\t\t\t\t\t\t\t\t\tvalue === '' || value === '0'\n\t\t\t\t\t\t\t\t\t\t\t? defaultNewColumnCount\n\t\t\t\t\t\t\t\t\t\t\t: parseInt( value, 10 );\n\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\t\t\tcolumnCount: newColumnCount,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Don't allow unsetting the column count.\n\t\t\t\t\t\t\t\t\tconst newColumnCount =\n\t\t\t\t\t\t\t\t\t\tvalue === '' || value === '0'\n\t\t\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t\t\t: parseInt( value, 10 );\n\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\t\t\tcolumnCount: newColumnCount,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ columnCount }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\thideLabelFromVision={\n\t\t\t\t\t\t\t\t! window.__experimentalEnableGridInteractivity ||\n\t\t\t\t\t\t\t\t! isManualPlacement\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t{ window.__experimentalEnableGridInteractivity &&\n\t\t\t\t\t\tallowSizingOnChildren &&\n\t\t\t\t\t\tisManualPlacement ? (\n\t\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t// Don't allow unsetting the row count.\n\t\t\t\t\t\t\t\t\tconst newRowCount =\n\t\t\t\t\t\t\t\t\t\tvalue === '' || value === '0'\n\t\t\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t\t\t: parseInt( value, 10 );\n\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\t\t\trowCount: newRowCount,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tvalue={ rowCount }\n\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\tlabel={ __( 'Rows' ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tvalue={ columnCount ?? 1 }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t...layout,\n\t\t\t\t\t\t\t\t\t\tcolumnCount:\n\t\t\t\t\t\t\t\t\t\t\tvalue === '' || value === '0'\n\t\t\t\t\t\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t\t\t\t\t\t: value,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\tmax={ 16 }\n\t\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</fieldset>\n\t\t</>\n\t);\n}\n\n// Enables switching between grid types\nfunction GridLayoutTypeControl( { layout, onChange } ) {\n\tconst { columnCount, rowCount, minimumColumnWidth, isManualPlacement } =\n\t\tlayout;\n\n\t/**\n\t * When switching, temporarily save any custom values set on the\n\t * previous type so we can switch back without loss.\n\t */\n\tconst [ tempColumnCount, setTempColumnCount ] = useState(\n\t\tcolumnCount || 3\n\t);\n\tconst [ tempRowCount, setTempRowCount ] = useState( rowCount );\n\tconst [ tempMinimumColumnWidth, setTempMinimumColumnWidth ] = useState(\n\t\tminimumColumnWidth || '12rem'\n\t);\n\n\tconst gridPlacement =\n\t\tisManualPlacement ||\n\t\t( !! columnCount && ! window.__experimentalEnableGridInteractivity )\n\t\t\t? 'manual'\n\t\t\t: 'auto';\n\n\tconst onChangeType = ( value ) => {\n\t\tif ( value === 'manual' ) {\n\t\t\tsetTempMinimumColumnWidth( minimumColumnWidth || '12rem' );\n\t\t} else {\n\t\t\tsetTempColumnCount( columnCount || 3 );\n\t\t\tsetTempRowCount( rowCount );\n\t\t}\n\t\tonChange( {\n\t\t\t...layout,\n\t\t\tcolumnCount: value === 'manual' ? tempColumnCount : null,\n\t\t\trowCount:\n\t\t\t\tvalue === 'manual' &&\n\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t\t\t? tempRowCount\n\t\t\t\t\t: undefined,\n\t\t\tisManualPlacement:\n\t\t\t\tvalue === 'manual' &&\n\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t\t\t? true\n\t\t\t\t\t: undefined,\n\t\t\tminimumColumnWidth:\n\t\t\t\tvalue === 'auto' ? tempMinimumColumnWidth : null,\n\t\t} );\n\t};\n\n\tconst helpText =\n\t\tgridPlacement === 'manual'\n\t\t\t? __(\n\t\t\t\t\t'Grid items can be manually placed in any position on the grid.'\n\t\t\t )\n\t\t\t: __(\n\t\t\t\t\t'Grid items are placed automatically depending on their order.'\n\t\t\t );\n\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\t__next40pxDefaultSize\n\t\t\t__nextHasNoMarginBottom\n\t\t\tlabel={ __( 'Grid item position' ) }\n\t\t\tvalue={ gridPlacement }\n\t\t\tonChange={ onChangeType }\n\t\t\tisBlock\n\t\t\thelp={\n\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t\t\t? helpText\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"auto\"\n\t\t\t\tvalue=\"auto\"\n\t\t\t\tlabel={ __( 'Auto' ) }\n\t\t\t/>\n\t\t\t<ToggleGroupControlOption\n\t\t\t\tkey=\"manual\"\n\t\t\t\tvalue=\"manual\"\n\t\t\t\tlabel={ __( 'Manual' ) }\n\t\t\t/>\n\t\t</ToggleGroupControl>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}