@wordpress/block-library 8.25.0 → 8.26.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 (235) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE.md +1 -1
  3. package/build/audio/edit.js +10 -12
  4. package/build/audio/edit.js.map +1 -1
  5. package/build/block/edit.js +79 -32
  6. package/build/block/edit.js.map +1 -1
  7. package/build/comments-title/deprecated.js +1 -1
  8. package/build/comments-title/index.js +1 -1
  9. package/build/cover/edit/inspector-controls.js +1 -1
  10. package/build/cover/edit/inspector-controls.js.map +1 -1
  11. package/build/embed/util.js +4 -4
  12. package/build/embed/util.js.map +1 -1
  13. package/build/file/edit.js +19 -27
  14. package/build/file/edit.js.map +1 -1
  15. package/build/gallery/edit.js +36 -17
  16. package/build/gallery/edit.js.map +1 -1
  17. package/build/gallery/gallery.js +3 -2
  18. package/build/gallery/gallery.js.map +1 -1
  19. package/build/gallery/index.js +4 -0
  20. package/build/gallery/index.js.map +1 -1
  21. package/build/gallery/transforms.js +4 -68
  22. package/build/gallery/transforms.js.map +1 -1
  23. package/build/group/index.js +5 -1
  24. package/build/group/index.js.map +1 -1
  25. package/build/image/deprecated.js +11 -0
  26. package/build/image/deprecated.js.map +1 -1
  27. package/build/image/edit.native.js +3 -0
  28. package/build/image/edit.native.js.map +1 -1
  29. package/build/image/image.js +22 -21
  30. package/build/image/image.js.map +1 -1
  31. package/build/image/view.js +7 -1
  32. package/build/image/view.js.map +1 -1
  33. package/build/list/edit.js +10 -15
  34. package/build/list/edit.js.map +1 -1
  35. package/build/list-item/edit.js +17 -2
  36. package/build/list-item/edit.js.map +1 -1
  37. package/build/list-item/hooks/use-enter.js +5 -3
  38. package/build/list-item/hooks/use-enter.js.map +1 -1
  39. package/build/list-item/hooks/use-enter.native.js +4 -3
  40. package/build/list-item/hooks/use-enter.native.js.map +1 -1
  41. package/build/list-item/hooks/use-indent-list-item.js +2 -3
  42. package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
  43. package/build/list-item/hooks/use-merge.js +1 -1
  44. package/build/list-item/hooks/use-merge.js.map +1 -1
  45. package/build/list-item/hooks/use-outdent-list-item.js +3 -17
  46. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  47. package/build/list-item/hooks/use-space.js +8 -4
  48. package/build/list-item/hooks/use-space.js.map +1 -1
  49. package/build/media-text/media-container.native.js +3 -0
  50. package/build/media-text/media-container.native.js.map +1 -1
  51. package/build/navigation/constants.js +3 -1
  52. package/build/navigation/constants.js.map +1 -1
  53. package/build/navigation/edit/index.js +4 -0
  54. package/build/navigation/edit/index.js.map +1 -1
  55. package/build/navigation/view.js +25 -1
  56. package/build/navigation/view.js.map +1 -1
  57. package/build/pattern/edit.js +24 -2
  58. package/build/pattern/edit.js.map +1 -1
  59. package/build/pattern/recursion-detector.js +147 -0
  60. package/build/pattern/recursion-detector.js.map +1 -0
  61. package/build/post-featured-image/edit.js +19 -2
  62. package/build/post-featured-image/edit.js.map +1 -1
  63. package/build/post-featured-image/index.js +4 -0
  64. package/build/post-featured-image/index.js.map +1 -1
  65. package/build/query/edit/inspector-controls/index.js +3 -1
  66. package/build/query/edit/inspector-controls/index.js.map +1 -1
  67. package/build/query-pagination-numbers/index.js +1 -1
  68. package/build/search/edit.js +3 -5
  69. package/build/search/edit.js.map +1 -1
  70. package/build/search/index.js +0 -4
  71. package/build/search/index.js.map +1 -1
  72. package/build/site-logo/edit.js +7 -6
  73. package/build/site-logo/edit.js.map +1 -1
  74. package/build/spacer/edit.native.js +2 -2
  75. package/build/spacer/edit.native.js.map +1 -1
  76. package/build/tag-cloud/edit.js +5 -9
  77. package/build/tag-cloud/edit.js.map +1 -1
  78. package/build/utils/constants.js +16 -0
  79. package/build/utils/constants.js.map +1 -0
  80. package/build/video/edit.js +11 -8
  81. package/build/video/edit.js.map +1 -1
  82. package/build-module/audio/edit.js +10 -12
  83. package/build-module/audio/edit.js.map +1 -1
  84. package/build-module/block/edit.js +83 -36
  85. package/build-module/block/edit.js.map +1 -1
  86. package/build-module/comments-title/deprecated.js +1 -1
  87. package/build-module/comments-title/index.js +1 -1
  88. package/build-module/cover/edit/inspector-controls.js +1 -1
  89. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  90. package/build-module/embed/util.js +4 -4
  91. package/build-module/embed/util.js.map +1 -1
  92. package/build-module/file/edit.js +19 -27
  93. package/build-module/file/edit.js.map +1 -1
  94. package/build-module/gallery/edit.js +36 -17
  95. package/build-module/gallery/edit.js.map +1 -1
  96. package/build-module/gallery/gallery.js +3 -2
  97. package/build-module/gallery/gallery.js.map +1 -1
  98. package/build-module/gallery/index.js +4 -0
  99. package/build-module/gallery/index.js.map +1 -1
  100. package/build-module/gallery/transforms.js +4 -68
  101. package/build-module/gallery/transforms.js.map +1 -1
  102. package/build-module/group/index.js +5 -1
  103. package/build-module/group/index.js.map +1 -1
  104. package/build-module/image/deprecated.js +11 -0
  105. package/build-module/image/deprecated.js.map +1 -1
  106. package/build-module/image/edit.native.js +3 -0
  107. package/build-module/image/edit.native.js.map +1 -1
  108. package/build-module/image/image.js +17 -16
  109. package/build-module/image/image.js.map +1 -1
  110. package/build-module/image/view.js +7 -1
  111. package/build-module/image/view.js.map +1 -1
  112. package/build-module/list/edit.js +10 -15
  113. package/build-module/list/edit.js.map +1 -1
  114. package/build-module/list-item/edit.js +18 -3
  115. package/build-module/list-item/edit.js.map +1 -1
  116. package/build-module/list-item/hooks/use-enter.js +5 -3
  117. package/build-module/list-item/hooks/use-enter.js.map +1 -1
  118. package/build-module/list-item/hooks/use-enter.native.js +4 -3
  119. package/build-module/list-item/hooks/use-enter.native.js.map +1 -1
  120. package/build-module/list-item/hooks/use-indent-list-item.js +2 -3
  121. package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
  122. package/build-module/list-item/hooks/use-merge.js +1 -1
  123. package/build-module/list-item/hooks/use-merge.js.map +1 -1
  124. package/build-module/list-item/hooks/use-outdent-list-item.js +3 -17
  125. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  126. package/build-module/list-item/hooks/use-space.js +8 -4
  127. package/build-module/list-item/hooks/use-space.js.map +1 -1
  128. package/build-module/media-text/media-container.native.js +3 -0
  129. package/build-module/media-text/media-container.native.js.map +1 -1
  130. package/build-module/navigation/constants.js +1 -0
  131. package/build-module/navigation/constants.js.map +1 -1
  132. package/build-module/navigation/edit/index.js +5 -1
  133. package/build-module/navigation/edit/index.js.map +1 -1
  134. package/build-module/navigation/view.js +25 -1
  135. package/build-module/navigation/view.js.map +1 -1
  136. package/build-module/pattern/edit.js +26 -4
  137. package/build-module/pattern/edit.js.map +1 -1
  138. package/build-module/pattern/recursion-detector.js +139 -0
  139. package/build-module/pattern/recursion-detector.js.map +1 -0
  140. package/build-module/post-featured-image/edit.js +19 -2
  141. package/build-module/post-featured-image/edit.js.map +1 -1
  142. package/build-module/post-featured-image/index.js +4 -0
  143. package/build-module/post-featured-image/index.js.map +1 -1
  144. package/build-module/query/edit/inspector-controls/index.js +3 -1
  145. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  146. package/build-module/query-pagination-numbers/index.js +1 -1
  147. package/build-module/search/edit.js +3 -5
  148. package/build-module/search/edit.js.map +1 -1
  149. package/build-module/search/index.js +0 -4
  150. package/build-module/search/index.js.map +1 -1
  151. package/build-module/site-logo/edit.js +7 -6
  152. package/build-module/site-logo/edit.js.map +1 -1
  153. package/build-module/spacer/edit.native.js +2 -2
  154. package/build-module/spacer/edit.native.js.map +1 -1
  155. package/build-module/tag-cloud/edit.js +6 -10
  156. package/build-module/tag-cloud/edit.js.map +1 -1
  157. package/build-module/utils/constants.js +9 -0
  158. package/build-module/utils/constants.js.map +1 -0
  159. package/build-module/video/edit.js +11 -8
  160. package/build-module/video/edit.js.map +1 -1
  161. package/build-style/button/editor-rtl.css +0 -37
  162. package/build-style/button/editor.css +0 -37
  163. package/build-style/button/style-rtl.css +6 -6
  164. package/build-style/button/style.css +6 -6
  165. package/build-style/editor-rtl.css +2 -44
  166. package/build-style/editor.css +2 -44
  167. package/build-style/navigation/editor-rtl.css +2 -4
  168. package/build-style/navigation/editor.css +2 -4
  169. package/build-style/navigation/style-rtl.css +14 -18
  170. package/build-style/navigation/style.css +14 -18
  171. package/build-style/search/style-rtl.css +26 -27
  172. package/build-style/search/style.css +26 -27
  173. package/build-style/style-rtl.css +46 -51
  174. package/build-style/style.css +46 -51
  175. package/build-style/table/editor-rtl.css +0 -3
  176. package/build-style/table/editor.css +0 -3
  177. package/package.json +32 -32
  178. package/src/audio/edit.js +19 -19
  179. package/src/audio/test/__snapshots__/edit.native.js.snap +12 -0
  180. package/src/audio/test/edit.native.js +29 -0
  181. package/src/block/edit.js +114 -60
  182. package/src/button/editor.scss +0 -43
  183. package/src/button/style.scss +6 -6
  184. package/src/comments-title/block.json +1 -1
  185. package/src/cover/edit/inspector-controls.js +1 -1
  186. package/src/embed/util.js +2 -2
  187. package/src/file/edit.js +17 -24
  188. package/src/gallery/block.json +4 -0
  189. package/src/gallery/edit.js +69 -42
  190. package/src/gallery/gallery.js +4 -1
  191. package/src/gallery/index.php +18 -0
  192. package/src/gallery/transforms.js +2 -55
  193. package/src/group/block.json +5 -1
  194. package/src/image/deprecated.js +8 -0
  195. package/src/image/edit.native.js +3 -0
  196. package/src/image/image.js +54 -35
  197. package/src/image/index.php +1 -6
  198. package/src/image/view.js +5 -2
  199. package/src/list/edit.js +27 -35
  200. package/src/list-item/edit.js +18 -2
  201. package/src/list-item/hooks/use-enter.js +63 -62
  202. package/src/list-item/hooks/use-enter.native.js +9 -5
  203. package/src/list-item/hooks/use-indent-list-item.js +43 -53
  204. package/src/list-item/hooks/use-merge.js +1 -1
  205. package/src/list-item/hooks/use-outdent-list-item.js +50 -69
  206. package/src/list-item/hooks/use-space.js +7 -4
  207. package/src/media-text/media-container.native.js +3 -1
  208. package/src/navigation/constants.js +2 -0
  209. package/src/navigation/edit/index.js +11 -1
  210. package/src/navigation/editor.scss +1 -1
  211. package/src/navigation/style.scss +18 -16
  212. package/src/navigation/view.js +29 -3
  213. package/src/paragraph/test/__snapshots__/edit.native.js.snap +12 -0
  214. package/src/paragraph/test/edit.native.js +114 -0
  215. package/src/pattern/edit.js +35 -3
  216. package/src/pattern/index.php +16 -0
  217. package/src/pattern/recursion-detector.js +145 -0
  218. package/src/pattern/test/index.js +74 -0
  219. package/src/post-featured-image/block.json +4 -0
  220. package/src/post-featured-image/edit.js +32 -1
  221. package/src/post-featured-image/index.php +31 -0
  222. package/src/query/edit/inspector-controls/index.js +2 -0
  223. package/src/query-pagination-numbers/block.json +1 -1
  224. package/src/search/block.json +0 -4
  225. package/src/search/edit.js +2 -8
  226. package/src/search/index.php +3 -7
  227. package/src/search/style.scss +27 -29
  228. package/src/site-logo/edit.js +3 -4
  229. package/src/social-link/index.php +1 -1
  230. package/src/spacer/edit.native.js +4 -2
  231. package/src/table/editor.scss +0 -3
  232. package/src/tag-cloud/edit.js +7 -7
  233. package/src/template-part/index.php +6 -0
  234. package/src/utils/constants.js +8 -0
  235. package/src/video/edit.js +29 -27
@@ -1 +1 @@
1
- {"version":3,"names":["BlockControls","useBlockProps","useInnerBlocksProps","store","blockEditorStore","ToolbarButton","useDispatch","useSelect","useRegistry","isRTL","__","formatListBullets","formatListBulletsRTL","formatListNumbered","formatListNumberedRTL","formatOutdent","formatOutdentRTL","createBlock","useCallback","useEffect","Platform","deprecated","OrderedListSettings","migrateToListV2","TagName","TEMPLATE","NATIVE_MARGIN_SPACING","useMigrateOnLoad","attributes","clientId","registry","updateBlockAttributes","replaceInnerBlocks","values","newAttributes","newInnerBlocks","since","version","alternative","batch","useOutdentList","canOutdent","innerSelect","getBlockRootClientId","getBlock","parentId","name","replaceBlocks","selectionChange","getBlockAttributes","parentBlockId","parentBlockAttributes","newParentBlock","innerBlocks","length","IndentUI","outdentList","createElement","Fragment","icon","title","describedBy","disabled","onClick","Edit","setAttributes","style","ordered","type","reversed","start","blockProps","isNative","listStyleType","undefined","innerBlocksProps","allowedBlocks","template","templateLock","templateInsertUpdatesSelection","marginVertical","marginHorizontal","renderAppender","__experimentalCaptureToolbars","controls","group","isActive"],"sources":["@wordpress/block-library/src/list/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { ToolbarButton } from '@wordpress/components';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport {\n\tformatListBullets,\n\tformatListBulletsRTL,\n\tformatListNumbered,\n\tformatListNumberedRTL,\n\tformatOutdent,\n\tformatOutdentRTL,\n} from '@wordpress/icons';\nimport { createBlock } from '@wordpress/blocks';\nimport { useCallback, useEffect, Platform } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport OrderedListSettings from './ordered-list-settings';\nimport { migrateToListV2 } from './utils';\nimport TagName from './tag-name';\n\nconst TEMPLATE = [ [ 'core/list-item' ] ];\nconst NATIVE_MARGIN_SPACING = 8;\n\n/**\n * At the moment, deprecations don't handle create blocks from attributes\n * (like when using CPT templates). For this reason, this hook is necessary\n * to avoid breaking templates using the old list block format.\n *\n * @param {Object} attributes Block attributes.\n * @param {string} clientId Block client ID.\n */\nfunction useMigrateOnLoad( attributes, clientId ) {\n\tconst registry = useRegistry();\n\tconst { updateBlockAttributes, replaceInnerBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// As soon as the block is loaded, migrate it to the new version.\n\n\t\tif ( ! attributes.values ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ newAttributes, newInnerBlocks ] = migrateToListV2( attributes );\n\n\t\tdeprecated( 'Value attribute on the list block', {\n\t\t\tsince: '6.0',\n\t\t\tversion: '6.5',\n\t\t\talternative: 'inner blocks',\n\t\t} );\n\n\t\tregistry.batch( () => {\n\t\t\tupdateBlockAttributes( clientId, newAttributes );\n\t\t\treplaceInnerBlocks( clientId, newInnerBlocks );\n\t\t} );\n\t}, [ attributes.values ] );\n}\n\nfunction useOutdentList( clientId ) {\n\tconst { canOutdent } = useSelect(\n\t\t( innerSelect ) => {\n\t\t\tconst { getBlockRootClientId, getBlock } =\n\t\t\t\tinnerSelect( blockEditorStore );\n\t\t\tconst parentId = getBlockRootClientId( clientId );\n\t\t\treturn {\n\t\t\t\tcanOutdent:\n\t\t\t\t\t!! parentId &&\n\t\t\t\t\tgetBlock( parentId ).name === 'core/list-item',\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlockRootClientId, getBlockAttributes, getBlock } =\n\t\tuseSelect( blockEditorStore );\n\n\treturn [\n\t\tcanOutdent,\n\t\tuseCallback( () => {\n\t\t\tconst parentBlockId = getBlockRootClientId( clientId );\n\t\t\tconst parentBlockAttributes = getBlockAttributes( parentBlockId );\n\t\t\t// Create a new parent block without the inner blocks.\n\t\t\tconst newParentBlock = createBlock(\n\t\t\t\t'core/list-item',\n\t\t\t\tparentBlockAttributes\n\t\t\t);\n\t\t\tconst { innerBlocks } = getBlock( clientId );\n\t\t\t// Replace the parent block with a new parent block without inner blocks,\n\t\t\t// and make the inner blocks siblings of the parent.\n\t\t\treplaceBlocks(\n\t\t\t\t[ parentBlockId ],\n\t\t\t\t[ newParentBlock, ...innerBlocks ]\n\t\t\t);\n\t\t\t// Select the last child of the list being outdent.\n\t\t\tselectionChange( innerBlocks[ innerBlocks.length - 1 ].clientId );\n\t\t}, [ clientId ] ),\n\t];\n}\n\nfunction IndentUI( { clientId } ) {\n\tconst [ canOutdent, outdentList ] = useOutdentList( clientId );\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatOutdentRTL : formatOutdent }\n\t\t\t\ttitle={ __( 'Outdent' ) }\n\t\t\t\tdescribedBy={ __( 'Outdent list item' ) }\n\t\t\t\tdisabled={ ! canOutdent }\n\t\t\t\tonClick={ outdentList }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default function Edit( { attributes, setAttributes, clientId, style } ) {\n\tconst { ordered, type, reversed, start } = attributes;\n\tconst blockProps = useBlockProps( {\n\t\tstyle: {\n\t\t\t...( Platform.isNative && style ),\n\t\t\tlistStyleType: ordered && type !== 'decimal' ? type : undefined,\n\t\t},\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/list-item' ],\n\t\ttemplate: TEMPLATE,\n\t\ttemplateLock: false,\n\t\ttemplateInsertUpdatesSelection: true,\n\t\t...( Platform.isNative && {\n\t\t\tmarginVertical: NATIVE_MARGIN_SPACING,\n\t\t\tmarginHorizontal: NATIVE_MARGIN_SPACING,\n\t\t\trenderAppender: false,\n\t\t} ),\n\t\t__experimentalCaptureToolbars: true,\n\t} );\n\tuseMigrateOnLoad( attributes, clientId );\n\n\tconst controls = (\n\t\t<BlockControls group=\"block\">\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatListBulletsRTL : formatListBullets }\n\t\t\t\ttitle={ __( 'Unordered' ) }\n\t\t\t\tdescribedBy={ __( 'Convert to unordered list' ) }\n\t\t\t\tisActive={ ordered === false }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetAttributes( { ordered: false } );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatListNumberedRTL : formatListNumbered }\n\t\t\t\ttitle={ __( 'Ordered' ) }\n\t\t\t\tdescribedBy={ __( 'Convert to ordered list' ) }\n\t\t\t\tisActive={ ordered === true }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetAttributes( { ordered: true } );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<IndentUI clientId={ clientId } />\n\t\t</BlockControls>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<TagName\n\t\t\t\tordered={ ordered }\n\t\t\t\treversed={ reversed }\n\t\t\t\tstart={ start }\n\t\t\t\t{ ...innerBlocksProps }\n\t\t\t/>\n\t\t\t{ controls }\n\t\t\t{ ordered && (\n\t\t\t\t<OrderedListSettings\n\t\t\t\t\t{ ...{\n\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\treversed,\n\t\t\t\t\t\tstart,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["BlockControls","useBlockProps","useInnerBlocksProps","store","blockEditorStore","ToolbarButton","useDispatch","useSelect","useRegistry","isRTL","__","formatListBullets","formatListBulletsRTL","formatListNumbered","formatListNumberedRTL","formatOutdent","formatOutdentRTL","createBlock","useCallback","useEffect","Platform","deprecated","OrderedListSettings","migrateToListV2","TagName","TEMPLATE","NATIVE_MARGIN_SPACING","useMigrateOnLoad","attributes","clientId","registry","updateBlockAttributes","replaceInnerBlocks","values","newAttributes","newInnerBlocks","since","version","alternative","batch","useOutdentList","replaceBlocks","selectionChange","getBlockRootClientId","getBlockAttributes","getBlock","parentBlockId","parentBlockAttributes","newParentBlock","innerBlocks","length","IndentUI","outdentList","canOutdent","select","getBlockName","createElement","Fragment","icon","title","describedBy","disabled","onClick","Edit","setAttributes","style","ordered","type","reversed","start","blockProps","isNative","listStyleType","undefined","innerBlocksProps","allowedBlocks","template","templateLock","templateInsertUpdatesSelection","marginVertical","marginHorizontal","renderAppender","__experimentalCaptureToolbars","controls","group","isActive"],"sources":["@wordpress/block-library/src/list/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { ToolbarButton } from '@wordpress/components';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport {\n\tformatListBullets,\n\tformatListBulletsRTL,\n\tformatListNumbered,\n\tformatListNumberedRTL,\n\tformatOutdent,\n\tformatOutdentRTL,\n} from '@wordpress/icons';\nimport { createBlock } from '@wordpress/blocks';\nimport { useCallback, useEffect, Platform } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport OrderedListSettings from './ordered-list-settings';\nimport { migrateToListV2 } from './utils';\nimport TagName from './tag-name';\n\nconst TEMPLATE = [ [ 'core/list-item' ] ];\nconst NATIVE_MARGIN_SPACING = 8;\n\n/**\n * At the moment, deprecations don't handle create blocks from attributes\n * (like when using CPT templates). For this reason, this hook is necessary\n * to avoid breaking templates using the old list block format.\n *\n * @param {Object} attributes Block attributes.\n * @param {string} clientId Block client ID.\n */\nfunction useMigrateOnLoad( attributes, clientId ) {\n\tconst registry = useRegistry();\n\tconst { updateBlockAttributes, replaceInnerBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// As soon as the block is loaded, migrate it to the new version.\n\n\t\tif ( ! attributes.values ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ newAttributes, newInnerBlocks ] = migrateToListV2( attributes );\n\n\t\tdeprecated( 'Value attribute on the list block', {\n\t\t\tsince: '6.0',\n\t\t\tversion: '6.5',\n\t\t\talternative: 'inner blocks',\n\t\t} );\n\n\t\tregistry.batch( () => {\n\t\t\tupdateBlockAttributes( clientId, newAttributes );\n\t\t\treplaceInnerBlocks( clientId, newInnerBlocks );\n\t\t} );\n\t}, [ attributes.values ] );\n}\n\nfunction useOutdentList( clientId ) {\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlockRootClientId, getBlockAttributes, getBlock } =\n\t\tuseSelect( blockEditorStore );\n\n\treturn useCallback( () => {\n\t\tconst parentBlockId = getBlockRootClientId( clientId );\n\t\tconst parentBlockAttributes = getBlockAttributes( parentBlockId );\n\t\t// Create a new parent block without the inner blocks.\n\t\tconst newParentBlock = createBlock(\n\t\t\t'core/list-item',\n\t\t\tparentBlockAttributes\n\t\t);\n\t\tconst { innerBlocks } = getBlock( clientId );\n\t\t// Replace the parent block with a new parent block without inner blocks,\n\t\t// and make the inner blocks siblings of the parent.\n\t\treplaceBlocks( [ parentBlockId ], [ newParentBlock, ...innerBlocks ] );\n\t\t// Select the last child of the list being outdent.\n\t\tselectionChange( innerBlocks[ innerBlocks.length - 1 ].clientId );\n\t}, [ clientId ] );\n}\n\nfunction IndentUI( { clientId } ) {\n\tconst outdentList = useOutdentList( clientId );\n\tconst canOutdent = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId, getBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn (\n\t\t\t\tgetBlockName( getBlockRootClientId( clientId ) ) ===\n\t\t\t\t'core/list-item'\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatOutdentRTL : formatOutdent }\n\t\t\t\ttitle={ __( 'Outdent' ) }\n\t\t\t\tdescribedBy={ __( 'Outdent list item' ) }\n\t\t\t\tdisabled={ ! canOutdent }\n\t\t\t\tonClick={ outdentList }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default function Edit( { attributes, setAttributes, clientId, style } ) {\n\tconst { ordered, type, reversed, start } = attributes;\n\tconst blockProps = useBlockProps( {\n\t\tstyle: {\n\t\t\t...( Platform.isNative && style ),\n\t\t\tlistStyleType: ordered && type !== 'decimal' ? type : undefined,\n\t\t},\n\t} );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/list-item' ],\n\t\ttemplate: TEMPLATE,\n\t\ttemplateLock: false,\n\t\ttemplateInsertUpdatesSelection: true,\n\t\t...( Platform.isNative && {\n\t\t\tmarginVertical: NATIVE_MARGIN_SPACING,\n\t\t\tmarginHorizontal: NATIVE_MARGIN_SPACING,\n\t\t\trenderAppender: false,\n\t\t} ),\n\t\t__experimentalCaptureToolbars: true,\n\t} );\n\tuseMigrateOnLoad( attributes, clientId );\n\n\tconst controls = (\n\t\t<BlockControls group=\"block\">\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatListBulletsRTL : formatListBullets }\n\t\t\t\ttitle={ __( 'Unordered' ) }\n\t\t\t\tdescribedBy={ __( 'Convert to unordered list' ) }\n\t\t\t\tisActive={ ordered === false }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetAttributes( { ordered: false } );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatListNumberedRTL : formatListNumbered }\n\t\t\t\ttitle={ __( 'Ordered' ) }\n\t\t\t\tdescribedBy={ __( 'Convert to ordered list' ) }\n\t\t\t\tisActive={ ordered === true }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetAttributes( { ordered: true } );\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<IndentUI clientId={ clientId } />\n\t\t</BlockControls>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<TagName\n\t\t\t\tordered={ ordered }\n\t\t\t\treversed={ reversed }\n\t\t\t\tstart={ start }\n\t\t\t\t{ ...innerBlocksProps }\n\t\t\t/>\n\t\t\t{ controls }\n\t\t\t{ ordered && (\n\t\t\t\t<OrderedListSettings\n\t\t\t\t\t{ ...{\n\t\t\t\t\t\tsetAttributes,\n\t\t\t\t\t\treversed,\n\t\t\t\t\t\tstart,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -2,11 +2,12 @@ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { RichText, useBlockProps, useInnerBlocksProps, BlockControls } from '@wordpress/block-editor';
5
+ import { RichText, useBlockProps, useInnerBlocksProps, BlockControls, store as blockEditorStore } from '@wordpress/block-editor';
6
6
  import { isRTL, __ } from '@wordpress/i18n';
7
7
  import { ToolbarButton } from '@wordpress/components';
8
8
  import { formatOutdent, formatOutdentRTL, formatIndentRTL, formatIndent } from '@wordpress/icons';
9
9
  import { useMergeRefs } from '@wordpress/compose';
10
+ import { useSelect } from '@wordpress/data';
10
11
 
11
12
  /**
12
13
  * Internal dependencies
@@ -16,8 +17,22 @@ import { convertToListItems } from './utils';
16
17
  export function IndentUI({
17
18
  clientId
18
19
  }) {
19
- const [canIndent, indentListItem] = useIndentListItem(clientId);
20
- const [canOutdent, outdentListItem] = useOutdentListItem(clientId);
20
+ const indentListItem = useIndentListItem(clientId);
21
+ const outdentListItem = useOutdentListItem();
22
+ const {
23
+ canIndent,
24
+ canOutdent
25
+ } = useSelect(select => {
26
+ const {
27
+ getBlockIndex,
28
+ getBlockRootClientId,
29
+ getBlockName
30
+ } = select(blockEditorStore);
31
+ return {
32
+ canIndent: getBlockIndex(clientId) > 0,
33
+ canOutdent: getBlockName(getBlockRootClientId(getBlockRootClientId(clientId))) === 'core/list-item'
34
+ };
35
+ }, [clientId]);
21
36
  return createElement(Fragment, null, createElement(ToolbarButton, {
22
37
  icon: isRTL() ? formatOutdentRTL : formatOutdent,
23
38
  title: __('Outdent'),
@@ -1 +1 @@
1
- {"version":3,"names":["RichText","useBlockProps","useInnerBlocksProps","BlockControls","isRTL","__","ToolbarButton","formatOutdent","formatOutdentRTL","formatIndentRTL","formatIndent","useMergeRefs","useEnter","useSpace","useIndentListItem","useOutdentListItem","useSplit","useMerge","useCopy","convertToListItems","IndentUI","clientId","canIndent","indentListItem","canOutdent","outdentListItem","createElement","Fragment","icon","title","describedBy","disabled","onClick","isDisabled","ListItemEdit","attributes","setAttributes","onReplace","mergeBlocks","placeholder","content","blockProps","ref","innerBlocksProps","allowedBlocks","renderAppender","__unstableDisableDropZone","useEnterRef","useSpaceRef","onSplit","onMerge","identifier","tagName","onChange","nextContent","value","blocks","args","undefined","children","group"],"sources":["@wordpress/block-library/src/list-item/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport { ToolbarButton } from '@wordpress/components';\nimport {\n\tformatOutdent,\n\tformatOutdentRTL,\n\tformatIndentRTL,\n\tformatIndent,\n} from '@wordpress/icons';\nimport { useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseEnter,\n\tuseSpace,\n\tuseIndentListItem,\n\tuseOutdentListItem,\n\tuseSplit,\n\tuseMerge,\n\tuseCopy,\n} from './hooks';\nimport { convertToListItems } from './utils';\n\nexport function IndentUI( { clientId } ) {\n\tconst [ canIndent, indentListItem ] = useIndentListItem( clientId );\n\tconst [ canOutdent, outdentListItem ] = useOutdentListItem( clientId );\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatOutdentRTL : formatOutdent }\n\t\t\t\ttitle={ __( 'Outdent' ) }\n\t\t\t\tdescribedBy={ __( 'Outdent list item' ) }\n\t\t\t\tdisabled={ ! canOutdent }\n\t\t\t\tonClick={ () => outdentListItem() }\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatIndentRTL : formatIndent }\n\t\t\t\ttitle={ __( 'Indent' ) }\n\t\t\t\tdescribedBy={ __( 'Indent list item' ) }\n\t\t\t\tisDisabled={ ! canIndent }\n\t\t\t\tonClick={ () => indentListItem() }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default function ListItemEdit( {\n\tattributes,\n\tsetAttributes,\n\tonReplace,\n\tclientId,\n\tmergeBlocks,\n} ) {\n\tconst { placeholder, content } = attributes;\n\tconst blockProps = useBlockProps( { ref: useCopy( clientId ) } );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/list' ],\n\t\trenderAppender: false,\n\t\t__unstableDisableDropZone: true,\n\t} );\n\tconst useEnterRef = useEnter( { content, clientId } );\n\tconst useSpaceRef = useSpace( clientId );\n\tconst onSplit = useSplit( clientId );\n\tconst onMerge = useMerge( clientId, mergeBlocks );\n\treturn (\n\t\t<>\n\t\t\t<li { ...innerBlocksProps }>\n\t\t\t\t<RichText\n\t\t\t\t\tref={ useMergeRefs( [ useEnterRef, useSpaceRef ] ) }\n\t\t\t\t\tidentifier=\"content\"\n\t\t\t\t\ttagName=\"div\"\n\t\t\t\t\tonChange={ ( nextContent ) =>\n\t\t\t\t\t\tsetAttributes( { content: nextContent } )\n\t\t\t\t\t}\n\t\t\t\t\tvalue={ content }\n\t\t\t\t\taria-label={ __( 'List text' ) }\n\t\t\t\t\tplaceholder={ placeholder || __( 'List' ) }\n\t\t\t\t\tonSplit={ onSplit }\n\t\t\t\t\tonMerge={ onMerge }\n\t\t\t\t\tonReplace={\n\t\t\t\t\t\tonReplace\n\t\t\t\t\t\t\t? ( blocks, ...args ) => {\n\t\t\t\t\t\t\t\t\tonReplace(\n\t\t\t\t\t\t\t\t\t\tconvertToListItems( blocks ),\n\t\t\t\t\t\t\t\t\t\t...args\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t</li>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<IndentUI clientId={ clientId } />\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["RichText","useBlockProps","useInnerBlocksProps","BlockControls","store","blockEditorStore","isRTL","__","ToolbarButton","formatOutdent","formatOutdentRTL","formatIndentRTL","formatIndent","useMergeRefs","useSelect","useEnter","useSpace","useIndentListItem","useOutdentListItem","useSplit","useMerge","useCopy","convertToListItems","IndentUI","clientId","indentListItem","outdentListItem","canIndent","canOutdent","select","getBlockIndex","getBlockRootClientId","getBlockName","createElement","Fragment","icon","title","describedBy","disabled","onClick","isDisabled","ListItemEdit","attributes","setAttributes","onReplace","mergeBlocks","placeholder","content","blockProps","ref","innerBlocksProps","allowedBlocks","renderAppender","__unstableDisableDropZone","useEnterRef","useSpaceRef","onSplit","onMerge","identifier","tagName","onChange","nextContent","value","blocks","args","undefined","children","group"],"sources":["@wordpress/block-library/src/list-item/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tRichText,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tBlockControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { isRTL, __ } from '@wordpress/i18n';\nimport { ToolbarButton } from '@wordpress/components';\nimport {\n\tformatOutdent,\n\tformatOutdentRTL,\n\tformatIndentRTL,\n\tformatIndent,\n} from '@wordpress/icons';\nimport { useMergeRefs } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseEnter,\n\tuseSpace,\n\tuseIndentListItem,\n\tuseOutdentListItem,\n\tuseSplit,\n\tuseMerge,\n\tuseCopy,\n} from './hooks';\nimport { convertToListItems } from './utils';\n\nexport function IndentUI( { clientId } ) {\n\tconst indentListItem = useIndentListItem( clientId );\n\tconst outdentListItem = useOutdentListItem();\n\tconst { canIndent, canOutdent } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockIndex, getBlockRootClientId, getBlockName } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcanIndent: getBlockIndex( clientId ) > 0,\n\t\t\t\tcanOutdent:\n\t\t\t\t\tgetBlockName(\n\t\t\t\t\t\tgetBlockRootClientId( getBlockRootClientId( clientId ) )\n\t\t\t\t\t) === 'core/list-item',\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatOutdentRTL : formatOutdent }\n\t\t\t\ttitle={ __( 'Outdent' ) }\n\t\t\t\tdescribedBy={ __( 'Outdent list item' ) }\n\t\t\t\tdisabled={ ! canOutdent }\n\t\t\t\tonClick={ () => outdentListItem() }\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ isRTL() ? formatIndentRTL : formatIndent }\n\t\t\t\ttitle={ __( 'Indent' ) }\n\t\t\t\tdescribedBy={ __( 'Indent list item' ) }\n\t\t\t\tisDisabled={ ! canIndent }\n\t\t\t\tonClick={ () => indentListItem() }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default function ListItemEdit( {\n\tattributes,\n\tsetAttributes,\n\tonReplace,\n\tclientId,\n\tmergeBlocks,\n} ) {\n\tconst { placeholder, content } = attributes;\n\tconst blockProps = useBlockProps( { ref: useCopy( clientId ) } );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tallowedBlocks: [ 'core/list' ],\n\t\trenderAppender: false,\n\t\t__unstableDisableDropZone: true,\n\t} );\n\tconst useEnterRef = useEnter( { content, clientId } );\n\tconst useSpaceRef = useSpace( clientId );\n\tconst onSplit = useSplit( clientId );\n\tconst onMerge = useMerge( clientId, mergeBlocks );\n\treturn (\n\t\t<>\n\t\t\t<li { ...innerBlocksProps }>\n\t\t\t\t<RichText\n\t\t\t\t\tref={ useMergeRefs( [ useEnterRef, useSpaceRef ] ) }\n\t\t\t\t\tidentifier=\"content\"\n\t\t\t\t\ttagName=\"div\"\n\t\t\t\t\tonChange={ ( nextContent ) =>\n\t\t\t\t\t\tsetAttributes( { content: nextContent } )\n\t\t\t\t\t}\n\t\t\t\t\tvalue={ content }\n\t\t\t\t\taria-label={ __( 'List text' ) }\n\t\t\t\t\tplaceholder={ placeholder || __( 'List' ) }\n\t\t\t\t\tonSplit={ onSplit }\n\t\t\t\t\tonMerge={ onMerge }\n\t\t\t\t\tonReplace={\n\t\t\t\t\t\tonReplace\n\t\t\t\t\t\t\t? ( blocks, ...args ) => {\n\t\t\t\t\t\t\t\t\tonReplace(\n\t\t\t\t\t\t\t\t\t\tconvertToListItems( blocks ),\n\t\t\t\t\t\t\t\t\t\t...args\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t</li>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<IndentUI clientId={ clientId } />\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -20,11 +20,12 @@ export default function useEnter(props) {
20
20
  const {
21
21
  getBlock,
22
22
  getBlockRootClientId,
23
- getBlockIndex
23
+ getBlockIndex,
24
+ getBlockName
24
25
  } = useSelect(blockEditorStore);
25
26
  const propsRef = useRef(props);
26
27
  propsRef.current = props;
27
- const [canOutdent, outdentListItem] = useOutdentListItem(propsRef.current.clientId);
28
+ const outdentListItem = useOutdentListItem();
28
29
  return useRefEffect(element => {
29
30
  function onKeyDown(event) {
30
31
  if (event.defaultPrevented || event.keyCode !== ENTER) {
@@ -38,6 +39,7 @@ export default function useEnter(props) {
38
39
  return;
39
40
  }
40
41
  event.preventDefault();
42
+ const canOutdent = getBlockName(getBlockRootClientId(getBlockRootClientId(propsRef.current.clientId))) === 'core/list-item';
41
43
  if (canOutdent) {
42
44
  outdentListItem();
43
45
  return;
@@ -66,6 +68,6 @@ export default function useEnter(props) {
66
68
  return () => {
67
69
  element.removeEventListener('keydown', onKeyDown);
68
70
  };
69
- }, [canOutdent]);
71
+ }, []);
70
72
  }
71
73
  //# sourceMappingURL=use-enter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createBlock","getDefaultBlockName","cloneBlock","useRef","useRefEffect","ENTER","useSelect","useDispatch","store","blockEditorStore","useOutdentListItem","useEnter","props","replaceBlocks","selectionChange","getBlock","getBlockRootClientId","getBlockIndex","propsRef","current","canOutdent","outdentListItem","clientId","element","onKeyDown","event","defaultPrevented","keyCode","content","length","preventDefault","topParentListBlock","blockIndex","head","innerBlocks","slice","middle","after","tail","addEventListener","removeEventListener"],"sources":["@wordpress/block-library/src/list-item/hooks/use-enter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tgetDefaultBlockName,\n\tcloneBlock,\n} from '@wordpress/blocks';\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { ENTER } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport useOutdentListItem from './use-outdent-list-item';\n\nexport default function useEnter( props ) {\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlock, getBlockRootClientId, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\tconst [ canOutdent, outdentListItem ] = useOutdentListItem(\n\t\tpropsRef.current.clientId\n\t);\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tif ( event.defaultPrevented || event.keyCode !== ENTER ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { content, clientId } = propsRef.current;\n\t\t\t\tif ( content.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ( canOutdent ) {\n\t\t\t\t\toutdentListItem();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Here we are in top level list so we need to split.\n\t\t\t\tconst topParentListBlock = getBlock(\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t);\n\t\t\t\tconst blockIndex = getBlockIndex( clientId );\n\t\t\t\tconst head = cloneBlock( {\n\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\tinnerBlocks: topParentListBlock.innerBlocks.slice(\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tblockIndex\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t\tconst middle = createBlock( getDefaultBlockName() );\n\t\t\t\t// Last list item might contain a `list` block innerBlock\n\t\t\t\t// In that case append remaining innerBlocks blocks.\n\t\t\t\tconst after = [\n\t\t\t\t\t...( topParentListBlock.innerBlocks[ blockIndex ]\n\t\t\t\t\t\t.innerBlocks[ 0 ]?.innerBlocks || [] ),\n\t\t\t\t\t...topParentListBlock.innerBlocks.slice( blockIndex + 1 ),\n\t\t\t\t];\n\t\t\t\tconst tail = after.length\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tcloneBlock( {\n\t\t\t\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\t\t\t\tinnerBlocks: after,\n\t\t\t\t\t\t\t} ),\n\t\t\t\t\t ]\n\t\t\t\t\t: [];\n\t\t\t\treplaceBlocks(\n\t\t\t\t\ttopParentListBlock.clientId,\n\t\t\t\t\t[ head, middle, ...tail ],\n\t\t\t\t\t1\n\t\t\t\t);\n\t\t\t\t// We manually change the selection here because we are replacing\n\t\t\t\t// a different block than the selected one.\n\t\t\t\tselectionChange( middle.clientId );\n\t\t\t}\n\n\t\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\t\treturn () => {\n\t\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t\t};\n\t\t},\n\t\t[ canOutdent ]\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,WAAW,EACXC,mBAAmB,EACnBC,UAAU,QACJ,mBAAmB;AAC1B,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,YAAY,QAAQ,oBAAoB;AACjD,SAASC,KAAK,QAAQ,qBAAqB;AAC3C,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;;AAEnE;AACA;AACA;AACA,OAAOC,kBAAkB,MAAM,yBAAyB;AAExD,eAAe,SAASC,QAAQA,CAAEC,KAAK,EAAG;EACzC,MAAM;IAAEC,aAAa;IAAEC;EAAgB,CAAC,GAAGP,WAAW,CAAEE,gBAAiB,CAAC;EAC1E,MAAM;IAAEM,QAAQ;IAAEC,oBAAoB;IAAEC;EAAc,CAAC,GACtDX,SAAS,CAAEG,gBAAiB,CAAC;EAC9B,MAAMS,QAAQ,GAAGf,MAAM,CAAES,KAAM,CAAC;EAChCM,QAAQ,CAACC,OAAO,GAAGP,KAAK;EACxB,MAAM,CAAEQ,UAAU,EAAEC,eAAe,CAAE,GAAGX,kBAAkB,CACzDQ,QAAQ,CAACC,OAAO,CAACG,QAClB,CAAC;EACD,OAAOlB,YAAY,CAChBmB,OAAO,IAAM;IACd,SAASC,SAASA,CAAEC,KAAK,EAAG;MAC3B,IAAKA,KAAK,CAACC,gBAAgB,IAAID,KAAK,CAACE,OAAO,KAAKtB,KAAK,EAAG;QACxD;MACD;MACA,MAAM;QAAEuB,OAAO;QAAEN;MAAS,CAAC,GAAGJ,QAAQ,CAACC,OAAO;MAC9C,IAAKS,OAAO,CAACC,MAAM,EAAG;QACrB;MACD;MACAJ,KAAK,CAACK,cAAc,CAAC,CAAC;MACtB,IAAKV,UAAU,EAAG;QACjBC,eAAe,CAAC,CAAC;QACjB;MACD;MACA;MACA,MAAMU,kBAAkB,GAAGhB,QAAQ,CAClCC,oBAAoB,CAAEM,QAAS,CAChC,CAAC;MACD,MAAMU,UAAU,GAAGf,aAAa,CAAEK,QAAS,CAAC;MAC5C,MAAMW,IAAI,GAAG/B,UAAU,CAAE;QACxB,GAAG6B,kBAAkB;QACrBG,WAAW,EAAEH,kBAAkB,CAACG,WAAW,CAACC,KAAK,CAChD,CAAC,EACDH,UACD;MACD,CAAE,CAAC;MACH,MAAMI,MAAM,GAAGpC,WAAW,CAAEC,mBAAmB,CAAC,CAAE,CAAC;MACnD;MACA;MACA,MAAMoC,KAAK,GAAG,CACb,IAAKN,kBAAkB,CAACG,WAAW,CAAEF,UAAU,CAAE,CAC/CE,WAAW,CAAE,CAAC,CAAE,EAAEA,WAAW,IAAI,EAAE,CAAE,EACvC,GAAGH,kBAAkB,CAACG,WAAW,CAACC,KAAK,CAAEH,UAAU,GAAG,CAAE,CAAC,CACzD;MACD,MAAMM,IAAI,GAAGD,KAAK,CAACR,MAAM,GACtB,CACA3B,UAAU,CAAE;QACX,GAAG6B,kBAAkB;QACrBG,WAAW,EAAEG;MACd,CAAE,CAAC,CACF,GACD,EAAE;MACLxB,aAAa,CACZkB,kBAAkB,CAACT,QAAQ,EAC3B,CAAEW,IAAI,EAAEG,MAAM,EAAE,GAAGE,IAAI,CAAE,EACzB,CACD,CAAC;MACD;MACA;MACAxB,eAAe,CAAEsB,MAAM,CAACd,QAAS,CAAC;IACnC;IAEAC,OAAO,CAACgB,gBAAgB,CAAE,SAAS,EAAEf,SAAU,CAAC;IAChD,OAAO,MAAM;MACZD,OAAO,CAACiB,mBAAmB,CAAE,SAAS,EAAEhB,SAAU,CAAC;IACpD,CAAC;EACF,CAAC,EACD,CAAEJ,UAAU,CACb,CAAC;AACF"}
1
+ {"version":3,"names":["createBlock","getDefaultBlockName","cloneBlock","useRef","useRefEffect","ENTER","useSelect","useDispatch","store","blockEditorStore","useOutdentListItem","useEnter","props","replaceBlocks","selectionChange","getBlock","getBlockRootClientId","getBlockIndex","getBlockName","propsRef","current","outdentListItem","element","onKeyDown","event","defaultPrevented","keyCode","content","clientId","length","preventDefault","canOutdent","topParentListBlock","blockIndex","head","innerBlocks","slice","middle","after","tail","addEventListener","removeEventListener"],"sources":["@wordpress/block-library/src/list-item/hooks/use-enter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tgetDefaultBlockName,\n\tcloneBlock,\n} from '@wordpress/blocks';\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { ENTER } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport useOutdentListItem from './use-outdent-list-item';\n\nexport default function useEnter( props ) {\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlock, getBlockRootClientId, getBlockIndex, getBlockName } =\n\t\tuseSelect( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\tconst outdentListItem = useOutdentListItem();\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented || event.keyCode !== ENTER ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { content, clientId } = propsRef.current;\n\t\t\tif ( content.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t\tconst canOutdent =\n\t\t\t\tgetBlockName(\n\t\t\t\t\tgetBlockRootClientId(\n\t\t\t\t\t\tgetBlockRootClientId( propsRef.current.clientId )\n\t\t\t\t\t)\n\t\t\t\t) === 'core/list-item';\n\t\t\tif ( canOutdent ) {\n\t\t\t\toutdentListItem();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Here we are in top level list so we need to split.\n\t\t\tconst topParentListBlock = getBlock(\n\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t);\n\t\t\tconst blockIndex = getBlockIndex( clientId );\n\t\t\tconst head = cloneBlock( {\n\t\t\t\t...topParentListBlock,\n\t\t\t\tinnerBlocks: topParentListBlock.innerBlocks.slice(\n\t\t\t\t\t0,\n\t\t\t\t\tblockIndex\n\t\t\t\t),\n\t\t\t} );\n\t\t\tconst middle = createBlock( getDefaultBlockName() );\n\t\t\t// Last list item might contain a `list` block innerBlock\n\t\t\t// In that case append remaining innerBlocks blocks.\n\t\t\tconst after = [\n\t\t\t\t...( topParentListBlock.innerBlocks[ blockIndex ]\n\t\t\t\t\t.innerBlocks[ 0 ]?.innerBlocks || [] ),\n\t\t\t\t...topParentListBlock.innerBlocks.slice( blockIndex + 1 ),\n\t\t\t];\n\t\t\tconst tail = after.length\n\t\t\t\t? [\n\t\t\t\t\t\tcloneBlock( {\n\t\t\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\t\t\tinnerBlocks: after,\n\t\t\t\t\t\t} ),\n\t\t\t\t ]\n\t\t\t\t: [];\n\t\t\treplaceBlocks(\n\t\t\t\ttopParentListBlock.clientId,\n\t\t\t\t[ head, middle, ...tail ],\n\t\t\t\t1\n\t\t\t);\n\t\t\t// We manually change the selection here because we are replacing\n\t\t\t// a different block than the selected one.\n\t\t\tselectionChange( middle.clientId );\n\t\t}\n\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"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"}
@@ -18,11 +18,12 @@ export default function useEnter(props, preventDefault) {
18
18
  const {
19
19
  getBlock,
20
20
  getBlockRootClientId,
21
- getBlockIndex
21
+ getBlockIndex,
22
+ getBlockName
22
23
  } = useSelect(blockEditorStore);
23
24
  const propsRef = useRef(props);
24
25
  propsRef.current = props;
25
- const [canOutdent, outdentListItem] = useOutdentListItem(propsRef.current.clientId);
26
+ const outdentListItem = useOutdentListItem();
26
27
  return {
27
28
  onEnter() {
28
29
  const {
@@ -33,7 +34,7 @@ export default function useEnter(props, preventDefault) {
33
34
  return;
34
35
  }
35
36
  preventDefault.current = true;
36
- if (canOutdent) {
37
+ if (getBlockName(getBlockRootClientId(getBlockRootClientId(propsRef.current.clientId))) === 'core/list-item') {
37
38
  outdentListItem();
38
39
  return;
39
40
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createBlock","getDefaultBlockName","cloneBlock","useRef","useSelect","useDispatch","store","blockEditorStore","useOutdentListItem","useEnter","props","preventDefault","replaceBlocks","selectionChange","getBlock","getBlockRootClientId","getBlockIndex","propsRef","current","canOutdent","outdentListItem","clientId","onEnter","content","length","topParentListBlock","blockIndex","head","innerBlocks","slice","middle","after","tail"],"sources":["@wordpress/block-library/src/list-item/hooks/use-enter.native.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tgetDefaultBlockName,\n\tcloneBlock,\n} from '@wordpress/blocks';\nimport { useRef } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport useOutdentListItem from './use-outdent-list-item';\n\nexport default function useEnter( props, preventDefault ) {\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlock, getBlockRootClientId, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\tconst [ canOutdent, outdentListItem ] = useOutdentListItem(\n\t\tpropsRef.current.clientId\n\t);\n\n\treturn {\n\t\tonEnter() {\n\t\t\tconst { content, clientId } = propsRef.current;\n\t\t\tif ( content.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpreventDefault.current = true;\n\t\t\tif ( canOutdent ) {\n\t\t\t\toutdentListItem();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Here we are in top level list so we need to split.\n\t\t\tconst topParentListBlock = getBlock(\n\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t);\n\t\t\tconst blockIndex = getBlockIndex( clientId );\n\t\t\tconst head = cloneBlock( {\n\t\t\t\t...topParentListBlock,\n\t\t\t\tinnerBlocks: topParentListBlock.innerBlocks.slice(\n\t\t\t\t\t0,\n\t\t\t\t\tblockIndex\n\t\t\t\t),\n\t\t\t} );\n\t\t\tconst middle = createBlock( getDefaultBlockName() );\n\t\t\t// Last list item might contain a `list` block innerBlock\n\t\t\t// In that case append remaining innerBlocks blocks.\n\t\t\tconst after = [\n\t\t\t\t...( topParentListBlock.innerBlocks[ blockIndex ]\n\t\t\t\t\t.innerBlocks[ 0 ]?.innerBlocks || [] ),\n\t\t\t\t...topParentListBlock.innerBlocks.slice( blockIndex + 1 ),\n\t\t\t];\n\t\t\tconst tail = after.length\n\t\t\t\t? [\n\t\t\t\t\t\tcloneBlock( {\n\t\t\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\t\t\tinnerBlocks: after,\n\t\t\t\t\t\t} ),\n\t\t\t\t ]\n\t\t\t\t: [];\n\t\t\treplaceBlocks(\n\t\t\t\ttopParentListBlock.clientId,\n\t\t\t\t[ head, middle, ...tail ],\n\t\t\t\t1\n\t\t\t);\n\t\t\t// We manually change the selection here because we are replacing\n\t\t\t// a different block than the selected one.\n\t\t\tselectionChange( middle.clientId );\n\t\t},\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,WAAW,EACXC,mBAAmB,EACnBC,UAAU,QACJ,mBAAmB;AAC1B,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;;AAEnE;AACA;AACA;AACA,OAAOC,kBAAkB,MAAM,yBAAyB;AAExD,eAAe,SAASC,QAAQA,CAAEC,KAAK,EAAEC,cAAc,EAAG;EACzD,MAAM;IAAEC,aAAa;IAAEC;EAAgB,CAAC,GAAGR,WAAW,CAAEE,gBAAiB,CAAC;EAC1E,MAAM;IAAEO,QAAQ;IAAEC,oBAAoB;IAAEC;EAAc,CAAC,GACtDZ,SAAS,CAAEG,gBAAiB,CAAC;EAC9B,MAAMU,QAAQ,GAAGd,MAAM,CAAEO,KAAM,CAAC;EAChCO,QAAQ,CAACC,OAAO,GAAGR,KAAK;EACxB,MAAM,CAAES,UAAU,EAAEC,eAAe,CAAE,GAAGZ,kBAAkB,CACzDS,QAAQ,CAACC,OAAO,CAACG,QAClB,CAAC;EAED,OAAO;IACNC,OAAOA,CAAA,EAAG;MACT,MAAM;QAAEC,OAAO;QAAEF;MAAS,CAAC,GAAGJ,QAAQ,CAACC,OAAO;MAC9C,IAAKK,OAAO,CAACC,MAAM,EAAG;QACrB;MACD;MACAb,cAAc,CAACO,OAAO,GAAG,IAAI;MAC7B,IAAKC,UAAU,EAAG;QACjBC,eAAe,CAAC,CAAC;QACjB;MACD;MACA;MACA,MAAMK,kBAAkB,GAAGX,QAAQ,CAClCC,oBAAoB,CAAEM,QAAS,CAChC,CAAC;MACD,MAAMK,UAAU,GAAGV,aAAa,CAAEK,QAAS,CAAC;MAC5C,MAAMM,IAAI,GAAGzB,UAAU,CAAE;QACxB,GAAGuB,kBAAkB;QACrBG,WAAW,EAAEH,kBAAkB,CAACG,WAAW,CAACC,KAAK,CAChD,CAAC,EACDH,UACD;MACD,CAAE,CAAC;MACH,MAAMI,MAAM,GAAG9B,WAAW,CAAEC,mBAAmB,CAAC,CAAE,CAAC;MACnD;MACA;MACA,MAAM8B,KAAK,GAAG,CACb,IAAKN,kBAAkB,CAACG,WAAW,CAAEF,UAAU,CAAE,CAC/CE,WAAW,CAAE,CAAC,CAAE,EAAEA,WAAW,IAAI,EAAE,CAAE,EACvC,GAAGH,kBAAkB,CAACG,WAAW,CAACC,KAAK,CAAEH,UAAU,GAAG,CAAE,CAAC,CACzD;MACD,MAAMM,IAAI,GAAGD,KAAK,CAACP,MAAM,GACtB,CACAtB,UAAU,CAAE;QACX,GAAGuB,kBAAkB;QACrBG,WAAW,EAAEG;MACd,CAAE,CAAC,CACF,GACD,EAAE;MACLnB,aAAa,CACZa,kBAAkB,CAACJ,QAAQ,EAC3B,CAAEM,IAAI,EAAEG,MAAM,EAAE,GAAGE,IAAI,CAAE,EACzB,CACD,CAAC;MACD;MACA;MACAnB,eAAe,CAAEiB,MAAM,CAACT,QAAS,CAAC;IACnC;EACD,CAAC;AACF"}
1
+ {"version":3,"names":["createBlock","getDefaultBlockName","cloneBlock","useRef","useSelect","useDispatch","store","blockEditorStore","useOutdentListItem","useEnter","props","preventDefault","replaceBlocks","selectionChange","getBlock","getBlockRootClientId","getBlockIndex","getBlockName","propsRef","current","outdentListItem","onEnter","content","clientId","length","topParentListBlock","blockIndex","head","innerBlocks","slice","middle","after","tail"],"sources":["@wordpress/block-library/src/list-item/hooks/use-enter.native.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateBlock,\n\tgetDefaultBlockName,\n\tcloneBlock,\n} from '@wordpress/blocks';\nimport { useRef } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport useOutdentListItem from './use-outdent-list-item';\n\nexport default function useEnter( props, preventDefault ) {\n\tconst { replaceBlocks, selectionChange } = useDispatch( blockEditorStore );\n\tconst { getBlock, getBlockRootClientId, getBlockIndex, getBlockName } =\n\t\tuseSelect( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\tconst outdentListItem = useOutdentListItem();\n\n\treturn {\n\t\tonEnter() {\n\t\t\tconst { content, clientId } = propsRef.current;\n\t\t\tif ( content.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tpreventDefault.current = true;\n\t\t\tif (\n\t\t\t\tgetBlockName(\n\t\t\t\t\tgetBlockRootClientId(\n\t\t\t\t\t\tgetBlockRootClientId( propsRef.current.clientId )\n\t\t\t\t\t)\n\t\t\t\t) === 'core/list-item'\n\t\t\t) {\n\t\t\t\toutdentListItem();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Here we are in top level list so we need to split.\n\t\t\tconst topParentListBlock = getBlock(\n\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t);\n\t\t\tconst blockIndex = getBlockIndex( clientId );\n\t\t\tconst head = cloneBlock( {\n\t\t\t\t...topParentListBlock,\n\t\t\t\tinnerBlocks: topParentListBlock.innerBlocks.slice(\n\t\t\t\t\t0,\n\t\t\t\t\tblockIndex\n\t\t\t\t),\n\t\t\t} );\n\t\t\tconst middle = createBlock( getDefaultBlockName() );\n\t\t\t// Last list item might contain a `list` block innerBlock\n\t\t\t// In that case append remaining innerBlocks blocks.\n\t\t\tconst after = [\n\t\t\t\t...( topParentListBlock.innerBlocks[ blockIndex ]\n\t\t\t\t\t.innerBlocks[ 0 ]?.innerBlocks || [] ),\n\t\t\t\t...topParentListBlock.innerBlocks.slice( blockIndex + 1 ),\n\t\t\t];\n\t\t\tconst tail = after.length\n\t\t\t\t? [\n\t\t\t\t\t\tcloneBlock( {\n\t\t\t\t\t\t\t...topParentListBlock,\n\t\t\t\t\t\t\tinnerBlocks: after,\n\t\t\t\t\t\t} ),\n\t\t\t\t ]\n\t\t\t\t: [];\n\t\t\treplaceBlocks(\n\t\t\t\ttopParentListBlock.clientId,\n\t\t\t\t[ head, middle, ...tail ],\n\t\t\t\t1\n\t\t\t);\n\t\t\t// We manually change the selection here because we are replacing\n\t\t\t// a different block than the selected one.\n\t\t\tselectionChange( middle.clientId );\n\t\t},\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,WAAW,EACXC,mBAAmB,EACnBC,UAAU,QACJ,mBAAmB;AAC1B,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;;AAEnE;AACA;AACA;AACA,OAAOC,kBAAkB,MAAM,yBAAyB;AAExD,eAAe,SAASC,QAAQA,CAAEC,KAAK,EAAEC,cAAc,EAAG;EACzD,MAAM;IAAEC,aAAa;IAAEC;EAAgB,CAAC,GAAGR,WAAW,CAAEE,gBAAiB,CAAC;EAC1E,MAAM;IAAEO,QAAQ;IAAEC,oBAAoB;IAAEC,aAAa;IAAEC;EAAa,CAAC,GACpEb,SAAS,CAAEG,gBAAiB,CAAC;EAC9B,MAAMW,QAAQ,GAAGf,MAAM,CAAEO,KAAM,CAAC;EAChCQ,QAAQ,CAACC,OAAO,GAAGT,KAAK;EACxB,MAAMU,eAAe,GAAGZ,kBAAkB,CAAC,CAAC;EAE5C,OAAO;IACNa,OAAOA,CAAA,EAAG;MACT,MAAM;QAAEC,OAAO;QAAEC;MAAS,CAAC,GAAGL,QAAQ,CAACC,OAAO;MAC9C,IAAKG,OAAO,CAACE,MAAM,EAAG;QACrB;MACD;MACAb,cAAc,CAACQ,OAAO,GAAG,IAAI;MAC7B,IACCF,YAAY,CACXF,oBAAoB,CACnBA,oBAAoB,CAAEG,QAAQ,CAACC,OAAO,CAACI,QAAS,CACjD,CACD,CAAC,KAAK,gBAAgB,EACrB;QACDH,eAAe,CAAC,CAAC;QACjB;MACD;MACA;MACA,MAAMK,kBAAkB,GAAGX,QAAQ,CAClCC,oBAAoB,CAAEQ,QAAS,CAChC,CAAC;MACD,MAAMG,UAAU,GAAGV,aAAa,CAAEO,QAAS,CAAC;MAC5C,MAAMI,IAAI,GAAGzB,UAAU,CAAE;QACxB,GAAGuB,kBAAkB;QACrBG,WAAW,EAAEH,kBAAkB,CAACG,WAAW,CAACC,KAAK,CAChD,CAAC,EACDH,UACD;MACD,CAAE,CAAC;MACH,MAAMI,MAAM,GAAG9B,WAAW,CAAEC,mBAAmB,CAAC,CAAE,CAAC;MACnD;MACA;MACA,MAAM8B,KAAK,GAAG,CACb,IAAKN,kBAAkB,CAACG,WAAW,CAAEF,UAAU,CAAE,CAC/CE,WAAW,CAAE,CAAC,CAAE,EAAEA,WAAW,IAAI,EAAE,CAAE,EACvC,GAAGH,kBAAkB,CAACG,WAAW,CAACC,KAAK,CAAEH,UAAU,GAAG,CAAE,CAAC,CACzD;MACD,MAAMM,IAAI,GAAGD,KAAK,CAACP,MAAM,GACtB,CACAtB,UAAU,CAAE;QACX,GAAGuB,kBAAkB;QACrBG,WAAW,EAAEG;MACd,CAAE,CAAC,CACF,GACD,EAAE;MACLnB,aAAa,CACZa,kBAAkB,CAACF,QAAQ,EAC3B,CAAEI,IAAI,EAAEG,MAAM,EAAE,GAAGE,IAAI,CAAE,EACzB,CACD,CAAC;MACD;MACA;MACAnB,eAAe,CAAEiB,MAAM,CAACP,QAAS,CAAC;IACnC;EACD,CAAC;AACF"}
@@ -6,7 +6,6 @@ import { useSelect, useDispatch } from '@wordpress/data';
6
6
  import { store as blockEditorStore } from '@wordpress/block-editor';
7
7
  import { createBlock, cloneBlock } from '@wordpress/blocks';
8
8
  export default function useIndentListItem(clientId) {
9
- const canIndent = useSelect(select => select(blockEditorStore).getBlockIndex(clientId) > 0, [clientId]);
10
9
  const {
11
10
  replaceBlocks,
12
11
  selectionChange,
@@ -20,7 +19,7 @@ export default function useIndentListItem(clientId) {
20
19
  hasMultiSelection,
21
20
  getMultiSelectedBlockClientIds
22
21
  } = useSelect(blockEditorStore);
23
- return [canIndent, useCallback(() => {
22
+ return useCallback(() => {
24
23
  const _hasMultiSelection = hasMultiSelection();
25
24
  const clientIds = _hasMultiSelection ? getMultiSelectedBlockClientIds() : [clientId];
26
25
  const clonedBlocks = clientIds.map(_clientId => cloneBlock(getBlock(_clientId)));
@@ -48,6 +47,6 @@ export default function useIndentListItem(clientId) {
48
47
  } else {
49
48
  multiSelect(clonedBlocks[0].clientId, clonedBlocks[clonedBlocks.length - 1].clientId);
50
49
  }
51
- }, [clientId])];
50
+ }, [clientId]);
52
51
  }
53
52
  //# sourceMappingURL=use-indent-list-item.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useSelect","useDispatch","store","blockEditorStore","createBlock","cloneBlock","useIndentListItem","clientId","canIndent","select","getBlockIndex","replaceBlocks","selectionChange","multiSelect","getBlock","getPreviousBlockClientId","getSelectionStart","getSelectionEnd","hasMultiSelection","getMultiSelectedBlockClientIds","_hasMultiSelection","clientIds","clonedBlocks","map","_clientId","previousSiblingId","newListItem","innerBlocks","length","push","selectionStart","selectionEnd","attributeKey","offset"],"sources":["@wordpress/block-library/src/list-item/hooks/use-indent-list-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { createBlock, cloneBlock } from '@wordpress/blocks';\n\nexport default function useIndentListItem( clientId ) {\n\tconst canIndent = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlockIndex( clientId ) > 0,\n\t\t[ clientId ]\n\t);\n\tconst { replaceBlocks, selectionChange, multiSelect } =\n\t\tuseDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlock,\n\t\tgetPreviousBlockClientId,\n\t\tgetSelectionStart,\n\t\tgetSelectionEnd,\n\t\thasMultiSelection,\n\t\tgetMultiSelectedBlockClientIds,\n\t} = useSelect( blockEditorStore );\n\treturn [\n\t\tcanIndent,\n\t\tuseCallback( () => {\n\t\t\tconst _hasMultiSelection = hasMultiSelection();\n\t\t\tconst clientIds = _hasMultiSelection\n\t\t\t\t? getMultiSelectedBlockClientIds()\n\t\t\t\t: [ clientId ];\n\t\t\tconst clonedBlocks = clientIds.map( ( _clientId ) =>\n\t\t\t\tcloneBlock( getBlock( _clientId ) )\n\t\t\t);\n\t\t\tconst previousSiblingId = getPreviousBlockClientId( clientId );\n\t\t\tconst newListItem = cloneBlock( getBlock( previousSiblingId ) );\n\t\t\t// If the sibling has no innerBlocks, create a new `list` block.\n\t\t\tif ( ! newListItem.innerBlocks?.length ) {\n\t\t\t\tnewListItem.innerBlocks = [ createBlock( 'core/list' ) ];\n\t\t\t}\n\t\t\t// A list item usually has one `list`, but it's possible to have\n\t\t\t// more. So we need to preserve the previous `list` blocks and\n\t\t\t// merge the new blocks to the last `list`.\n\t\t\tnewListItem.innerBlocks[\n\t\t\t\tnewListItem.innerBlocks.length - 1\n\t\t\t].innerBlocks.push( ...clonedBlocks );\n\n\t\t\t// We get the selection start/end here, because when\n\t\t\t// we replace blocks, the selection is updated too.\n\t\t\tconst selectionStart = getSelectionStart();\n\t\t\tconst selectionEnd = getSelectionEnd();\n\t\t\t// Replace the previous sibling of the block being indented and the indented blocks,\n\t\t\t// with a new block whose attributes are equal to the ones of the previous sibling and\n\t\t\t// whose descendants are the children of the previous sibling, followed by the indented blocks.\n\t\t\treplaceBlocks(\n\t\t\t\t[ previousSiblingId, ...clientIds ],\n\t\t\t\t[ newListItem ]\n\t\t\t);\n\t\t\tif ( ! _hasMultiSelection ) {\n\t\t\t\tselectionChange(\n\t\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\t\tselectionEnd.attributeKey,\n\t\t\t\t\tselectionEnd.clientId === selectionStart.clientId\n\t\t\t\t\t\t? selectionStart.offset\n\t\t\t\t\t\t: selectionEnd.offset,\n\t\t\t\t\tselectionEnd.offset\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmultiSelect(\n\t\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\t\tclonedBlocks[ clonedBlocks.length - 1 ].clientId\n\t\t\t\t);\n\t\t\t}\n\t\t}, [ clientId ] ),\n\t];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,oBAAoB;AAChD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,WAAW,EAAEC,UAAU,QAAQ,mBAAmB;AAE3D,eAAe,SAASC,iBAAiBA,CAAEC,QAAQ,EAAG;EACrD,MAAMC,SAAS,GAAGR,SAAS,CACxBS,MAAM,IAAMA,MAAM,CAAEN,gBAAiB,CAAC,CAACO,aAAa,CAAEH,QAAS,CAAC,GAAG,CAAC,EACtE,CAAEA,QAAQ,CACX,CAAC;EACD,MAAM;IAAEI,aAAa;IAAEC,eAAe;IAAEC;EAAY,CAAC,GACpDZ,WAAW,CAAEE,gBAAiB,CAAC;EAChC,MAAM;IACLW,QAAQ;IACRC,wBAAwB;IACxBC,iBAAiB;IACjBC,eAAe;IACfC,iBAAiB;IACjBC;EACD,CAAC,GAAGnB,SAAS,CAAEG,gBAAiB,CAAC;EACjC,OAAO,CACNK,SAAS,EACTT,WAAW,CAAE,MAAM;IAClB,MAAMqB,kBAAkB,GAAGF,iBAAiB,CAAC,CAAC;IAC9C,MAAMG,SAAS,GAAGD,kBAAkB,GACjCD,8BAA8B,CAAC,CAAC,GAChC,CAAEZ,QAAQ,CAAE;IACf,MAAMe,YAAY,GAAGD,SAAS,CAACE,GAAG,CAAIC,SAAS,IAC9CnB,UAAU,CAAES,QAAQ,CAAEU,SAAU,CAAE,CACnC,CAAC;IACD,MAAMC,iBAAiB,GAAGV,wBAAwB,CAAER,QAAS,CAAC;IAC9D,MAAMmB,WAAW,GAAGrB,UAAU,CAAES,QAAQ,CAAEW,iBAAkB,CAAE,CAAC;IAC/D;IACA,IAAK,CAAEC,WAAW,CAACC,WAAW,EAAEC,MAAM,EAAG;MACxCF,WAAW,CAACC,WAAW,GAAG,CAAEvB,WAAW,CAAE,WAAY,CAAC,CAAE;IACzD;IACA;IACA;IACA;IACAsB,WAAW,CAACC,WAAW,CACtBD,WAAW,CAACC,WAAW,CAACC,MAAM,GAAG,CAAC,CAClC,CAACD,WAAW,CAACE,IAAI,CAAE,GAAGP,YAAa,CAAC;;IAErC;IACA;IACA,MAAMQ,cAAc,GAAGd,iBAAiB,CAAC,CAAC;IAC1C,MAAMe,YAAY,GAAGd,eAAe,CAAC,CAAC;IACtC;IACA;IACA;IACAN,aAAa,CACZ,CAAEc,iBAAiB,EAAE,GAAGJ,SAAS,CAAE,EACnC,CAAEK,WAAW,CACd,CAAC;IACD,IAAK,CAAEN,kBAAkB,EAAG;MAC3BR,eAAe,CACdU,YAAY,CAAE,CAAC,CAAE,CAACf,QAAQ,EAC1BwB,YAAY,CAACC,YAAY,EACzBD,YAAY,CAACxB,QAAQ,KAAKuB,cAAc,CAACvB,QAAQ,GAC9CuB,cAAc,CAACG,MAAM,GACrBF,YAAY,CAACE,MAAM,EACtBF,YAAY,CAACE,MACd,CAAC;IACF,CAAC,MAAM;MACNpB,WAAW,CACVS,YAAY,CAAE,CAAC,CAAE,CAACf,QAAQ,EAC1Be,YAAY,CAAEA,YAAY,CAACM,MAAM,GAAG,CAAC,CAAE,CAACrB,QACzC,CAAC;IACF;EACD,CAAC,EAAE,CAAEA,QAAQ,CAAG,CAAC,CACjB;AACF"}
1
+ {"version":3,"names":["useCallback","useSelect","useDispatch","store","blockEditorStore","createBlock","cloneBlock","useIndentListItem","clientId","replaceBlocks","selectionChange","multiSelect","getBlock","getPreviousBlockClientId","getSelectionStart","getSelectionEnd","hasMultiSelection","getMultiSelectedBlockClientIds","_hasMultiSelection","clientIds","clonedBlocks","map","_clientId","previousSiblingId","newListItem","innerBlocks","length","push","selectionStart","selectionEnd","attributeKey","offset"],"sources":["@wordpress/block-library/src/list-item/hooks/use-indent-list-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { createBlock, cloneBlock } from '@wordpress/blocks';\n\nexport default function useIndentListItem( clientId ) {\n\tconst { replaceBlocks, selectionChange, multiSelect } =\n\t\tuseDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlock,\n\t\tgetPreviousBlockClientId,\n\t\tgetSelectionStart,\n\t\tgetSelectionEnd,\n\t\thasMultiSelection,\n\t\tgetMultiSelectedBlockClientIds,\n\t} = useSelect( blockEditorStore );\n\treturn useCallback( () => {\n\t\tconst _hasMultiSelection = hasMultiSelection();\n\t\tconst clientIds = _hasMultiSelection\n\t\t\t? getMultiSelectedBlockClientIds()\n\t\t\t: [ clientId ];\n\t\tconst clonedBlocks = clientIds.map( ( _clientId ) =>\n\t\t\tcloneBlock( getBlock( _clientId ) )\n\t\t);\n\t\tconst previousSiblingId = getPreviousBlockClientId( clientId );\n\t\tconst newListItem = cloneBlock( getBlock( previousSiblingId ) );\n\t\t// If the sibling has no innerBlocks, create a new `list` block.\n\t\tif ( ! newListItem.innerBlocks?.length ) {\n\t\t\tnewListItem.innerBlocks = [ createBlock( 'core/list' ) ];\n\t\t}\n\t\t// A list item usually has one `list`, but it's possible to have\n\t\t// more. So we need to preserve the previous `list` blocks and\n\t\t// merge the new blocks to the last `list`.\n\t\tnewListItem.innerBlocks[\n\t\t\tnewListItem.innerBlocks.length - 1\n\t\t].innerBlocks.push( ...clonedBlocks );\n\n\t\t// We get the selection start/end here, because when\n\t\t// we replace blocks, the selection is updated too.\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\t\t// Replace the previous sibling of the block being indented and the indented blocks,\n\t\t// with a new block whose attributes are equal to the ones of the previous sibling and\n\t\t// whose descendants are the children of the previous sibling, followed by the indented blocks.\n\t\treplaceBlocks( [ previousSiblingId, ...clientIds ], [ newListItem ] );\n\t\tif ( ! _hasMultiSelection ) {\n\t\t\tselectionChange(\n\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\tselectionEnd.attributeKey,\n\t\t\t\tselectionEnd.clientId === selectionStart.clientId\n\t\t\t\t\t? selectionStart.offset\n\t\t\t\t\t: selectionEnd.offset,\n\t\t\t\tselectionEnd.offset\n\t\t\t);\n\t\t} else {\n\t\t\tmultiSelect(\n\t\t\t\tclonedBlocks[ 0 ].clientId,\n\t\t\t\tclonedBlocks[ clonedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}, [ clientId ] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,oBAAoB;AAChD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,WAAW,EAAEC,UAAU,QAAQ,mBAAmB;AAE3D,eAAe,SAASC,iBAAiBA,CAAEC,QAAQ,EAAG;EACrD,MAAM;IAAEC,aAAa;IAAEC,eAAe;IAAEC;EAAY,CAAC,GACpDT,WAAW,CAAEE,gBAAiB,CAAC;EAChC,MAAM;IACLQ,QAAQ;IACRC,wBAAwB;IACxBC,iBAAiB;IACjBC,eAAe;IACfC,iBAAiB;IACjBC;EACD,CAAC,GAAGhB,SAAS,CAAEG,gBAAiB,CAAC;EACjC,OAAOJ,WAAW,CAAE,MAAM;IACzB,MAAMkB,kBAAkB,GAAGF,iBAAiB,CAAC,CAAC;IAC9C,MAAMG,SAAS,GAAGD,kBAAkB,GACjCD,8BAA8B,CAAC,CAAC,GAChC,CAAET,QAAQ,CAAE;IACf,MAAMY,YAAY,GAAGD,SAAS,CAACE,GAAG,CAAIC,SAAS,IAC9ChB,UAAU,CAAEM,QAAQ,CAAEU,SAAU,CAAE,CACnC,CAAC;IACD,MAAMC,iBAAiB,GAAGV,wBAAwB,CAAEL,QAAS,CAAC;IAC9D,MAAMgB,WAAW,GAAGlB,UAAU,CAAEM,QAAQ,CAAEW,iBAAkB,CAAE,CAAC;IAC/D;IACA,IAAK,CAAEC,WAAW,CAACC,WAAW,EAAEC,MAAM,EAAG;MACxCF,WAAW,CAACC,WAAW,GAAG,CAAEpB,WAAW,CAAE,WAAY,CAAC,CAAE;IACzD;IACA;IACA;IACA;IACAmB,WAAW,CAACC,WAAW,CACtBD,WAAW,CAACC,WAAW,CAACC,MAAM,GAAG,CAAC,CAClC,CAACD,WAAW,CAACE,IAAI,CAAE,GAAGP,YAAa,CAAC;;IAErC;IACA;IACA,MAAMQ,cAAc,GAAGd,iBAAiB,CAAC,CAAC;IAC1C,MAAMe,YAAY,GAAGd,eAAe,CAAC,CAAC;IACtC;IACA;IACA;IACAN,aAAa,CAAE,CAAEc,iBAAiB,EAAE,GAAGJ,SAAS,CAAE,EAAE,CAAEK,WAAW,CAAG,CAAC;IACrE,IAAK,CAAEN,kBAAkB,EAAG;MAC3BR,eAAe,CACdU,YAAY,CAAE,CAAC,CAAE,CAACZ,QAAQ,EAC1BqB,YAAY,CAACC,YAAY,EACzBD,YAAY,CAACrB,QAAQ,KAAKoB,cAAc,CAACpB,QAAQ,GAC9CoB,cAAc,CAACG,MAAM,GACrBF,YAAY,CAACE,MAAM,EACtBF,YAAY,CAACE,MACd,CAAC;IACF,CAAC,MAAM;MACNpB,WAAW,CACVS,YAAY,CAAE,CAAC,CAAE,CAACZ,QAAQ,EAC1BY,YAAY,CAAEA,YAAY,CAACM,MAAM,GAAG,CAAC,CAAE,CAAClB,QACzC,CAAC;IACF;EACD,CAAC,EAAE,CAAEA,QAAQ,CAAG,CAAC;AAClB"}
@@ -21,7 +21,7 @@ export default function useMerge(clientId, onMerge) {
21
21
  mergeBlocks,
22
22
  moveBlocksToPosition
23
23
  } = useDispatch(blockEditorStore);
24
- const [, outdentListItem] = useOutdentListItem(clientId);
24
+ const outdentListItem = useOutdentListItem();
25
25
  function getTrailingId(id) {
26
26
  const order = getBlockOrder(id);
27
27
  if (!order.length) {
@@ -1 +1 @@
1
- {"version":3,"names":["useRegistry","useDispatch","useSelect","store","blockEditorStore","useOutdentListItem","useMerge","clientId","onMerge","registry","getPreviousBlockClientId","getNextBlockClientId","getBlockOrder","getBlockRootClientId","getBlockName","mergeBlocks","moveBlocksToPosition","outdentListItem","getTrailingId","id","order","length","getParentListItemId","listId","parentListItemId","_getNextId","next","getNextId","forward","mergeWithNested","clientIdA","clientIdB","batch","nestedListClientId","nextBlockClientId","previousBlockClientId","trailingId"],"sources":["@wordpress/block-library/src/list-item/hooks/use-merge.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRegistry, useDispatch, useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport useOutdentListItem from './use-outdent-list-item';\n\nexport default function useMerge( clientId, onMerge ) {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetPreviousBlockClientId,\n\t\tgetNextBlockClientId,\n\t\tgetBlockOrder,\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t} = useSelect( blockEditorStore );\n\tconst { mergeBlocks, moveBlocksToPosition } =\n\t\tuseDispatch( blockEditorStore );\n\tconst [ , outdentListItem ] = useOutdentListItem( clientId );\n\n\tfunction getTrailingId( id ) {\n\t\tconst order = getBlockOrder( id );\n\n\t\tif ( ! order.length ) {\n\t\t\treturn id;\n\t\t}\n\n\t\treturn getTrailingId( order[ order.length - 1 ] );\n\t}\n\n\tfunction getParentListItemId( id ) {\n\t\tconst listId = getBlockRootClientId( id );\n\t\tconst parentListItemId = getBlockRootClientId( listId );\n\t\tif ( ! parentListItemId ) return;\n\t\tif ( getBlockName( parentListItemId ) !== 'core/list-item' ) return;\n\t\treturn parentListItemId;\n\t}\n\n\t/**\n\t * Return the next list item with respect to the given list item. If none,\n\t * return the next list item of the parent list item if it exists.\n\t *\n\t * @param {string} id A list item client ID.\n\t * @return {string?} The client ID of the next list item.\n\t */\n\tfunction _getNextId( id ) {\n\t\tconst next = getNextBlockClientId( id );\n\t\tif ( next ) return next;\n\t\tconst parentListItemId = getParentListItemId( id );\n\t\tif ( ! parentListItemId ) return;\n\t\treturn _getNextId( parentListItemId );\n\t}\n\n\t/**\n\t * Given a client ID, return the client ID of the list item on the next\n\t * line, regardless of indentation level.\n\t *\n\t * @param {string} id The client ID of the current list item.\n\t * @return {string?} The client ID of the next list item.\n\t */\n\tfunction getNextId( id ) {\n\t\tconst order = getBlockOrder( id );\n\n\t\t// If the list item does not have a nested list, return the next list\n\t\t// item.\n\t\tif ( ! order.length ) {\n\t\t\treturn _getNextId( id );\n\t\t}\n\n\t\t// Get the first list item in the nested list.\n\t\treturn getBlockOrder( order[ 0 ] )[ 0 ];\n\t}\n\n\treturn ( forward ) => {\n\t\tfunction mergeWithNested( clientIdA, clientIdB ) {\n\t\t\tregistry.batch( () => {\n\t\t\t\t// When merging a sub list item with a higher next list item, we\n\t\t\t\t// also need to move any nested list items. Check if there's a\n\t\t\t\t// listed list, and append its nested list items to the current\n\t\t\t\t// list.\n\t\t\t\tconst [ nestedListClientId ] = getBlockOrder( clientIdB );\n\t\t\t\tif ( nestedListClientId ) {\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\tgetBlockOrder( nestedListClientId ),\n\t\t\t\t\t\tnestedListClientId,\n\t\t\t\t\t\tgetBlockRootClientId( clientIdA )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tmergeBlocks( clientIdA, clientIdB );\n\t\t\t} );\n\t\t}\n\n\t\tif ( forward ) {\n\t\t\tconst nextBlockClientId = getNextId( clientId );\n\n\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\tonMerge( forward );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( getParentListItemId( nextBlockClientId ) ) {\n\t\t\t\toutdentListItem( nextBlockClientId );\n\t\t\t} else {\n\t\t\t\tmergeWithNested( clientId, nextBlockClientId );\n\t\t\t}\n\t\t} else {\n\t\t\t// Merging is only done from the top level. For lowel levels, the\n\t\t\t// list item is outdented instead.\n\t\t\tconst previousBlockClientId = getPreviousBlockClientId( clientId );\n\t\t\tif ( getParentListItemId( clientId ) ) {\n\t\t\t\toutdentListItem( clientId );\n\t\t\t} else if ( previousBlockClientId ) {\n\t\t\t\tconst trailingId = getTrailingId( previousBlockClientId );\n\t\t\t\tmergeWithNested( trailingId, clientId );\n\t\t\t} else {\n\t\t\t\tonMerge( forward );\n\t\t\t}\n\t\t}\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["useRegistry","useDispatch","useSelect","store","blockEditorStore","useOutdentListItem","useMerge","clientId","onMerge","registry","getPreviousBlockClientId","getNextBlockClientId","getBlockOrder","getBlockRootClientId","getBlockName","mergeBlocks","moveBlocksToPosition","outdentListItem","getTrailingId","id","order","length","getParentListItemId","listId","parentListItemId","_getNextId","next","getNextId","forward","mergeWithNested","clientIdA","clientIdB","batch","nestedListClientId","nextBlockClientId","previousBlockClientId","trailingId"],"sources":["@wordpress/block-library/src/list-item/hooks/use-merge.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRegistry, useDispatch, useSelect } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport useOutdentListItem from './use-outdent-list-item';\n\nexport default function useMerge( clientId, onMerge ) {\n\tconst registry = useRegistry();\n\tconst {\n\t\tgetPreviousBlockClientId,\n\t\tgetNextBlockClientId,\n\t\tgetBlockOrder,\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t} = useSelect( blockEditorStore );\n\tconst { mergeBlocks, moveBlocksToPosition } =\n\t\tuseDispatch( blockEditorStore );\n\tconst outdentListItem = useOutdentListItem();\n\n\tfunction getTrailingId( id ) {\n\t\tconst order = getBlockOrder( id );\n\n\t\tif ( ! order.length ) {\n\t\t\treturn id;\n\t\t}\n\n\t\treturn getTrailingId( order[ order.length - 1 ] );\n\t}\n\n\tfunction getParentListItemId( id ) {\n\t\tconst listId = getBlockRootClientId( id );\n\t\tconst parentListItemId = getBlockRootClientId( listId );\n\t\tif ( ! parentListItemId ) return;\n\t\tif ( getBlockName( parentListItemId ) !== 'core/list-item' ) return;\n\t\treturn parentListItemId;\n\t}\n\n\t/**\n\t * Return the next list item with respect to the given list item. If none,\n\t * return the next list item of the parent list item if it exists.\n\t *\n\t * @param {string} id A list item client ID.\n\t * @return {string?} The client ID of the next list item.\n\t */\n\tfunction _getNextId( id ) {\n\t\tconst next = getNextBlockClientId( id );\n\t\tif ( next ) return next;\n\t\tconst parentListItemId = getParentListItemId( id );\n\t\tif ( ! parentListItemId ) return;\n\t\treturn _getNextId( parentListItemId );\n\t}\n\n\t/**\n\t * Given a client ID, return the client ID of the list item on the next\n\t * line, regardless of indentation level.\n\t *\n\t * @param {string} id The client ID of the current list item.\n\t * @return {string?} The client ID of the next list item.\n\t */\n\tfunction getNextId( id ) {\n\t\tconst order = getBlockOrder( id );\n\n\t\t// If the list item does not have a nested list, return the next list\n\t\t// item.\n\t\tif ( ! order.length ) {\n\t\t\treturn _getNextId( id );\n\t\t}\n\n\t\t// Get the first list item in the nested list.\n\t\treturn getBlockOrder( order[ 0 ] )[ 0 ];\n\t}\n\n\treturn ( forward ) => {\n\t\tfunction mergeWithNested( clientIdA, clientIdB ) {\n\t\t\tregistry.batch( () => {\n\t\t\t\t// When merging a sub list item with a higher next list item, we\n\t\t\t\t// also need to move any nested list items. Check if there's a\n\t\t\t\t// listed list, and append its nested list items to the current\n\t\t\t\t// list.\n\t\t\t\tconst [ nestedListClientId ] = getBlockOrder( clientIdB );\n\t\t\t\tif ( nestedListClientId ) {\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\tgetBlockOrder( nestedListClientId ),\n\t\t\t\t\t\tnestedListClientId,\n\t\t\t\t\t\tgetBlockRootClientId( clientIdA )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tmergeBlocks( clientIdA, clientIdB );\n\t\t\t} );\n\t\t}\n\n\t\tif ( forward ) {\n\t\t\tconst nextBlockClientId = getNextId( clientId );\n\n\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\tonMerge( forward );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( getParentListItemId( nextBlockClientId ) ) {\n\t\t\t\toutdentListItem( nextBlockClientId );\n\t\t\t} else {\n\t\t\t\tmergeWithNested( clientId, nextBlockClientId );\n\t\t\t}\n\t\t} else {\n\t\t\t// Merging is only done from the top level. For lowel levels, the\n\t\t\t// list item is outdented instead.\n\t\t\tconst previousBlockClientId = getPreviousBlockClientId( clientId );\n\t\t\tif ( getParentListItemId( clientId ) ) {\n\t\t\t\toutdentListItem( clientId );\n\t\t\t} else if ( previousBlockClientId ) {\n\t\t\t\tconst trailingId = getTrailingId( previousBlockClientId );\n\t\t\t\tmergeWithNested( trailingId, clientId );\n\t\t\t} else {\n\t\t\t\tonMerge( forward );\n\t\t\t}\n\t\t}\n\t};\n}\n"],"mappings":"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"}
@@ -5,22 +5,8 @@ import { useCallback } from '@wordpress/element';
5
5
  import { useSelect, useDispatch, useRegistry } from '@wordpress/data';
6
6
  import { store as blockEditorStore } from '@wordpress/block-editor';
7
7
  import { cloneBlock } from '@wordpress/blocks';
8
- export default function useOutdentListItem(clientId) {
8
+ export default function useOutdentListItem() {
9
9
  const registry = useRegistry();
10
- const {
11
- canOutdent
12
- } = useSelect(innerSelect => {
13
- const {
14
- getBlockRootClientId,
15
- getBlockName
16
- } = innerSelect(blockEditorStore);
17
- const grandParentId = getBlockRootClientId(getBlockRootClientId(clientId));
18
- const grandParentName = getBlockName(grandParentId);
19
- const isListItem = grandParentName === 'core/list-item';
20
- return {
21
- canOutdent: isListItem
22
- };
23
- }, [clientId]);
24
10
  const {
25
11
  moveBlocksToPosition,
26
12
  removeBlock,
@@ -43,7 +29,7 @@ export default function useOutdentListItem(clientId) {
43
29
  if (getBlockName(parentListItemId) !== 'core/list-item') return;
44
30
  return parentListItemId;
45
31
  }
46
- return [canOutdent, useCallback((clientIds = getSelectedBlockClientIds()) => {
32
+ return useCallback((clientIds = getSelectedBlockClientIds()) => {
47
33
  if (!Array.isArray(clientIds)) {
48
34
  clientIds = [clientIds];
49
35
  }
@@ -79,6 +65,6 @@ export default function useOutdentListItem(clientId) {
79
65
  removeBlock(parentListId, shouldSelectParent);
80
66
  }
81
67
  });
82
- }, [])];
68
+ }, []);
83
69
  }
84
70
  //# sourceMappingURL=use-outdent-list-item.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useSelect","useDispatch","useRegistry","store","blockEditorStore","cloneBlock","useOutdentListItem","clientId","registry","canOutdent","innerSelect","getBlockRootClientId","getBlockName","grandParentId","grandParentName","isListItem","moveBlocksToPosition","removeBlock","insertBlock","updateBlockListSettings","getBlockOrder","getBlockIndex","getSelectedBlockClientIds","getBlock","getBlockListSettings","getParentListItemId","id","listId","parentListItemId","clientIds","Array","isArray","length","firstClientId","parentListId","lastClientId","order","followingListItems","slice","batch","nestedListId","nestedListBlock","shouldSelectParent"],"sources":["@wordpress/block-library/src/list-item/hooks/use-outdent-list-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { cloneBlock } from '@wordpress/blocks';\n\nexport default function useOutdentListItem( clientId ) {\n\tconst registry = useRegistry();\n\tconst { canOutdent } = useSelect(\n\t\t( innerSelect ) => {\n\t\t\tconst { getBlockRootClientId, getBlockName } =\n\t\t\t\tinnerSelect( blockEditorStore );\n\t\t\tconst grandParentId = getBlockRootClientId(\n\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t);\n\t\t\tconst grandParentName = getBlockName( grandParentId );\n\t\t\tconst isListItem = grandParentName === 'core/list-item';\n\n\t\t\treturn {\n\t\t\t\tcanOutdent: isListItem,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst {\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tinsertBlock,\n\t\tupdateBlockListSettings,\n\t} = useDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t\tgetBlockOrder,\n\t\tgetBlockIndex,\n\t\tgetSelectedBlockClientIds,\n\t\tgetBlock,\n\t\tgetBlockListSettings,\n\t} = useSelect( blockEditorStore );\n\n\tfunction getParentListItemId( id ) {\n\t\tconst listId = getBlockRootClientId( id );\n\t\tconst parentListItemId = getBlockRootClientId( listId );\n\t\tif ( ! parentListItemId ) return;\n\t\tif ( getBlockName( parentListItemId ) !== 'core/list-item' ) return;\n\t\treturn parentListItemId;\n\t}\n\n\treturn [\n\t\tcanOutdent,\n\t\tuseCallback( ( clientIds = getSelectedBlockClientIds() ) => {\n\t\t\tif ( ! Array.isArray( clientIds ) ) {\n\t\t\t\tclientIds = [ clientIds ];\n\t\t\t}\n\n\t\t\tif ( ! clientIds.length ) return;\n\n\t\t\tconst firstClientId = clientIds[ 0 ];\n\n\t\t\t// Can't outdent if it's not a list item.\n\t\t\tif ( getBlockName( firstClientId ) !== 'core/list-item' ) return;\n\n\t\t\tconst parentListItemId = getParentListItemId( firstClientId );\n\n\t\t\t// Can't outdent if it's at the top level.\n\t\t\tif ( ! parentListItemId ) return;\n\n\t\t\tconst parentListId = getBlockRootClientId( firstClientId );\n\t\t\tconst lastClientId = clientIds[ clientIds.length - 1 ];\n\t\t\tconst order = getBlockOrder( parentListId );\n\t\t\tconst followingListItems = order.slice(\n\t\t\t\tgetBlockIndex( lastClientId ) + 1\n\t\t\t);\n\n\t\t\tregistry.batch( () => {\n\t\t\t\tif ( followingListItems.length ) {\n\t\t\t\t\tlet nestedListId = getBlockOrder( firstClientId )[ 0 ];\n\n\t\t\t\t\tif ( ! nestedListId ) {\n\t\t\t\t\t\tconst nestedListBlock = cloneBlock(\n\t\t\t\t\t\t\tgetBlock( parentListId ),\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t);\n\t\t\t\t\t\tnestedListId = nestedListBlock.clientId;\n\t\t\t\t\t\tinsertBlock( nestedListBlock, 0, firstClientId, false );\n\t\t\t\t\t\t// Immediately update the block list settings, otherwise\n\t\t\t\t\t\t// blocks can't be moved here due to canInsert checks.\n\t\t\t\t\t\tupdateBlockListSettings(\n\t\t\t\t\t\t\tnestedListId,\n\t\t\t\t\t\t\tgetBlockListSettings( parentListId )\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\tfollowingListItems,\n\t\t\t\t\t\tparentListId,\n\t\t\t\t\t\tnestedListId\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\tclientIds,\n\t\t\t\t\tparentListId,\n\t\t\t\t\tgetBlockRootClientId( parentListItemId ),\n\t\t\t\t\tgetBlockIndex( parentListItemId ) + 1\n\t\t\t\t);\n\t\t\t\tif ( ! getBlockOrder( parentListId ).length ) {\n\t\t\t\t\tconst shouldSelectParent = false;\n\t\t\t\t\tremoveBlock( parentListId, shouldSelectParent );\n\t\t\t\t}\n\t\t\t} );\n\t\t}, [] ),\n\t];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,oBAAoB;AAChD,SAASC,SAAS,EAAEC,WAAW,EAAEC,WAAW,QAAQ,iBAAiB;AACrE,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,UAAU,QAAQ,mBAAmB;AAE9C,eAAe,SAASC,kBAAkBA,CAAEC,QAAQ,EAAG;EACtD,MAAMC,QAAQ,GAAGN,WAAW,CAAC,CAAC;EAC9B,MAAM;IAAEO;EAAW,CAAC,GAAGT,SAAS,CAC7BU,WAAW,IAAM;IAClB,MAAM;MAAEC,oBAAoB;MAAEC;IAAa,CAAC,GAC3CF,WAAW,CAAEN,gBAAiB,CAAC;IAChC,MAAMS,aAAa,GAAGF,oBAAoB,CACzCA,oBAAoB,CAAEJ,QAAS,CAChC,CAAC;IACD,MAAMO,eAAe,GAAGF,YAAY,CAAEC,aAAc,CAAC;IACrD,MAAME,UAAU,GAAGD,eAAe,KAAK,gBAAgB;IAEvD,OAAO;MACNL,UAAU,EAAEM;IACb,CAAC;EACF,CAAC,EACD,CAAER,QAAQ,CACX,CAAC;EACD,MAAM;IACLS,oBAAoB;IACpBC,WAAW;IACXC,WAAW;IACXC;EACD,CAAC,GAAGlB,WAAW,CAAEG,gBAAiB,CAAC;EACnC,MAAM;IACLO,oBAAoB;IACpBC,YAAY;IACZQ,aAAa;IACbC,aAAa;IACbC,yBAAyB;IACzBC,QAAQ;IACRC;EACD,CAAC,GAAGxB,SAAS,CAAEI,gBAAiB,CAAC;EAEjC,SAASqB,mBAAmBA,CAAEC,EAAE,EAAG;IAClC,MAAMC,MAAM,GAAGhB,oBAAoB,CAAEe,EAAG,CAAC;IACzC,MAAME,gBAAgB,GAAGjB,oBAAoB,CAAEgB,MAAO,CAAC;IACvD,IAAK,CAAEC,gBAAgB,EAAG;IAC1B,IAAKhB,YAAY,CAAEgB,gBAAiB,CAAC,KAAK,gBAAgB,EAAG;IAC7D,OAAOA,gBAAgB;EACxB;EAEA,OAAO,CACNnB,UAAU,EACVV,WAAW,CAAE,CAAE8B,SAAS,GAAGP,yBAAyB,CAAC,CAAC,KAAM;IAC3D,IAAK,CAAEQ,KAAK,CAACC,OAAO,CAAEF,SAAU,CAAC,EAAG;MACnCA,SAAS,GAAG,CAAEA,SAAS,CAAE;IAC1B;IAEA,IAAK,CAAEA,SAAS,CAACG,MAAM,EAAG;IAE1B,MAAMC,aAAa,GAAGJ,SAAS,CAAE,CAAC,CAAE;;IAEpC;IACA,IAAKjB,YAAY,CAAEqB,aAAc,CAAC,KAAK,gBAAgB,EAAG;IAE1D,MAAML,gBAAgB,GAAGH,mBAAmB,CAAEQ,aAAc,CAAC;;IAE7D;IACA,IAAK,CAAEL,gBAAgB,EAAG;IAE1B,MAAMM,YAAY,GAAGvB,oBAAoB,CAAEsB,aAAc,CAAC;IAC1D,MAAME,YAAY,GAAGN,SAAS,CAAEA,SAAS,CAACG,MAAM,GAAG,CAAC,CAAE;IACtD,MAAMI,KAAK,GAAGhB,aAAa,CAAEc,YAAa,CAAC;IAC3C,MAAMG,kBAAkB,GAAGD,KAAK,CAACE,KAAK,CACrCjB,aAAa,CAAEc,YAAa,CAAC,GAAG,CACjC,CAAC;IAED3B,QAAQ,CAAC+B,KAAK,CAAE,MAAM;MACrB,IAAKF,kBAAkB,CAACL,MAAM,EAAG;QAChC,IAAIQ,YAAY,GAAGpB,aAAa,CAAEa,aAAc,CAAC,CAAE,CAAC,CAAE;QAEtD,IAAK,CAAEO,YAAY,EAAG;UACrB,MAAMC,eAAe,GAAGpC,UAAU,CACjCkB,QAAQ,CAAEW,YAAa,CAAC,EACxB,CAAC,CAAC,EACF,EACD,CAAC;UACDM,YAAY,GAAGC,eAAe,CAAClC,QAAQ;UACvCW,WAAW,CAAEuB,eAAe,EAAE,CAAC,EAAER,aAAa,EAAE,KAAM,CAAC;UACvD;UACA;UACAd,uBAAuB,CACtBqB,YAAY,EACZhB,oBAAoB,CAAEU,YAAa,CACpC,CAAC;QACF;QAEAlB,oBAAoB,CACnBqB,kBAAkB,EAClBH,YAAY,EACZM,YACD,CAAC;MACF;MACAxB,oBAAoB,CACnBa,SAAS,EACTK,YAAY,EACZvB,oBAAoB,CAAEiB,gBAAiB,CAAC,EACxCP,aAAa,CAAEO,gBAAiB,CAAC,GAAG,CACrC,CAAC;MACD,IAAK,CAAER,aAAa,CAAEc,YAAa,CAAC,CAACF,MAAM,EAAG;QAC7C,MAAMU,kBAAkB,GAAG,KAAK;QAChCzB,WAAW,CAAEiB,YAAY,EAAEQ,kBAAmB,CAAC;MAChD;IACD,CAAE,CAAC;EACJ,CAAC,EAAE,EAAG,CAAC,CACP;AACF"}
1
+ {"version":3,"names":["useCallback","useSelect","useDispatch","useRegistry","store","blockEditorStore","cloneBlock","useOutdentListItem","registry","moveBlocksToPosition","removeBlock","insertBlock","updateBlockListSettings","getBlockRootClientId","getBlockName","getBlockOrder","getBlockIndex","getSelectedBlockClientIds","getBlock","getBlockListSettings","getParentListItemId","id","listId","parentListItemId","clientIds","Array","isArray","length","firstClientId","parentListId","lastClientId","order","followingListItems","slice","batch","nestedListId","nestedListBlock","clientId","shouldSelectParent"],"sources":["@wordpress/block-library/src/list-item/hooks/use-outdent-list-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { cloneBlock } from '@wordpress/blocks';\n\nexport default function useOutdentListItem() {\n\tconst registry = useRegistry();\n\tconst {\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tinsertBlock,\n\t\tupdateBlockListSettings,\n\t} = useDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t\tgetBlockOrder,\n\t\tgetBlockIndex,\n\t\tgetSelectedBlockClientIds,\n\t\tgetBlock,\n\t\tgetBlockListSettings,\n\t} = useSelect( blockEditorStore );\n\n\tfunction getParentListItemId( id ) {\n\t\tconst listId = getBlockRootClientId( id );\n\t\tconst parentListItemId = getBlockRootClientId( listId );\n\t\tif ( ! parentListItemId ) return;\n\t\tif ( getBlockName( parentListItemId ) !== 'core/list-item' ) return;\n\t\treturn parentListItemId;\n\t}\n\n\treturn useCallback( ( clientIds = getSelectedBlockClientIds() ) => {\n\t\tif ( ! Array.isArray( clientIds ) ) {\n\t\t\tclientIds = [ clientIds ];\n\t\t}\n\n\t\tif ( ! clientIds.length ) return;\n\n\t\tconst firstClientId = clientIds[ 0 ];\n\n\t\t// Can't outdent if it's not a list item.\n\t\tif ( getBlockName( firstClientId ) !== 'core/list-item' ) return;\n\n\t\tconst parentListItemId = getParentListItemId( firstClientId );\n\n\t\t// Can't outdent if it's at the top level.\n\t\tif ( ! parentListItemId ) return;\n\n\t\tconst parentListId = getBlockRootClientId( firstClientId );\n\t\tconst lastClientId = clientIds[ clientIds.length - 1 ];\n\t\tconst order = getBlockOrder( parentListId );\n\t\tconst followingListItems = order.slice(\n\t\t\tgetBlockIndex( lastClientId ) + 1\n\t\t);\n\n\t\tregistry.batch( () => {\n\t\t\tif ( followingListItems.length ) {\n\t\t\t\tlet nestedListId = getBlockOrder( firstClientId )[ 0 ];\n\n\t\t\t\tif ( ! nestedListId ) {\n\t\t\t\t\tconst nestedListBlock = cloneBlock(\n\t\t\t\t\t\tgetBlock( parentListId ),\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t\tnestedListId = nestedListBlock.clientId;\n\t\t\t\t\tinsertBlock( nestedListBlock, 0, firstClientId, false );\n\t\t\t\t\t// Immediately update the block list settings, otherwise\n\t\t\t\t\t// blocks can't be moved here due to canInsert checks.\n\t\t\t\t\tupdateBlockListSettings(\n\t\t\t\t\t\tnestedListId,\n\t\t\t\t\t\tgetBlockListSettings( parentListId )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\tfollowingListItems,\n\t\t\t\t\tparentListId,\n\t\t\t\t\tnestedListId\n\t\t\t\t);\n\t\t\t}\n\t\t\tmoveBlocksToPosition(\n\t\t\t\tclientIds,\n\t\t\t\tparentListId,\n\t\t\t\tgetBlockRootClientId( parentListItemId ),\n\t\t\t\tgetBlockIndex( parentListItemId ) + 1\n\t\t\t);\n\t\t\tif ( ! getBlockOrder( parentListId ).length ) {\n\t\t\t\tconst shouldSelectParent = false;\n\t\t\t\tremoveBlock( parentListId, shouldSelectParent );\n\t\t\t}\n\t\t} );\n\t}, [] );\n}\n"],"mappings":"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"}
@@ -13,9 +13,10 @@ import useIndentListItem from './use-indent-list-item';
13
13
  export default function useSpace(clientId) {
14
14
  const {
15
15
  getSelectionStart,
16
- getSelectionEnd
16
+ getSelectionEnd,
17
+ getBlockIndex
17
18
  } = useSelect(blockEditorStore);
18
- const [canIndent, indentListItem] = useIndentListItem(clientId);
19
+ const indentListItem = useIndentListItem(clientId);
19
20
  return useRefEffect(element => {
20
21
  function onKeyDown(event) {
21
22
  const {
@@ -25,11 +26,14 @@ export default function useSpace(clientId) {
25
26
  metaKey,
26
27
  ctrlKey
27
28
  } = event;
28
- if (event.defaultPrevented || !canIndent || keyCode !== SPACE ||
29
+ if (event.defaultPrevented || keyCode !== SPACE ||
29
30
  // Only override when no modifiers are pressed.
30
31
  shiftKey || altKey || metaKey || ctrlKey) {
31
32
  return;
32
33
  }
34
+ if (getBlockIndex(clientId) === 0) {
35
+ return;
36
+ }
33
37
  const selectionStart = getSelectionStart();
34
38
  const selectionEnd = getSelectionEnd();
35
39
  if (selectionStart.offset === 0 && selectionEnd.offset === 0) {
@@ -41,6 +45,6 @@ export default function useSpace(clientId) {
41
45
  return () => {
42
46
  element.removeEventListener('keydown', onKeyDown);
43
47
  };
44
- }, [canIndent, indentListItem]);
48
+ }, [clientId, indentListItem]);
45
49
  }
46
50
  //# sourceMappingURL=use-space.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useRefEffect","SPACE","store","blockEditorStore","useSelect","useIndentListItem","useSpace","clientId","getSelectionStart","getSelectionEnd","canIndent","indentListItem","element","onKeyDown","event","keyCode","shiftKey","altKey","metaKey","ctrlKey","defaultPrevented","selectionStart","selectionEnd","offset","preventDefault","addEventListener","removeEventListener"],"sources":["@wordpress/block-library/src/list-item/hooks/use-space.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { SPACE } from '@wordpress/keycodes';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useIndentListItem from './use-indent-list-item';\n\nexport default function useSpace( clientId ) {\n\tconst { getSelectionStart, getSelectionEnd } =\n\t\tuseSelect( blockEditorStore );\n\tconst [ canIndent, indentListItem ] = useIndentListItem( clientId );\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, shiftKey, altKey, metaKey, ctrlKey } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\t! canIndent ||\n\t\t\t\t\tkeyCode !== SPACE ||\n\t\t\t\t\t// Only override when no modifiers are pressed.\n\t\t\t\t\tshiftKey ||\n\t\t\t\t\taltKey ||\n\t\t\t\t\tmetaKey ||\n\t\t\t\t\tctrlKey\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst selectionStart = getSelectionStart();\n\t\t\t\tconst selectionEnd = getSelectionEnd();\n\t\t\t\tif (\n\t\t\t\t\tselectionStart.offset === 0 &&\n\t\t\t\t\tselectionEnd.offset === 0\n\t\t\t\t) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tindentListItem();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\t\treturn () => {\n\t\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t\t};\n\t\t},\n\t\t[ canIndent, indentListItem ]\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,oBAAoB;AACjD,SAASC,KAAK,QAAQ,qBAAqB;AAC3C,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,wBAAwB;AAEtD,eAAe,SAASC,QAAQA,CAAEC,QAAQ,EAAG;EAC5C,MAAM;IAAEC,iBAAiB;IAAEC;EAAgB,CAAC,GAC3CL,SAAS,CAAED,gBAAiB,CAAC;EAC9B,MAAM,CAAEO,SAAS,EAAEC,cAAc,CAAE,GAAGN,iBAAiB,CAAEE,QAAS,CAAC;EAEnE,OAAOP,YAAY,CAChBY,OAAO,IAAM;IACd,SAASC,SAASA,CAAEC,KAAK,EAAG;MAC3B,MAAM;QAAEC,OAAO;QAAEC,QAAQ;QAAEC,MAAM;QAAEC,OAAO;QAAEC;MAAQ,CAAC,GAAGL,KAAK;MAE7D,IACCA,KAAK,CAACM,gBAAgB,IACtB,CAAEV,SAAS,IACXK,OAAO,KAAKd,KAAK;MACjB;MACAe,QAAQ,IACRC,MAAM,IACNC,OAAO,IACPC,OAAO,EACN;QACD;MACD;MAEA,MAAME,cAAc,GAAGb,iBAAiB,CAAC,CAAC;MAC1C,MAAMc,YAAY,GAAGb,eAAe,CAAC,CAAC;MACtC,IACCY,cAAc,CAACE,MAAM,KAAK,CAAC,IAC3BD,YAAY,CAACC,MAAM,KAAK,CAAC,EACxB;QACDT,KAAK,CAACU,cAAc,CAAC,CAAC;QACtBb,cAAc,CAAC,CAAC;MACjB;IACD;IAEAC,OAAO,CAACa,gBAAgB,CAAE,SAAS,EAAEZ,SAAU,CAAC;IAChD,OAAO,MAAM;MACZD,OAAO,CAACc,mBAAmB,CAAE,SAAS,EAAEb,SAAU,CAAC;IACpD,CAAC;EACF,CAAC,EACD,CAAEH,SAAS,EAAEC,cAAc,CAC5B,CAAC;AACF"}
1
+ {"version":3,"names":["useRefEffect","SPACE","store","blockEditorStore","useSelect","useIndentListItem","useSpace","clientId","getSelectionStart","getSelectionEnd","getBlockIndex","indentListItem","element","onKeyDown","event","keyCode","shiftKey","altKey","metaKey","ctrlKey","defaultPrevented","selectionStart","selectionEnd","offset","preventDefault","addEventListener","removeEventListener"],"sources":["@wordpress/block-library/src/list-item/hooks/use-space.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { SPACE } from '@wordpress/keycodes';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useIndentListItem from './use-indent-list-item';\n\nexport default function useSpace( clientId ) {\n\tconst { getSelectionStart, getSelectionEnd, getBlockIndex } =\n\t\tuseSelect( blockEditorStore );\n\tconst indentListItem = useIndentListItem( clientId );\n\n\treturn useRefEffect(\n\t\t( element ) => {\n\t\t\tfunction onKeyDown( event ) {\n\t\t\t\tconst { keyCode, shiftKey, altKey, metaKey, ctrlKey } = event;\n\n\t\t\t\tif (\n\t\t\t\t\tevent.defaultPrevented ||\n\t\t\t\t\tkeyCode !== SPACE ||\n\t\t\t\t\t// Only override when no modifiers are pressed.\n\t\t\t\t\tshiftKey ||\n\t\t\t\t\taltKey ||\n\t\t\t\t\tmetaKey ||\n\t\t\t\t\tctrlKey\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockIndex( clientId ) === 0 ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst selectionStart = getSelectionStart();\n\t\t\t\tconst selectionEnd = getSelectionEnd();\n\t\t\t\tif (\n\t\t\t\t\tselectionStart.offset === 0 &&\n\t\t\t\t\tselectionEnd.offset === 0\n\t\t\t\t) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tindentListItem();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\t\treturn () => {\n\t\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t\t};\n\t\t},\n\t\t[ clientId, indentListItem ]\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,oBAAoB;AACjD,SAASC,KAAK,QAAQ,qBAAqB;AAC3C,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,iBAAiB,MAAM,wBAAwB;AAEtD,eAAe,SAASC,QAAQA,CAAEC,QAAQ,EAAG;EAC5C,MAAM;IAAEC,iBAAiB;IAAEC,eAAe;IAAEC;EAAc,CAAC,GAC1DN,SAAS,CAAED,gBAAiB,CAAC;EAC9B,MAAMQ,cAAc,GAAGN,iBAAiB,CAAEE,QAAS,CAAC;EAEpD,OAAOP,YAAY,CAChBY,OAAO,IAAM;IACd,SAASC,SAASA,CAAEC,KAAK,EAAG;MAC3B,MAAM;QAAEC,OAAO;QAAEC,QAAQ;QAAEC,MAAM;QAAEC,OAAO;QAAEC;MAAQ,CAAC,GAAGL,KAAK;MAE7D,IACCA,KAAK,CAACM,gBAAgB,IACtBL,OAAO,KAAKd,KAAK;MACjB;MACAe,QAAQ,IACRC,MAAM,IACNC,OAAO,IACPC,OAAO,EACN;QACD;MACD;MAEA,IAAKT,aAAa,CAAEH,QAAS,CAAC,KAAK,CAAC,EAAG;QACtC;MACD;MAEA,MAAMc,cAAc,GAAGb,iBAAiB,CAAC,CAAC;MAC1C,MAAMc,YAAY,GAAGb,eAAe,CAAC,CAAC;MACtC,IACCY,cAAc,CAACE,MAAM,KAAK,CAAC,IAC3BD,YAAY,CAACC,MAAM,KAAK,CAAC,EACxB;QACDT,KAAK,CAACU,cAAc,CAAC,CAAC;QACtBb,cAAc,CAAC,CAAC;MACjB;IACD;IAEAC,OAAO,CAACa,gBAAgB,CAAE,SAAS,EAAEZ,SAAU,CAAC;IAChD,OAAO,MAAM;MACZD,OAAO,CAACc,mBAAmB,CAAE,SAAS,EAAEb,SAAU,CAAC;IACpD,CAAC;EACF,CAAC,EACD,CAAEN,QAAQ,EAAEI,cAAc,CAC3B,CAAC;AACF"}
@@ -167,6 +167,7 @@ class MediaContainer extends Component {
167
167
  } = this.props;
168
168
  const {
169
169
  isUploadFailed,
170
+ isUploadPaused,
170
171
  retryMessage
171
172
  } = params;
172
173
  const focalPointValues = !focalPoint ? IMAGE_DEFAULT_FOCAL_POINT : focalPoint;
@@ -186,6 +187,7 @@ class MediaContainer extends Component {
186
187
  focalPoint: imageFill && focalPointValues,
187
188
  isSelected: isMediaSelected,
188
189
  isUploadFailed: isUploadFailed,
190
+ isUploadPaused: isUploadPaused,
189
191
  isUploadInProgress: isUploadInProgress,
190
192
  onSelectMediaUploadOption: this.onSelectMediaUploadOption,
191
193
  openMediaOptions: openMediaOptions,
@@ -287,6 +289,7 @@ class MediaContainer extends Component {
287
289
  }) => {
288
290
  onSetOpenPickerRef(open);
289
291
  return createElement(Fragment, null, getMediaOptions(), createElement(MediaUploadProgress, {
292
+ enablePausedUploads: true,
290
293
  coverUrl: coverUrl,
291
294
  mediaId: mediaId,
292
295
  onUpdateMediaProgress: this.updateMediaProgress,