@wordpress/block-editor 11.3.5 → 11.3.7

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 (105) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/build/components/block-inspector/index.js +11 -10
  3. package/build/components/block-inspector/index.js.map +1 -1
  4. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js +46 -0
  5. package/build/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
  6. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -2
  7. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  8. package/build/components/inserter/index.js +29 -17
  9. package/build/components/inserter/index.js.map +1 -1
  10. package/build/components/inserter/media-tab/hooks.js +10 -11
  11. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  12. package/build/components/inserter/media-tab/media-list.js +5 -108
  13. package/build/components/inserter/media-tab/media-list.js.map +1 -1
  14. package/build/components/inserter/media-tab/media-preview.js +242 -0
  15. package/build/components/inserter/media-tab/media-preview.js.map +1 -0
  16. package/build/components/inserter/menu.js +4 -7
  17. package/build/components/inserter/menu.js.map +1 -1
  18. package/build/components/inserter/quick-inserter.js +4 -2
  19. package/build/components/inserter/quick-inserter.js.map +1 -1
  20. package/build/components/inserter/search-results.js +10 -3
  21. package/build/components/inserter/search-results.js.map +1 -1
  22. package/build/components/link-control/index.js +17 -44
  23. package/build/components/link-control/index.js.map +1 -1
  24. package/build/components/off-canvas-editor/appender.js +28 -3
  25. package/build/components/off-canvas-editor/appender.js.map +1 -1
  26. package/build/components/off-canvas-editor/block-contents.js +1 -1
  27. package/build/components/off-canvas-editor/block-contents.js.map +1 -1
  28. package/build/components/off-canvas-editor/branch.js +5 -3
  29. package/build/components/off-canvas-editor/branch.js.map +1 -1
  30. package/build/components/off-canvas-editor/index.js +4 -1
  31. package/build/components/off-canvas-editor/index.js.map +1 -1
  32. package/build/private-apis.js +4 -1
  33. package/build/private-apis.js.map +1 -1
  34. package/build/store/actions.js +28 -14
  35. package/build/store/actions.js.map +1 -1
  36. package/build/store/defaults.js +28 -1
  37. package/build/store/defaults.js.map +1 -1
  38. package/build/store/selectors.js +1 -1
  39. package/build/store/selectors.js.map +1 -1
  40. package/build-module/components/block-inspector/index.js +9 -9
  41. package/build-module/components/block-inspector/index.js.map +1 -1
  42. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js +37 -0
  43. package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
  44. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -2
  45. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  46. package/build-module/components/inserter/index.js +28 -16
  47. package/build-module/components/inserter/index.js.map +1 -1
  48. package/build-module/components/inserter/media-tab/hooks.js +10 -11
  49. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  50. package/build-module/components/inserter/media-tab/media-list.js +6 -105
  51. package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
  52. package/build-module/components/inserter/media-tab/media-preview.js +222 -0
  53. package/build-module/components/inserter/media-tab/media-preview.js.map +1 -0
  54. package/build-module/components/inserter/menu.js +4 -7
  55. package/build-module/components/inserter/menu.js.map +1 -1
  56. package/build-module/components/inserter/quick-inserter.js +4 -2
  57. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  58. package/build-module/components/inserter/search-results.js +10 -3
  59. package/build-module/components/inserter/search-results.js.map +1 -1
  60. package/build-module/components/link-control/index.js +16 -44
  61. package/build-module/components/link-control/index.js.map +1 -1
  62. package/build-module/components/off-canvas-editor/appender.js +28 -4
  63. package/build-module/components/off-canvas-editor/appender.js.map +1 -1
  64. package/build-module/components/off-canvas-editor/block-contents.js +1 -1
  65. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
  66. package/build-module/components/off-canvas-editor/branch.js +5 -3
  67. package/build-module/components/off-canvas-editor/branch.js.map +1 -1
  68. package/build-module/components/off-canvas-editor/index.js +4 -1
  69. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  70. package/build-module/private-apis.js +3 -1
  71. package/build-module/private-apis.js.map +1 -1
  72. package/build-module/store/actions.js +28 -14
  73. package/build-module/store/actions.js.map +1 -1
  74. package/build-module/store/defaults.js +28 -1
  75. package/build-module/store/defaults.js.map +1 -1
  76. package/build-module/store/selectors.js +1 -1
  77. package/build-module/store/selectors.js.map +1 -1
  78. package/build-style/style-rtl.css +46 -8
  79. package/build-style/style.css +46 -8
  80. package/package.json +4 -4
  81. package/src/components/block-inspector/index.js +11 -14
  82. package/src/components/block-inspector/useBlockInspectorAnimationSettings.js +53 -0
  83. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
  84. package/src/components/inserter/index.js +30 -11
  85. package/src/components/inserter/media-tab/hooks.js +9 -8
  86. package/src/components/inserter/media-tab/media-list.js +3 -122
  87. package/src/components/inserter/media-tab/media-preview.js +268 -0
  88. package/src/components/inserter/menu.js +14 -20
  89. package/src/components/inserter/quick-inserter.js +2 -0
  90. package/src/components/inserter/search-results.js +7 -1
  91. package/src/components/inserter/style.scss +25 -0
  92. package/src/components/link-control/index.js +23 -58
  93. package/src/components/link-control/style.scss +23 -7
  94. package/src/components/link-control/test/index.js +5 -134
  95. package/src/components/media-replace-flow/test/index.js +1 -1
  96. package/src/components/off-canvas-editor/appender.js +30 -4
  97. package/src/components/off-canvas-editor/block-contents.js +1 -1
  98. package/src/components/off-canvas-editor/branch.js +3 -1
  99. package/src/components/off-canvas-editor/index.js +3 -0
  100. package/src/components/spacing-sizes-control/style.scss +1 -1
  101. package/src/private-apis.js +2 -0
  102. package/src/store/actions.js +16 -6
  103. package/src/store/defaults.js +14 -1
  104. package/src/store/selectors.js +4 -1
  105. package/src/store/test/actions.js +4 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/off-canvas-editor/branch.js"],"names":["__experimentalTreeGridRow","TreeGridRow","__experimentalTreeGridCell","TreeGridCell","AsyncModeProvider","useSelect","memo","Appender","ListViewBlock","useListViewContext","isClientIdSelected","store","blockEditorStore","countBlocks","block","expandedState","draggedClientIds","isExpandedByDefault","isDragged","includes","clientId","isExpanded","innerBlocks","reduce","countReducer","count","length","noop","ListViewBranch","props","blocks","selectBlock","showBlockMovers","selectedClientIds","level","path","isBranchSelected","listPosition","fixedListWindow","parentId","shouldShowInnerBlocks","isContentLocked","select","getTemplateLock","showAppender","filteredBlocks","filter","Boolean","blockCount","rowCount","nextPosition","map","index","itemInView","blockInView","position","updatedPath","hasNestedBlocks","shouldExpand","undefined","showBlock","isSelected","isSelectedBranch","treeGridCellProps"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalTreeGridRow as TreeGridRow,\n\t__experimentalTreeGridCell as TreeGridCell,\n} from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport { memo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\n\nimport { Appender } from './appender';\nimport ListViewBlock from './block';\nimport { useListViewContext } from './context';\nimport { isClientIdSelected } from './utils';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Given a block, returns the total number of blocks in that subtree. This is used to help determine\n * the list position of a block.\n *\n * When a block is collapsed, we do not count their children as part of that total. In the current drag\n * implementation dragged blocks and their children are not counted.\n *\n * @param {Object} block block tree\n * @param {Object} expandedState state that notes which branches are collapsed\n * @param {Array} draggedClientIds a list of dragged client ids\n * @param {boolean} isExpandedByDefault flag to determine the default fallback expanded state.\n * @return {number} block count\n */\nfunction countBlocks(\n\tblock,\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn 0;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\n\tif ( isExpanded ) {\n\t\treturn (\n\t\t\t1 +\n\t\t\tblock.innerBlocks.reduce(\n\t\t\t\tcountReducer(\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\treturn 1;\n}\nconst countReducer =\n\t( expandedState, draggedClientIds, isExpandedByDefault ) =>\n\t( count, block ) => {\n\t\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\t\tif ( isDragged ) {\n\t\t\treturn count;\n\t\t}\n\t\tconst isExpanded =\n\t\t\texpandedState[ block.clientId ] ?? isExpandedByDefault;\n\t\tif ( isExpanded && block.innerBlocks.length > 0 ) {\n\t\t\treturn (\n\t\t\t\tcount +\n\t\t\t\tcountBlocks(\n\t\t\t\t\tblock,\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\treturn count + 1;\n\t};\n\nconst noop = () => {};\n\nfunction ListViewBranch( props ) {\n\tconst {\n\t\tblocks,\n\t\tselectBlock = noop,\n\t\tshowBlockMovers,\n\t\tselectedClientIds,\n\t\tlevel = 1,\n\t\tpath = '',\n\t\tisBranchSelected = false,\n\t\tlistPosition = 0,\n\t\tfixedListWindow,\n\t\tisExpanded,\n\t\tparentId,\n\t\tshouldShowInnerBlocks = true,\n\t} = props;\n\n\tconst isContentLocked = useSelect(\n\t\t( select ) => {\n\t\t\treturn !! (\n\t\t\t\tparentId &&\n\t\t\t\tselect( blockEditorStore ).getTemplateLock( parentId ) ===\n\t\t\t\t\t'contentOnly'\n\t\t\t);\n\t\t},\n\t\t[ parentId ]\n\t);\n\n\tconst { expandedState, draggedClientIds } = useListViewContext();\n\n\tif ( isContentLocked ) {\n\t\treturn null;\n\t}\n\n\t// Only show the appender at the first level.\n\tconst showAppender = level === 1;\n\n\tconst filteredBlocks = blocks.filter( Boolean );\n\tconst blockCount = filteredBlocks.length;\n\n\t// The appender means an extra row in List View, so add 1 to the row count.\n\tconst rowCount = showAppender ? blockCount + 1 : blockCount;\n\tlet nextPosition = listPosition;\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredBlocks.map( ( block, index ) => {\n\t\t\t\tconst { clientId, innerBlocks } = block;\n\n\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\tnextPosition += countBlocks(\n\t\t\t\t\t\tfilteredBlocks[ index - 1 ],\n\t\t\t\t\t\texpandedState,\n\t\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\t\tisExpanded\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst { itemInView } = fixedListWindow;\n\t\t\t\tconst blockInView = itemInView( nextPosition );\n\n\t\t\t\tconst position = index + 1;\n\t\t\t\tconst updatedPath =\n\t\t\t\t\tpath.length > 0\n\t\t\t\t\t\t? `${ path }_${ position }`\n\t\t\t\t\t\t: `${ position }`;\n\t\t\t\tconst hasNestedBlocks = !! innerBlocks?.length;\n\n\t\t\t\tconst shouldExpand =\n\t\t\t\t\thasNestedBlocks && shouldShowInnerBlocks\n\t\t\t\t\t\t? expandedState[ clientId ] ?? isExpanded\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst isDragged = !! draggedClientIds?.includes( clientId );\n\n\t\t\t\tconst showBlock = isDragged || blockInView;\n\n\t\t\t\t// Make updates to the selected or dragged blocks synchronous,\n\t\t\t\t// but asynchronous for any other block.\n\t\t\t\tconst isSelected = isClientIdSelected(\n\t\t\t\t\tclientId,\n\t\t\t\t\tselectedClientIds\n\t\t\t\t);\n\t\t\t\tconst isSelectedBranch =\n\t\t\t\t\tisBranchSelected || ( isSelected && hasNestedBlocks );\n\t\t\t\treturn (\n\t\t\t\t\t<AsyncModeProvider key={ clientId } value={ ! isSelected }>\n\t\t\t\t\t\t{ showBlock && (\n\t\t\t\t\t\t\t<ListViewBlock\n\t\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tisDragged={ isDragged }\n\t\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\t\trowCount={ rowCount }\n\t\t\t\t\t\t\t\tsiblingBlockCount={ blockCount }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tisExpanded={ shouldExpand }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! showBlock && (\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td className=\"block-editor-list-view-placeholder\" />\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasNestedBlocks && shouldExpand && ! isDragged && (\n\t\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\t\tparentId={ clientId }\n\t\t\t\t\t\t\t\tblocks={ innerBlocks }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tlevel={ level + 1 }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition + 1 }\n\t\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</AsyncModeProvider>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ showAppender && (\n\t\t\t\t<TreeGridRow\n\t\t\t\t\tlevel={ level }\n\t\t\t\t\tsetSize={ rowCount }\n\t\t\t\t\tpositionInSet={ rowCount }\n\t\t\t\t\tisExpanded={ true }\n\t\t\t\t>\n\t\t\t\t\t<TreeGridCell>\n\t\t\t\t\t\t{ ( treeGridCellProps ) => (\n\t\t\t\t\t\t\t<Appender\n\t\t\t\t\t\t\t\tnestingLevel={ level }\n\t\t\t\t\t\t\t\tblockCount={ blockCount }\n\t\t\t\t\t\t\t\t{ ...treeGridCellProps }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</TreeGridRow>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default memo( ListViewBranch );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/off-canvas-editor/branch.js"],"names":["__experimentalTreeGridRow","TreeGridRow","__experimentalTreeGridCell","TreeGridCell","AsyncModeProvider","useSelect","memo","Appender","ListViewBlock","useListViewContext","isClientIdSelected","store","blockEditorStore","countBlocks","block","expandedState","draggedClientIds","isExpandedByDefault","isDragged","includes","clientId","isExpanded","innerBlocks","reduce","countReducer","count","length","noop","ListViewBranch","props","blocks","selectBlock","showBlockMovers","selectedClientIds","level","path","isBranchSelected","listPosition","fixedListWindow","parentId","shouldShowInnerBlocks","showAppender","showAppenderProp","isContentLocked","select","getTemplateLock","filteredBlocks","filter","Boolean","blockCount","rowCount","nextPosition","map","index","itemInView","blockInView","position","updatedPath","hasNestedBlocks","shouldExpand","undefined","showBlock","isSelected","isSelectedBranch","treeGridCellProps"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalTreeGridRow as TreeGridRow,\n\t__experimentalTreeGridCell as TreeGridCell,\n} from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport { memo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\n\nimport { Appender } from './appender';\nimport ListViewBlock from './block';\nimport { useListViewContext } from './context';\nimport { isClientIdSelected } from './utils';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Given a block, returns the total number of blocks in that subtree. This is used to help determine\n * the list position of a block.\n *\n * When a block is collapsed, we do not count their children as part of that total. In the current drag\n * implementation dragged blocks and their children are not counted.\n *\n * @param {Object} block block tree\n * @param {Object} expandedState state that notes which branches are collapsed\n * @param {Array} draggedClientIds a list of dragged client ids\n * @param {boolean} isExpandedByDefault flag to determine the default fallback expanded state.\n * @return {number} block count\n */\nfunction countBlocks(\n\tblock,\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn 0;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\n\tif ( isExpanded ) {\n\t\treturn (\n\t\t\t1 +\n\t\t\tblock.innerBlocks.reduce(\n\t\t\t\tcountReducer(\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\treturn 1;\n}\nconst countReducer =\n\t( expandedState, draggedClientIds, isExpandedByDefault ) =>\n\t( count, block ) => {\n\t\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\t\tif ( isDragged ) {\n\t\t\treturn count;\n\t\t}\n\t\tconst isExpanded =\n\t\t\texpandedState[ block.clientId ] ?? isExpandedByDefault;\n\t\tif ( isExpanded && block.innerBlocks.length > 0 ) {\n\t\t\treturn (\n\t\t\t\tcount +\n\t\t\t\tcountBlocks(\n\t\t\t\t\tblock,\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\treturn count + 1;\n\t};\n\nconst noop = () => {};\n\nfunction ListViewBranch( props ) {\n\tconst {\n\t\tblocks,\n\t\tselectBlock = noop,\n\t\tshowBlockMovers,\n\t\tselectedClientIds,\n\t\tlevel = 1,\n\t\tpath = '',\n\t\tisBranchSelected = false,\n\t\tlistPosition = 0,\n\t\tfixedListWindow,\n\t\tisExpanded,\n\t\tparentId,\n\t\tshouldShowInnerBlocks = true,\n\t\tshowAppender: showAppenderProp = true,\n\t} = props;\n\n\tconst isContentLocked = useSelect(\n\t\t( select ) => {\n\t\t\treturn !! (\n\t\t\t\tparentId &&\n\t\t\t\tselect( blockEditorStore ).getTemplateLock( parentId ) ===\n\t\t\t\t\t'contentOnly'\n\t\t\t);\n\t\t},\n\t\t[ parentId ]\n\t);\n\n\tconst { expandedState, draggedClientIds } = useListViewContext();\n\n\tif ( isContentLocked ) {\n\t\treturn null;\n\t}\n\n\t// Only show the appender at the first level.\n\tconst showAppender = showAppenderProp && level === 1;\n\n\tconst filteredBlocks = blocks.filter( Boolean );\n\tconst blockCount = filteredBlocks.length;\n\n\t// The appender means an extra row in List View, so add 1 to the row count.\n\tconst rowCount = showAppender ? blockCount + 1 : blockCount;\n\tlet nextPosition = listPosition;\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredBlocks.map( ( block, index ) => {\n\t\t\t\tconst { clientId, innerBlocks } = block;\n\n\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\tnextPosition += countBlocks(\n\t\t\t\t\t\tfilteredBlocks[ index - 1 ],\n\t\t\t\t\t\texpandedState,\n\t\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\t\tisExpanded\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst { itemInView } = fixedListWindow;\n\t\t\t\tconst blockInView = itemInView( nextPosition );\n\n\t\t\t\tconst position = index + 1;\n\t\t\t\tconst updatedPath =\n\t\t\t\t\tpath.length > 0\n\t\t\t\t\t\t? `${ path }_${ position }`\n\t\t\t\t\t\t: `${ position }`;\n\t\t\t\tconst hasNestedBlocks = !! innerBlocks?.length;\n\n\t\t\t\tconst shouldExpand =\n\t\t\t\t\thasNestedBlocks && shouldShowInnerBlocks\n\t\t\t\t\t\t? expandedState[ clientId ] ?? isExpanded\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tconst isDragged = !! draggedClientIds?.includes( clientId );\n\n\t\t\t\tconst showBlock = isDragged || blockInView;\n\n\t\t\t\t// Make updates to the selected or dragged blocks synchronous,\n\t\t\t\t// but asynchronous for any other block.\n\t\t\t\tconst isSelected = isClientIdSelected(\n\t\t\t\t\tclientId,\n\t\t\t\t\tselectedClientIds\n\t\t\t\t);\n\t\t\t\tconst isSelectedBranch =\n\t\t\t\t\tisBranchSelected || ( isSelected && hasNestedBlocks );\n\t\t\t\treturn (\n\t\t\t\t\t<AsyncModeProvider key={ clientId } value={ ! isSelected }>\n\t\t\t\t\t\t{ showBlock && (\n\t\t\t\t\t\t\t<ListViewBlock\n\t\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tisDragged={ isDragged }\n\t\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\t\trowCount={ rowCount }\n\t\t\t\t\t\t\t\tsiblingBlockCount={ blockCount }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tisExpanded={ shouldExpand }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! showBlock && (\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td className=\"block-editor-list-view-placeholder\" />\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasNestedBlocks && shouldExpand && ! isDragged && (\n\t\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\t\tparentId={ clientId }\n\t\t\t\t\t\t\t\tblocks={ innerBlocks }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tlevel={ level + 1 }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition + 1 }\n\t\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t\tshowAppender={ showAppenderProp }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</AsyncModeProvider>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t{ showAppender && (\n\t\t\t\t<TreeGridRow\n\t\t\t\t\tlevel={ level }\n\t\t\t\t\tsetSize={ rowCount }\n\t\t\t\t\tpositionInSet={ rowCount }\n\t\t\t\t\tisExpanded={ true }\n\t\t\t\t>\n\t\t\t\t\t<TreeGridCell>\n\t\t\t\t\t\t{ ( treeGridCellProps ) => (\n\t\t\t\t\t\t\t<Appender\n\t\t\t\t\t\t\t\tnestingLevel={ level }\n\t\t\t\t\t\t\t\tblockCount={ blockCount }\n\t\t\t\t\t\t\t\t{ ...treeGridCellProps }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</TreeGridCell>\n\t\t\t\t</TreeGridRow>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default memo( ListViewBranch );\n"]}
@@ -45,6 +45,7 @@ export const BLOCK_LIST_ITEM_HEIGHT = 36;
45
45
  * @param {Object} props.LeafMoreMenu Optional more menu substitution.
46
46
  * @param {string} props.description Optional accessible description for the tree grid component.
47
47
  * @param {string} props.onSelect Optional callback to be invoked when a block is selected.
48
+ * @param {string} props.showAppender Flag to show or hide the block appender.
48
49
  * @param {Object} ref Forwarded ref
49
50
  */
50
51
 
@@ -54,6 +55,7 @@ function OffCanvasEditor(_ref, ref) {
54
55
  blocks,
55
56
  showBlockMovers = false,
56
57
  isExpanded = false,
58
+ showAppender = true,
57
59
  LeafMoreMenu,
58
60
  description = __('Block navigation structure'),
59
61
  onSelect
@@ -187,7 +189,8 @@ function OffCanvasEditor(_ref, ref) {
187
189
  fixedListWindow: fixedListWindow,
188
190
  selectedClientIds: selectedClientIds,
189
191
  isExpanded: isExpanded,
190
- shouldShowInnerBlocks: shouldShowInnerBlocks
192
+ shouldShowInnerBlocks: shouldShowInnerBlocks,
193
+ showAppender: showAppender
191
194
  }), createElement(TreeGridRow, {
192
195
  level: 1,
193
196
  setSize: 1,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/off-canvas-editor/index.js"],"names":["useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","__experimentalTreeGridRow","TreeGridRow","__experimentalTreeGridCell","TreeGridCell","AsyncModeProvider","useSelect","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","__","ListViewBranch","ListViewContext","ListViewDropIndicator","useBlockSelection","useListViewClientIds","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","OffCanvasEditor","ref","blocks","showBlockMovers","isExpanded","LeafMoreMenu","description","onSelect","getBlock","clientIdsTree","draggedClientIds","selectedClientIds","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","isMounted","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","blockClientId","current","fixedListWindow","useWindowing","windowOverscan","expand","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","isTreeGridMounted"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport {\n\t__experimentalTreeGrid as TreeGrid,\n\t__experimentalTreeGridRow as TreeGridRow,\n\t__experimentalTreeGridCell as TreeGridCell,\n} from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {boolean} props.showBlockMovers Flag to enable block movers\n * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.\n * @param {Object} props.LeafMoreMenu Optional more menu substitution.\n * @param {string} props.description Optional accessible description for the tree grid component.\n * @param {string} props.onSelect Optional callback to be invoked when a block is selected.\n * @param {Object} ref Forwarded ref\n */\nfunction OffCanvasEditor(\n\t{\n\t\tid,\n\t\tblocks,\n\t\tshowBlockMovers = false,\n\t\tisExpanded = false,\n\t\tLeafMoreMenu,\n\t\tdescription = __( 'Block navigation structure' ),\n\t\tonSelect,\n\t},\n\tref\n) {\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( blocks );\n\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst isMounted = useRef( false );\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t( event, blockClientId ) => {\n\t\t\tupdateBlockSelection( event, blockClientId );\n\t\t\tsetSelectedTreeId( blockClientId );\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( getBlock( blockClientId ) );\n\t\t\t}\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]\n\t);\n\tuseEffect( () => {\n\t\tisMounted.current = true;\n\t}, [] );\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\tconst expand = useCallback(\n\t\t( blockClientId ) => {\n\t\t\tif ( ! blockClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( {\n\t\t\t\ttype: 'expand',\n\t\t\t\tclientIds: [ blockClientId ],\n\t\t\t} );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( blockClientId ) => {\n\t\t\tif ( ! blockClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( {\n\t\t\t\ttype: 'collapse',\n\t\t\t\tclientIds: [ blockClientId ],\n\t\t\t} );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tisTreeGridMounted: isMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tLeafMoreMenu,\n\t\t} ),\n\t\t[\n\t\t\tisMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tLeafMoreMenu,\n\t\t]\n\t);\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t<div className=\"offcanvas-editor-list-view-tree-wrapper\">\n\t\t\t\t<TreeGrid\n\t\t\t\t\tid={ id }\n\t\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\t\tref={ treeGridRef }\n\t\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\t\tonFocusRow={ focusRow }\n\t\t\t\t\t// eslint-disable-next-line jsx-a11y/aria-props\n\t\t\t\t\taria-description={ description }\n\t\t\t\t>\n\t\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<TreeGridRow\n\t\t\t\t\t\t\tlevel={ 1 }\n\t\t\t\t\t\t\tsetSize={ 1 }\n\t\t\t\t\t\t\tpositionInSet={ 1 }\n\t\t\t\t\t\t\tisExpanded={ true }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ ! clientIdsTree.length && (\n\t\t\t\t\t\t\t\t<TreeGridCell withoutGridItem>\n\t\t\t\t\t\t\t\t\t<div className=\"offcanvas-editor-list-view-is-empty\">\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'Your menu is currently empty. Add your first menu item to get started.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</TreeGridCell>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridRow>\n\t\t\t\t\t</ListViewContext.Provider>\n\t\t\t\t</TreeGrid>\n\t\t\t</div>\n\t\t</AsyncModeProvider>\n\t);\n}\n\nexport default forwardRef( OffCanvasEditor );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/off-canvas-editor/index.js"],"names":["useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","__experimentalTreeGridRow","TreeGridRow","__experimentalTreeGridCell","TreeGridCell","AsyncModeProvider","useSelect","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","__","ListViewBranch","ListViewContext","ListViewDropIndicator","useBlockSelection","useListViewClientIds","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","OffCanvasEditor","ref","blocks","showBlockMovers","isExpanded","showAppender","LeafMoreMenu","description","onSelect","getBlock","clientIdsTree","draggedClientIds","selectedClientIds","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","isMounted","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","blockClientId","current","fixedListWindow","useWindowing","windowOverscan","expand","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","isTreeGridMounted"],"mappings":";;AAAA;AACA;AACA;AACA,SACCA,YADD,EAECC,gCAAgC,IAAIC,kBAFrC,QAGO,oBAHP;AAIA,SACCC,sBAAsB,IAAIC,QAD3B,EAECC,yBAAyB,IAAIC,WAF9B,EAGCC,0BAA0B,IAAIC,YAH/B,QAIO,uBAJP;AAKA,SAASC,iBAAT,EAA4BC,SAA5B,QAA6C,iBAA7C;AACA,SACCC,WADD,EAECC,SAFD,EAGCC,OAHD,EAICC,MAJD,EAKCC,UALD,EAMCC,UAND,QAOO,oBAPP;AAQA,SAASC,EAAT,QAAmB,iBAAnB;AAEA;AACA;AACA;;AACA,OAAOC,cAAP,MAA2B,UAA3B;AACA,SAASC,eAAT,QAAgC,WAAhC;AACA,OAAOC,qBAAP,MAAkC,kBAAlC;AACA,OAAOC,iBAAP,MAA8B,uBAA9B;AACA,OAAOC,oBAAP,MAAiC,4BAAjC;AACA,OAAOC,mBAAP,MAAgC,2BAAhC;AACA,OAAOC,6BAAP,MAA0C,sCAA1C;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;;AAEA,MAAMC,QAAQ,GAAG,CAAEC,KAAF,EAASC,MAAT,KAAqB;AACrC,MAAKC,KAAK,CAACC,OAAN,CAAeF,MAAM,CAACG,SAAtB,CAAL,EAAyC;AACxC,WAAO,EACN,GAAGJ,KADG;AAEN,SAAGC,MAAM,CAACG,SAAP,CAAiBC,MAAjB,CACF,CAAEC,QAAF,EAAYC,EAAZ,MAAsB,EACrB,GAAGD,QADkB;AAErB,SAAEC,EAAF,GAAQN,MAAM,CAACO,IAAP,KAAgB;AAFH,OAAtB,CADE,EAKF,EALE;AAFG,KAAP;AAUA;;AACD,SAAOR,KAAP;AACA,CAdD;;AAgBA,OAAO,MAAMS,sBAAsB,GAAG,EAA/B;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,eAAT,OAWCC,GAXD,EAYE;AAAA,MAXD;AACCJ,IAAAA,EADD;AAECK,IAAAA,MAFD;AAGCC,IAAAA,eAAe,GAAG,KAHnB;AAICC,IAAAA,UAAU,GAAG,KAJd;AAKCC,IAAAA,YAAY,GAAG,IALhB;AAMCC,IAAAA,YAND;AAOCC,IAAAA,WAAW,GAAG5B,EAAE,CAAE,4BAAF,CAPjB;AAQC6B,IAAAA;AARD,GAWC;AACD,QAAM;AAAEC,IAAAA;AAAF,MAAerC,SAAS,CAAEgB,gBAAF,CAA9B;AACA,QAAM;AAAEsB,IAAAA,aAAF;AAAiBC,IAAAA,gBAAjB;AAAmCC,IAAAA;AAAnC,MACL5B,oBAAoB,CAAEkB,MAAF,CADrB;AAGA,QAAM;AAAEW,IAAAA,iBAAF;AAAqBC,IAAAA;AAArB,MAA+C1C,SAAS,CAC3D2C,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,mBADK;AAELC,MAAAA,yBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAE3B,gBAAF,CAJV;AAKA,UAAM+B,iBAAiB,GACtB,CAAAR,gBAAgB,SAAhB,IAAAA,gBAAgB,WAAhB,YAAAA,gBAAgB,CAAES,MAAlB,IAA2B,CAA3B,GACGH,yBAAyB,CAAEN,gBAAF,CAAzB,CAA8CS,MAA9C,GAAuD,CAD1D,GAEG,CAHJ;AAIA,WAAO;AACNP,MAAAA,iBAAiB,EAAEG,mBAAmB,KAAKG,iBADrC;AAENL,MAAAA,qBAAqB,EAAEI,uBAAuB,OAAO;AAF/C,KAAP;AAIA,GAf4D,EAgB7D,CAAEP,gBAAF,CAhB6D,CAA9D;AAmBA,QAAM;AAAEU,IAAAA;AAAF,MAA2BtC,iBAAiB,EAAlD;AAEA,QAAM,CAAEuC,aAAF,EAAiBC,gBAAjB,IAAsC9C,UAAU,CAAEY,QAAF,EAAY,EAAZ,CAAtD;AAEA,QAAM;AAAEY,IAAAA,GAAG,EAAEuB,WAAP;AAAoBC,IAAAA,MAAM,EAAEC;AAA5B,MAAgDzC,mBAAmB,EAAzE;AACA,QAAM0C,UAAU,GAAGnD,MAAM,EAAzB;AACA,QAAMoD,WAAW,GAAGlE,YAAY,CAAE,CAAEiE,UAAF,EAAcH,WAAd,EAA2BvB,GAA3B,CAAF,CAAhC;AAEA,QAAM4B,SAAS,GAAGrD,MAAM,CAAE,KAAF,CAAxB;AACA,QAAM;AAAEsD,IAAAA;AAAF,MAAwB5C,6BAA6B,CAAE;AAC5D6C,IAAAA,0BAA0B,EAAEnB,iBAAiB,CAAE,CAAF,CADe;AAE5DW,IAAAA;AAF4D,GAAF,CAA3D;AAIA,QAAMS,iBAAiB,GAAG3D,WAAW,CACpC,CAAE4D,KAAF,EAASC,aAAT,KAA4B;AAC3Bb,IAAAA,oBAAoB,CAAEY,KAAF,EAASC,aAAT,CAApB;AACAJ,IAAAA,iBAAiB,CAAEI,aAAF,CAAjB;;AACA,QAAK1B,QAAL,EAAgB;AACfA,MAAAA,QAAQ,CAAEC,QAAQ,CAAEyB,aAAF,CAAV,CAAR;AACA;AACD,GAPmC,EAQpC,CAAEJ,iBAAF,EAAqBT,oBAArB,EAA2Cb,QAA3C,EAAqDC,QAArD,CARoC,CAArC;AAUAnC,EAAAA,SAAS,CAAE,MAAM;AAChBuD,IAAAA,SAAS,CAACM,OAAV,GAAoB,IAApB;AACA,GAFQ,EAEN,EAFM,CAAT,CA/CC,CAmDD;AACA;AACA;;AACA,QAAM,CAAEC,eAAF,IAAsBxE,kBAAkB,CAC7C+D,UAD6C,EAE7C5B,sBAF6C,EAG7Cc,iBAH6C,EAI7C;AACCwB,IAAAA,YAAY,EAAE,IADf;AAECC,IAAAA,cAAc,EAAE;AAFjB,GAJ6C,CAA9C;AAUA,QAAMC,MAAM,GAAGlE,WAAW,CACvB6D,aAAF,IAAqB;AACpB,QAAK,CAAEA,aAAP,EAAuB;AACtB;AACA;;AACDX,IAAAA,gBAAgB,CAAE;AACjBzB,MAAAA,IAAI,EAAE,QADW;AAEjBJ,MAAAA,SAAS,EAAE,CAAEwC,aAAF;AAFM,KAAF,CAAhB;AAIA,GATwB,EAUzB,CAAEX,gBAAF,CAVyB,CAA1B;AAYA,QAAMiB,QAAQ,GAAGnE,WAAW,CACzB6D,aAAF,IAAqB;AACpB,QAAK,CAAEA,aAAP,EAAuB;AACtB;AACA;;AACDX,IAAAA,gBAAgB,CAAE;AACjBzB,MAAAA,IAAI,EAAE,UADW;AAEjBJ,MAAAA,SAAS,EAAE,CAAEwC,aAAF;AAFM,KAAF,CAAhB;AAIA,GAT0B,EAU3B,CAAEX,gBAAF,CAV2B,CAA5B;AAYA,QAAMkB,SAAS,GAAGpE,WAAW,CAC1BqE,GAAF,IAAW;AAAA;;AACVH,IAAAA,MAAM,CAAEG,GAAF,aAAEA,GAAF,uCAAEA,GAAG,CAAEC,OAAP,iDAAE,aAAcC,KAAhB,CAAN;AACA,GAH2B,EAI5B,CAAEL,MAAF,CAJ4B,CAA7B;AAMA,QAAMM,WAAW,GAAGxE,WAAW,CAC5BqE,GAAF,IAAW;AAAA;;AACVF,IAAAA,QAAQ,CAAEE,GAAF,aAAEA,GAAF,wCAAEA,GAAG,CAAEC,OAAP,kDAAE,cAAcC,KAAhB,CAAR;AACA,GAH6B,EAI9B,CAAEJ,QAAF,CAJ8B,CAA/B;AAMA,QAAMM,QAAQ,GAAGzE,WAAW,CAC3B,CAAE4D,KAAF,EAASc,QAAT,EAAmBC,MAAnB,KAA+B;AAC9B,QAAKf,KAAK,CAACgB,QAAX,EAAsB;AAAA;;AACrB5B,MAAAA,oBAAoB,CACnBY,KADmB,EAEnBc,QAFmB,aAEnBA,QAFmB,4CAEnBA,QAAQ,CAAEJ,OAFS,sDAEnB,kBAAmBC,KAFA,EAGnBI,MAHmB,aAGnBA,MAHmB,0CAGnBA,MAAM,CAAEL,OAHW,oDAGnB,gBAAiBC,KAHE,CAApB;AAKA;AACD,GAT0B,EAU3B,CAAEvB,oBAAF,CAV2B,CAA5B;AAaA,QAAM6B,YAAY,GAAG3E,OAAO,CAC3B,OAAQ;AACP4E,IAAAA,iBAAiB,EAAEtB,SAAS,CAACM,OADtB;AAEPxB,IAAAA,gBAFO;AAGPW,IAAAA,aAHO;AAIPiB,IAAAA,MAJO;AAKPC,IAAAA,QALO;AAMPlC,IAAAA;AANO,GAAR,CAD2B,EAS3B,CACCuB,SAAS,CAACM,OADX,EAECxB,gBAFD,EAGCW,aAHD,EAICiB,MAJD,EAKCC,QALD,EAMClC,YAND,CAT2B,CAA5B;AAmBA,SACC,cAAC,iBAAD;AAAmB,IAAA,KAAK,EAAG;AAA3B,KACC,cAAC,qBAAD;AACC,IAAA,WAAW,EAAGqB,UADf;AAEC,IAAA,eAAe,EAAGD;AAFnB,IADD,EAKC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,QAAD;AACC,IAAA,EAAE,EAAG7B,EADN;AAEC,IAAA,SAAS,EAAC,6BAFX;AAGC,kBAAalB,EAAE,CAAE,4BAAF,CAHhB;AAIC,IAAA,GAAG,EAAGiD,WAJP;AAKC,IAAA,aAAa,EAAGiB,WALjB;AAMC,IAAA,WAAW,EAAGJ,SANf;AAOC,IAAA,UAAU,EAAGK,QAPd,CAQC;AARD;AASC,wBAAmBvC;AATpB,KAWC,cAAC,eAAD,CAAiB,QAAjB;AAA0B,IAAA,KAAK,EAAG2C;AAAlC,KACC,cAAC,cAAD;AACC,IAAA,MAAM,EAAGxC,aADV;AAEC,IAAA,WAAW,EAAGsB,iBAFf;AAGC,IAAA,eAAe,EAAG7B,eAHnB;AAIC,IAAA,eAAe,EAAGiC,eAJnB;AAKC,IAAA,iBAAiB,EAAGxB,iBALrB;AAMC,IAAA,UAAU,EAAGR,UANd;AAOC,IAAA,qBAAqB,EAAGU,qBAPzB;AAQC,IAAA,YAAY,EAAGT;AARhB,IADD,EAWC,cAAC,WAAD;AACC,IAAA,KAAK,EAAG,CADT;AAEC,IAAA,OAAO,EAAG,CAFX;AAGC,IAAA,aAAa,EAAG,CAHjB;AAIC,IAAA,UAAU,EAAG;AAJd,KAMG,CAAEK,aAAa,CAACU,MAAhB,IACD,cAAC,YAAD;AAAc,IAAA,eAAe;AAA7B,KACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGzC,EAAE,CACH,wEADG,CADL,CADD,CAPF,CAXD,CAXD,CADD,CALD,CADD;AAkDA;;AAED,eAAeD,UAAU,CAAEsB,eAAF,CAAzB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport {\n\t__experimentalTreeGrid as TreeGrid,\n\t__experimentalTreeGridRow as TreeGridRow,\n\t__experimentalTreeGridCell as TreeGridCell,\n} from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {boolean} props.showBlockMovers Flag to enable block movers\n * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.\n * @param {Object} props.LeafMoreMenu Optional more menu substitution.\n * @param {string} props.description Optional accessible description for the tree grid component.\n * @param {string} props.onSelect Optional callback to be invoked when a block is selected.\n * @param {string} props.showAppender Flag to show or hide the block appender.\n * @param {Object} ref Forwarded ref\n */\nfunction OffCanvasEditor(\n\t{\n\t\tid,\n\t\tblocks,\n\t\tshowBlockMovers = false,\n\t\tisExpanded = false,\n\t\tshowAppender = true,\n\t\tLeafMoreMenu,\n\t\tdescription = __( 'Block navigation structure' ),\n\t\tonSelect,\n\t},\n\tref\n) {\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( blocks );\n\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst isMounted = useRef( false );\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t( event, blockClientId ) => {\n\t\t\tupdateBlockSelection( event, blockClientId );\n\t\t\tsetSelectedTreeId( blockClientId );\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( getBlock( blockClientId ) );\n\t\t\t}\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]\n\t);\n\tuseEffect( () => {\n\t\tisMounted.current = true;\n\t}, [] );\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\tconst expand = useCallback(\n\t\t( blockClientId ) => {\n\t\t\tif ( ! blockClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( {\n\t\t\t\ttype: 'expand',\n\t\t\t\tclientIds: [ blockClientId ],\n\t\t\t} );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( blockClientId ) => {\n\t\t\tif ( ! blockClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( {\n\t\t\t\ttype: 'collapse',\n\t\t\t\tclientIds: [ blockClientId ],\n\t\t\t} );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tisTreeGridMounted: isMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tLeafMoreMenu,\n\t\t} ),\n\t\t[\n\t\t\tisMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tLeafMoreMenu,\n\t\t]\n\t);\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t<div className=\"offcanvas-editor-list-view-tree-wrapper\">\n\t\t\t\t<TreeGrid\n\t\t\t\t\tid={ id }\n\t\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\t\tref={ treeGridRef }\n\t\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\t\tonFocusRow={ focusRow }\n\t\t\t\t\t// eslint-disable-next-line jsx-a11y/aria-props\n\t\t\t\t\taria-description={ description }\n\t\t\t\t>\n\t\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t\t\tshowAppender={ showAppender }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<TreeGridRow\n\t\t\t\t\t\t\tlevel={ 1 }\n\t\t\t\t\t\t\tsetSize={ 1 }\n\t\t\t\t\t\t\tpositionInSet={ 1 }\n\t\t\t\t\t\t\tisExpanded={ true }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ ! clientIdsTree.length && (\n\t\t\t\t\t\t\t\t<TreeGridCell withoutGridItem>\n\t\t\t\t\t\t\t\t\t<div className=\"offcanvas-editor-list-view-is-empty\">\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'Your menu is currently empty. Add your first menu item to get started.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</TreeGridCell>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridRow>\n\t\t\t\t\t</ListViewContext.Provider>\n\t\t\t\t</TreeGrid>\n\t\t\t</div>\n\t\t</AsyncModeProvider>\n\t);\n}\n\nexport default forwardRef( OffCanvasEditor );\n"]}
@@ -6,6 +6,7 @@ import { ExperimentalBlockEditorProvider } from './components/provider';
6
6
  import { lock } from './lock-unlock';
7
7
  import OffCanvasEditor from './components/off-canvas-editor';
8
8
  import LeafMoreMenu from './components/off-canvas-editor/leaf-more-menu';
9
+ import { ComposedPrivateInserter as PrivateInserter } from './components/inserter';
9
10
  /**
10
11
  * Private @wordpress/block-editor APIs.
11
12
  */
@@ -14,6 +15,7 @@ export const privateApis = {};
14
15
  lock(privateApis, { ...globalStyles,
15
16
  ExperimentalBlockEditorProvider,
16
17
  LeafMoreMenu,
17
- OffCanvasEditor
18
+ OffCanvasEditor,
19
+ PrivateInserter
18
20
  });
19
21
  //# sourceMappingURL=private-apis.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/private-apis.js"],"names":["globalStyles","ExperimentalBlockEditorProvider","lock","OffCanvasEditor","LeafMoreMenu","privateApis"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,KAAKA,YAAZ,MAA8B,4BAA9B;AACA,SAASC,+BAAT,QAAgD,uBAAhD;AACA,SAASC,IAAT,QAAqB,eAArB;AACA,OAAOC,eAAP,MAA4B,gCAA5B;AACA,OAAOC,YAAP,MAAyB,+CAAzB;AAEA;AACA;AACA;;AACA,OAAO,MAAMC,WAAW,GAAG,EAApB;AACPH,IAAI,CAAEG,WAAF,EAAe,EAClB,GAAGL,YADe;AAElBC,EAAAA,+BAFkB;AAGlBG,EAAAA,YAHkB;AAIlBD,EAAAA;AAJkB,CAAf,CAAJ","sourcesContent":["/**\n * Internal dependencies\n */\nimport * as globalStyles from './components/global-styles';\nimport { ExperimentalBlockEditorProvider } from './components/provider';\nimport { lock } from './lock-unlock';\nimport OffCanvasEditor from './components/off-canvas-editor';\nimport LeafMoreMenu from './components/off-canvas-editor/leaf-more-menu';\n\n/**\n * Private @wordpress/block-editor APIs.\n */\nexport const privateApis = {};\nlock( privateApis, {\n\t...globalStyles,\n\tExperimentalBlockEditorProvider,\n\tLeafMoreMenu,\n\tOffCanvasEditor,\n} );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/private-apis.js"],"names":["globalStyles","ExperimentalBlockEditorProvider","lock","OffCanvasEditor","LeafMoreMenu","ComposedPrivateInserter","PrivateInserter","privateApis"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,KAAKA,YAAZ,MAA8B,4BAA9B;AACA,SAASC,+BAAT,QAAgD,uBAAhD;AACA,SAASC,IAAT,QAAqB,eAArB;AACA,OAAOC,eAAP,MAA4B,gCAA5B;AACA,OAAOC,YAAP,MAAyB,+CAAzB;AACA,SAASC,uBAAuB,IAAIC,eAApC,QAA2D,uBAA3D;AAEA;AACA;AACA;;AACA,OAAO,MAAMC,WAAW,GAAG,EAApB;AACPL,IAAI,CAAEK,WAAF,EAAe,EAClB,GAAGP,YADe;AAElBC,EAAAA,+BAFkB;AAGlBG,EAAAA,YAHkB;AAIlBD,EAAAA,eAJkB;AAKlBG,EAAAA;AALkB,CAAf,CAAJ","sourcesContent":["/**\n * Internal dependencies\n */\nimport * as globalStyles from './components/global-styles';\nimport { ExperimentalBlockEditorProvider } from './components/provider';\nimport { lock } from './lock-unlock';\nimport OffCanvasEditor from './components/off-canvas-editor';\nimport LeafMoreMenu from './components/off-canvas-editor/leaf-more-menu';\nimport { ComposedPrivateInserter as PrivateInserter } from './components/inserter';\n\n/**\n * Private @wordpress/block-editor APIs.\n */\nexport const privateApis = {};\nlock( privateApis, {\n\t...globalStyles,\n\tExperimentalBlockEditorProvider,\n\tLeafMoreMenu,\n\tOffCanvasEditor,\n\tPrivateInserter,\n} );\n"]}
@@ -221,21 +221,32 @@ export function selectBlock(clientId) {
221
221
  }
222
222
  /**
223
223
  * Yields action objects used in signalling that the block preceding the given
224
- * clientId should be selected.
224
+ * clientId (or optionally, its first parent from bottom to top)
225
+ * should be selected.
225
226
  *
226
- * @param {string} clientId Block client ID.
227
+ * @param {string} clientId Block client ID.
228
+ * @param {boolean} fallbackToParent If true, select the first parent if there is no previous block.
227
229
  */
228
230
 
229
- export const selectPreviousBlock = clientId => _ref4 => {
230
- let {
231
- select,
232
- dispatch
233
- } = _ref4;
234
- const previousBlockClientId = select.getPreviousBlockClientId(clientId);
231
+ export const selectPreviousBlock = function (clientId) {
232
+ let fallbackToParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
233
+ return _ref4 => {
234
+ let {
235
+ select,
236
+ dispatch
237
+ } = _ref4;
238
+ const previousBlockClientId = select.getPreviousBlockClientId(clientId);
235
239
 
236
- if (previousBlockClientId) {
237
- dispatch.selectBlock(previousBlockClientId, -1);
238
- }
240
+ if (previousBlockClientId) {
241
+ dispatch.selectBlock(previousBlockClientId, -1);
242
+ } else if (fallbackToParent) {
243
+ const firstParentClientId = select.getBlockRootClientId(clientId);
244
+
245
+ if (firstParentClientId) {
246
+ dispatch.selectBlock(firstParentClientId, -1);
247
+ }
248
+ }
249
+ };
239
250
  };
240
251
  /**
241
252
  * Yields action objects used in signalling that the block following the given
@@ -1032,8 +1043,11 @@ export const mergeBlocks = (firstBlockClientId, secondBlockClientId) => _ref16 =
1032
1043
  * the set of specified client IDs are to be removed.
1033
1044
  *
1034
1045
  * @param {string|string[]} clientIds Client IDs of blocks to remove.
1035
- * @param {boolean} selectPrevious True if the previous block should be
1036
- * selected when a block is removed.
1046
+ * @param {boolean} selectPrevious True if the previous block
1047
+ * or the immediate parent
1048
+ * (if no previous block exists)
1049
+ * should be selected
1050
+ * when a block is removed.
1037
1051
  */
1038
1052
 
1039
1053
  export const removeBlocks = function (clientIds) {
@@ -1057,7 +1071,7 @@ export const removeBlocks = function (clientIds) {
1057
1071
  }
1058
1072
 
1059
1073
  if (selectPrevious) {
1060
- dispatch.selectPreviousBlock(clientIds[0]);
1074
+ dispatch.selectPreviousBlock(clientIds[0], selectPrevious);
1061
1075
  }
1062
1076
 
1063
1077
  dispatch({