@wordpress/block-editor 8.3.1 → 8.4.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 (174) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -0
  3. package/build/components/block-list/block-html.js +4 -1
  4. package/build/components/block-list/block-html.js.map +1 -1
  5. package/build/components/block-list/block.js +4 -1
  6. package/build/components/block-list/block.js.map +1 -1
  7. package/build/components/block-list/use-block-props/use-focus-first-element.js +19 -0
  8. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  9. package/build/components/block-lock/index.js +32 -0
  10. package/build/components/block-lock/index.js.map +1 -0
  11. package/build/components/block-lock/menu-item.js +58 -0
  12. package/build/components/block-lock/menu-item.js.map +1 -0
  13. package/build/components/block-lock/modal.js +143 -0
  14. package/build/components/block-lock/modal.js.map +1 -0
  15. package/build/components/block-lock/toolbar.js +70 -0
  16. package/build/components/block-lock/toolbar.js.map +1 -0
  17. package/build/components/block-settings-menu/block-settings-dropdown.js +26 -6
  18. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  19. package/build/components/block-settings-menu-controls/index.js +19 -9
  20. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  21. package/build/components/block-title/use-block-display-title.js +7 -5
  22. package/build/components/block-title/use-block-display-title.js.map +1 -1
  23. package/build/components/block-toolbar/index.js +4 -0
  24. package/build/components/block-toolbar/index.js.map +1 -1
  25. package/build/components/border-radius-control/index.js +0 -1
  26. package/build/components/border-radius-control/index.js.map +1 -1
  27. package/build/components/border-radius-control/utils.js +1 -1
  28. package/build/components/border-radius-control/utils.js.map +1 -1
  29. package/build/components/colors-gradients/control.js +3 -1
  30. package/build/components/colors-gradients/control.js.map +1 -1
  31. package/build/components/date-format-picker/index.js +132 -0
  32. package/build/components/date-format-picker/index.js.map +1 -0
  33. package/build/components/index.js +9 -0
  34. package/build/components/index.js.map +1 -1
  35. package/build/components/line-height-control/index.js +5 -3
  36. package/build/components/line-height-control/index.js.map +1 -1
  37. package/build/components/list-view/block-select-button.js +4 -22
  38. package/build/components/list-view/block-select-button.js.map +1 -1
  39. package/build/components/list-view/block.js +33 -12
  40. package/build/components/list-view/block.js.map +1 -1
  41. package/build/components/list-view/branch.js +16 -13
  42. package/build/components/list-view/branch.js.map +1 -1
  43. package/build/components/list-view/index.js +7 -1
  44. package/build/components/list-view/index.js.map +1 -1
  45. package/build/components/list-view/use-block-selection.js +9 -2
  46. package/build/components/list-view/use-block-selection.js.map +1 -1
  47. package/build/components/rich-text/index.js +2 -2
  48. package/build/components/rich-text/index.js.map +1 -1
  49. package/build/components/rich-text/index.native.js +13 -9
  50. package/build/components/rich-text/index.native.js.map +1 -1
  51. package/build/components/url-popover/image-url-input-ui.js +11 -27
  52. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  53. package/build/hooks/anchor.js +7 -6
  54. package/build/hooks/anchor.js.map +1 -1
  55. package/build/hooks/gap.js +70 -5
  56. package/build/hooks/gap.js.map +1 -1
  57. package/build/layouts/flex.js +8 -5
  58. package/build/layouts/flex.js.map +1 -1
  59. package/build/layouts/flow.js +16 -12
  60. package/build/layouts/flow.js.map +1 -1
  61. package/build/store/defaults.js +1 -0
  62. package/build/store/defaults.js.map +1 -1
  63. package/build/store/selectors.js +29 -3
  64. package/build/store/selectors.js.map +1 -1
  65. package/build-module/components/block-list/block-html.js +5 -2
  66. package/build-module/components/block-list/block-html.js.map +1 -1
  67. package/build-module/components/block-list/block.js +5 -2
  68. package/build-module/components/block-list/block.js.map +1 -1
  69. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +18 -0
  70. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  71. package/build-module/components/block-lock/index.js +4 -0
  72. package/build-module/components/block-lock/index.js.map +1 -0
  73. package/build-module/components/block-lock/menu-item.js +44 -0
  74. package/build-module/components/block-lock/menu-item.js.map +1 -0
  75. package/build-module/components/block-lock/modal.js +128 -0
  76. package/build-module/components/block-lock/modal.js.map +1 -0
  77. package/build-module/components/block-lock/toolbar.js +55 -0
  78. package/build-module/components/block-lock/toolbar.js.map +1 -0
  79. package/build-module/components/block-settings-menu/block-settings-dropdown.js +26 -6
  80. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  81. package/build-module/components/block-settings-menu-controls/index.js +18 -9
  82. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  83. package/build-module/components/block-title/use-block-display-title.js +7 -5
  84. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  85. package/build-module/components/block-toolbar/index.js +3 -0
  86. package/build-module/components/block-toolbar/index.js.map +1 -1
  87. package/build-module/components/border-radius-control/index.js +0 -1
  88. package/build-module/components/border-radius-control/index.js.map +1 -1
  89. package/build-module/components/border-radius-control/utils.js +1 -1
  90. package/build-module/components/border-radius-control/utils.js.map +1 -1
  91. package/build-module/components/colors-gradients/control.js +3 -1
  92. package/build-module/components/colors-gradients/control.js.map +1 -1
  93. package/build-module/components/date-format-picker/index.js +122 -0
  94. package/build-module/components/date-format-picker/index.js.map +1 -0
  95. package/build-module/components/index.js +1 -0
  96. package/build-module/components/index.js.map +1 -1
  97. package/build-module/components/line-height-control/index.js +5 -3
  98. package/build-module/components/line-height-control/index.js.map +1 -1
  99. package/build-module/components/list-view/block-select-button.js +5 -20
  100. package/build-module/components/list-view/block-select-button.js.map +1 -1
  101. package/build-module/components/list-view/block.js +31 -12
  102. package/build-module/components/list-view/block.js.map +1 -1
  103. package/build-module/components/list-view/branch.js +16 -13
  104. package/build-module/components/list-view/branch.js.map +1 -1
  105. package/build-module/components/list-view/index.js +7 -1
  106. package/build-module/components/list-view/index.js.map +1 -1
  107. package/build-module/components/list-view/use-block-selection.js +10 -3
  108. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  109. package/build-module/components/rich-text/index.js +2 -2
  110. package/build-module/components/rich-text/index.js.map +1 -1
  111. package/build-module/components/rich-text/index.native.js +13 -9
  112. package/build-module/components/rich-text/index.native.js.map +1 -1
  113. package/build-module/components/url-popover/image-url-input-ui.js +12 -28
  114. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  115. package/build-module/hooks/anchor.js +7 -6
  116. package/build-module/hooks/anchor.js.map +1 -1
  117. package/build-module/hooks/gap.js +68 -7
  118. package/build-module/hooks/gap.js.map +1 -1
  119. package/build-module/layouts/flex.js +7 -5
  120. package/build-module/layouts/flex.js.map +1 -1
  121. package/build-module/layouts/flow.js +15 -12
  122. package/build-module/layouts/flow.js.map +1 -1
  123. package/build-module/store/defaults.js +1 -0
  124. package/build-module/store/defaults.js.map +1 -1
  125. package/build-module/store/selectors.js +24 -1
  126. package/build-module/store/selectors.js.map +1 -1
  127. package/build-style/style-rtl.css +157 -0
  128. package/build-style/style.css +157 -0
  129. package/package.json +28 -27
  130. package/src/components/block-list/block-html.js +8 -4
  131. package/src/components/block-list/block.js +5 -1
  132. package/src/components/block-list/use-block-props/use-focus-first-element.js +28 -0
  133. package/src/components/block-lock/index.js +3 -0
  134. package/src/components/block-lock/menu-item.js +52 -0
  135. package/src/components/block-lock/modal.js +165 -0
  136. package/src/components/block-lock/style.scss +67 -0
  137. package/src/components/block-lock/toolbar.js +58 -0
  138. package/src/components/block-settings-menu/block-settings-dropdown.js +47 -5
  139. package/src/components/block-settings-menu-controls/index.js +33 -12
  140. package/src/components/block-title/README.md +6 -1
  141. package/src/components/block-title/test/index.js +43 -1
  142. package/src/components/block-title/use-block-display-title.js +9 -6
  143. package/src/components/block-toolbar/index.js +6 -0
  144. package/src/components/block-toolbar/style.scss +4 -0
  145. package/src/components/block-tools/style.scss +29 -0
  146. package/src/components/border-radius-control/index.js +0 -1
  147. package/src/components/border-radius-control/test/utils.js +4 -0
  148. package/src/components/border-radius-control/utils.js +2 -1
  149. package/src/components/color-palette/test/__snapshots__/control.js.snap +70 -4
  150. package/src/components/colors-gradients/control.js +1 -1
  151. package/src/components/colors-gradients/style.scss +6 -0
  152. package/src/components/date-format-picker/README.md +58 -0
  153. package/src/components/date-format-picker/index.js +161 -0
  154. package/src/components/date-format-picker/style.scss +31 -0
  155. package/src/components/index.js +1 -0
  156. package/src/components/line-height-control/index.js +3 -3
  157. package/src/components/link-control/README.md +1 -1
  158. package/src/components/list-view/block-select-button.js +2 -29
  159. package/src/components/list-view/block.js +47 -12
  160. package/src/components/list-view/branch.js +37 -15
  161. package/src/components/list-view/index.js +6 -0
  162. package/src/components/list-view/use-block-selection.js +15 -2
  163. package/src/components/rich-text/index.js +1 -1
  164. package/src/components/rich-text/index.native.js +24 -8
  165. package/src/components/url-popover/image-url-input-ui.js +16 -29
  166. package/src/hooks/anchor.js +8 -6
  167. package/src/hooks/gap.js +83 -12
  168. package/src/hooks/test/gap.js +42 -0
  169. package/src/layouts/flex.js +6 -3
  170. package/src/layouts/flow.js +16 -11
  171. package/src/store/defaults.js +1 -0
  172. package/src/store/selectors.js +26 -1
  173. package/src/store/test/selectors.js +63 -0
  174. package/src/style.scss +2 -0
@@ -38,12 +38,13 @@ var _utils = require("./utils");
38
38
  * When a block is collapsed, we do not count their children as part of that total. In the current drag
39
39
  * implementation dragged blocks and their children are not counted.
40
40
  *
41
- * @param {Object} block block tree
42
- * @param {Object} expandedState state that notes which branches are collapsed
43
- * @param {Array} draggedClientIds a list of dragged client ids
41
+ * @param {Object} block block tree
42
+ * @param {Object} expandedState state that notes which branches are collapsed
43
+ * @param {Array} draggedClientIds a list of dragged client ids
44
+ * @param {boolean} isExpandedByDefault flag to determine the default fallback expanded state.
44
45
  * @return {number} block count
45
46
  */
46
- function countBlocks(block, expandedState, draggedClientIds) {
47
+ function countBlocks(block, expandedState, draggedClientIds, isExpandedByDefault) {
47
48
  var _expandedState$block$;
48
49
 
49
50
  const isDragged = draggedClientIds === null || draggedClientIds === void 0 ? void 0 : draggedClientIds.includes(block.clientId);
@@ -52,16 +53,16 @@ function countBlocks(block, expandedState, draggedClientIds) {
52
53
  return 0;
53
54
  }
54
55
 
55
- const isExpanded = (_expandedState$block$ = expandedState[block.clientId]) !== null && _expandedState$block$ !== void 0 ? _expandedState$block$ : true;
56
+ const isExpanded = (_expandedState$block$ = expandedState[block.clientId]) !== null && _expandedState$block$ !== void 0 ? _expandedState$block$ : isExpandedByDefault;
56
57
 
57
58
  if (isExpanded) {
58
- return 1 + block.innerBlocks.reduce(countReducer(expandedState, draggedClientIds), 0);
59
+ return 1 + block.innerBlocks.reduce(countReducer(expandedState, draggedClientIds, isExpandedByDefault), 0);
59
60
  }
60
61
 
61
62
  return 1;
62
63
  }
63
64
 
64
- const countReducer = (expandedState, draggedClientIds) => (count, block) => {
65
+ const countReducer = (expandedState, draggedClientIds, isExpandedByDefault) => (count, block) => {
65
66
  var _expandedState$block$2;
66
67
 
67
68
  const isDragged = draggedClientIds === null || draggedClientIds === void 0 ? void 0 : draggedClientIds.includes(block.clientId);
@@ -70,10 +71,10 @@ const countReducer = (expandedState, draggedClientIds) => (count, block) => {
70
71
  return count;
71
72
  }
72
73
 
73
- const isExpanded = (_expandedState$block$2 = expandedState[block.clientId]) !== null && _expandedState$block$2 !== void 0 ? _expandedState$block$2 : true;
74
+ const isExpanded = (_expandedState$block$2 = expandedState[block.clientId]) !== null && _expandedState$block$2 !== void 0 ? _expandedState$block$2 : isExpandedByDefault;
74
75
 
75
76
  if (isExpanded && block.innerBlocks.length > 0) {
76
- return count + countBlocks(block, expandedState, draggedClientIds);
77
+ return count + countBlocks(block, expandedState, draggedClientIds, isExpandedByDefault);
77
78
  }
78
79
 
79
80
  return count + 1;
@@ -90,7 +91,8 @@ function ListViewBranch(props) {
90
91
  path = '',
91
92
  isBranchSelected = false,
92
93
  listPosition = 0,
93
- fixedListWindow
94
+ fixedListWindow,
95
+ expandNested = true
94
96
  } = props;
95
97
  const {
96
98
  expandedState,
@@ -109,7 +111,7 @@ function ListViewBranch(props) {
109
111
  } = block;
110
112
 
111
113
  if (index > 0) {
112
- nextPosition += countBlocks(filteredBlocks[index - 1], expandedState, draggedClientIds);
114
+ nextPosition += countBlocks(filteredBlocks[index - 1], expandedState, draggedClientIds, expandNested);
113
115
  }
114
116
 
115
117
  const usesWindowing = __experimentalPersistentListViewFeatures;
@@ -120,7 +122,7 @@ function ListViewBranch(props) {
120
122
  const position = index + 1;
121
123
  const updatedPath = path.length > 0 ? `${path}_${position}` : `${position}`;
122
124
  const hasNestedBlocks = showNestedBlocks && !!innerBlocks && !!innerBlocks.length;
123
- const isExpanded = hasNestedBlocks ? (_expandedState$client = expandedState[clientId]) !== null && _expandedState$client !== void 0 ? _expandedState$client : true : undefined;
125
+ const isExpanded = hasNestedBlocks ? (_expandedState$client = expandedState[clientId]) !== null && _expandedState$client !== void 0 ? _expandedState$client : expandNested : undefined;
124
126
  const isDragged = !!(draggedClientIds !== null && draggedClientIds !== void 0 && draggedClientIds.includes(clientId));
125
127
  const showBlock = isDragged || blockInView; // Make updates to the selected or dragged blocks synchronous,
126
128
  // but asynchronous for any other block.
@@ -157,7 +159,8 @@ function ListViewBranch(props) {
157
159
  listPosition: nextPosition + 1,
158
160
  fixedListWindow: fixedListWindow,
159
161
  isBranchSelected: isSelectedBranch,
160
- selectedClientIds: selectedClientIds
162
+ selectedClientIds: selectedClientIds,
163
+ expandNested: expandNested
161
164
  }));
162
165
  }));
163
166
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/branch.js"],"names":["countBlocks","block","expandedState","draggedClientIds","isDragged","includes","clientId","isExpanded","innerBlocks","reduce","countReducer","count","length","ListViewBranch","props","blocks","selectBlock","showBlockMovers","showNestedBlocks","selectedClientIds","level","path","isBranchSelected","listPosition","fixedListWindow","__experimentalPersistentListViewFeatures","filteredBlocks","blockCount","nextPosition","map","index","usesWindowing","itemInView","blockInView","position","updatedPath","hasNestedBlocks","undefined","showBlock","isSelected","isSelectedBranch","defaultProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { compact } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { memo } from '@wordpress/element';\nimport { AsyncModeProvider } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport ListViewBlock from './block';\nimport { useListViewContext } from './context';\nimport { isClientIdSelected } from './utils';\n\n/**\n * Given a block, returns the total number of blocks in that subtree. This is used to help determine\n * the list position of a block.\n *\n * When a block is collapsed, we do not count their children as part of that total. In the current drag\n * implementation dragged blocks and their children are not counted.\n *\n * @param {Object} block block tree\n * @param {Object} expandedState state that notes which branches are collapsed\n * @param {Array} draggedClientIds a list of dragged client ids\n * @return {number} block count\n */\nfunction countBlocks( block, expandedState, draggedClientIds ) {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn 0;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? true;\n\tif ( isExpanded ) {\n\t\treturn (\n\t\t\t1 +\n\t\t\tblock.innerBlocks.reduce(\n\t\t\t\tcountReducer( expandedState, draggedClientIds ),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\treturn 1;\n}\nconst countReducer = ( expandedState, draggedClientIds ) => (\n\tcount,\n\tblock\n) => {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn count;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? true;\n\tif ( isExpanded && block.innerBlocks.length > 0 ) {\n\t\treturn count + countBlocks( block, expandedState, draggedClientIds );\n\t}\n\treturn count + 1;\n};\n\nfunction ListViewBranch( props ) {\n\tconst {\n\t\tblocks,\n\t\tselectBlock,\n\t\tshowBlockMovers,\n\t\tshowNestedBlocks,\n\t\tselectedClientIds,\n\t\tlevel = 1,\n\t\tpath = '',\n\t\tisBranchSelected = false,\n\t\tlistPosition = 0,\n\t\tfixedListWindow,\n\t} = props;\n\n\tconst {\n\t\texpandedState,\n\t\tdraggedClientIds,\n\t\t__experimentalPersistentListViewFeatures,\n\t} = useListViewContext();\n\n\tconst filteredBlocks = compact( blocks );\n\tconst blockCount = filteredBlocks.length;\n\tlet nextPosition = listPosition;\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredBlocks.map( ( block, index ) => {\n\t\t\t\tconst { clientId, innerBlocks } = block;\n\n\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\tnextPosition += countBlocks(\n\t\t\t\t\t\tfilteredBlocks[ index - 1 ],\n\t\t\t\t\t\texpandedState,\n\t\t\t\t\t\tdraggedClientIds\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst usesWindowing = __experimentalPersistentListViewFeatures;\n\n\t\t\t\tconst { itemInView } = fixedListWindow;\n\n\t\t\t\tconst blockInView =\n\t\t\t\t\t! usesWindowing || itemInView( nextPosition );\n\n\t\t\t\tconst position = index + 1;\n\t\t\t\tconst updatedPath =\n\t\t\t\t\tpath.length > 0\n\t\t\t\t\t\t? `${ path }_${ position }`\n\t\t\t\t\t\t: `${ position }`;\n\t\t\t\tconst hasNestedBlocks =\n\t\t\t\t\tshowNestedBlocks && !! innerBlocks && !! innerBlocks.length;\n\n\t\t\t\tconst isExpanded = hasNestedBlocks\n\t\t\t\t\t? expandedState[ clientId ] ?? true\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst isDragged = !! draggedClientIds?.includes( clientId );\n\n\t\t\t\tconst showBlock = isDragged || blockInView;\n\n\t\t\t\t// Make updates to the selected or dragged blocks synchronous,\n\t\t\t\t// but asynchronous for any other block.\n\t\t\t\tconst isSelected = isClientIdSelected(\n\t\t\t\t\tclientId,\n\t\t\t\t\tselectedClientIds\n\t\t\t\t);\n\t\t\t\tconst isSelectedBranch =\n\t\t\t\t\tisBranchSelected || ( isSelected && hasNestedBlocks );\n\t\t\t\treturn (\n\t\t\t\t\t<AsyncModeProvider key={ clientId } value={ ! isSelected }>\n\t\t\t\t\t\t{ showBlock && (\n\t\t\t\t\t\t\t<ListViewBlock\n\t\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tisDragged={ isDragged }\n\t\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\t\trowCount={ blockCount }\n\t\t\t\t\t\t\t\tsiblingBlockCount={ blockCount }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! showBlock && (\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td className=\"block-editor-list-view-placeholder\" />\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasNestedBlocks && isExpanded && ! isDragged && (\n\t\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\t\tblocks={ innerBlocks }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tshowNestedBlocks={ showNestedBlocks }\n\t\t\t\t\t\t\t\tlevel={ level + 1 }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition + 1 }\n\t\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</AsyncModeProvider>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n\nListViewBranch.defaultProps = {\n\tselectBlock: () => {},\n};\n\nexport default memo( ListViewBranch );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/branch.js"],"names":["countBlocks","block","expandedState","draggedClientIds","isExpandedByDefault","isDragged","includes","clientId","isExpanded","innerBlocks","reduce","countReducer","count","length","ListViewBranch","props","blocks","selectBlock","showBlockMovers","showNestedBlocks","selectedClientIds","level","path","isBranchSelected","listPosition","fixedListWindow","expandNested","__experimentalPersistentListViewFeatures","filteredBlocks","blockCount","nextPosition","map","index","usesWindowing","itemInView","blockInView","position","updatedPath","hasNestedBlocks","undefined","showBlock","isSelected","isSelectedBranch","defaultProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { compact } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { memo } from '@wordpress/element';\nimport { AsyncModeProvider } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport ListViewBlock from './block';\nimport { useListViewContext } from './context';\nimport { isClientIdSelected } from './utils';\n\n/**\n * Given a block, returns the total number of blocks in that subtree. This is used to help determine\n * the list position of a block.\n *\n * When a block is collapsed, we do not count their children as part of that total. In the current drag\n * implementation dragged blocks and their children are not counted.\n *\n * @param {Object} block block tree\n * @param {Object} expandedState state that notes which branches are collapsed\n * @param {Array} draggedClientIds a list of dragged client ids\n * @param {boolean} isExpandedByDefault flag to determine the default fallback expanded state.\n * @return {number} block count\n */\nfunction countBlocks(\n\tblock,\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn 0;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\n\tif ( isExpanded ) {\n\t\treturn (\n\t\t\t1 +\n\t\t\tblock.innerBlocks.reduce(\n\t\t\t\tcountReducer(\n\t\t\t\t\texpandedState,\n\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\tisExpandedByDefault\n\t\t\t\t),\n\t\t\t\t0\n\t\t\t)\n\t\t);\n\t}\n\treturn 1;\n}\nconst countReducer = (\n\texpandedState,\n\tdraggedClientIds,\n\tisExpandedByDefault\n) => ( count, block ) => {\n\tconst isDragged = draggedClientIds?.includes( block.clientId );\n\tif ( isDragged ) {\n\t\treturn count;\n\t}\n\tconst isExpanded = expandedState[ block.clientId ] ?? isExpandedByDefault;\n\tif ( isExpanded && block.innerBlocks.length > 0 ) {\n\t\treturn (\n\t\t\tcount +\n\t\t\tcountBlocks(\n\t\t\t\tblock,\n\t\t\t\texpandedState,\n\t\t\t\tdraggedClientIds,\n\t\t\t\tisExpandedByDefault\n\t\t\t)\n\t\t);\n\t}\n\treturn count + 1;\n};\n\nfunction ListViewBranch( props ) {\n\tconst {\n\t\tblocks,\n\t\tselectBlock,\n\t\tshowBlockMovers,\n\t\tshowNestedBlocks,\n\t\tselectedClientIds,\n\t\tlevel = 1,\n\t\tpath = '',\n\t\tisBranchSelected = false,\n\t\tlistPosition = 0,\n\t\tfixedListWindow,\n\t\texpandNested = true,\n\t} = props;\n\n\tconst {\n\t\texpandedState,\n\t\tdraggedClientIds,\n\t\t__experimentalPersistentListViewFeatures,\n\t} = useListViewContext();\n\n\tconst filteredBlocks = compact( blocks );\n\tconst blockCount = filteredBlocks.length;\n\tlet nextPosition = listPosition;\n\n\treturn (\n\t\t<>\n\t\t\t{ filteredBlocks.map( ( block, index ) => {\n\t\t\t\tconst { clientId, innerBlocks } = block;\n\n\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\tnextPosition += countBlocks(\n\t\t\t\t\t\tfilteredBlocks[ index - 1 ],\n\t\t\t\t\t\texpandedState,\n\t\t\t\t\t\tdraggedClientIds,\n\t\t\t\t\t\texpandNested\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst usesWindowing = __experimentalPersistentListViewFeatures;\n\n\t\t\t\tconst { itemInView } = fixedListWindow;\n\t\t\t\tconst blockInView =\n\t\t\t\t\t! usesWindowing || itemInView( nextPosition );\n\n\t\t\t\tconst position = index + 1;\n\t\t\t\tconst updatedPath =\n\t\t\t\t\tpath.length > 0\n\t\t\t\t\t\t? `${ path }_${ position }`\n\t\t\t\t\t\t: `${ position }`;\n\t\t\t\tconst hasNestedBlocks =\n\t\t\t\t\tshowNestedBlocks && !! innerBlocks && !! innerBlocks.length;\n\n\t\t\t\tconst isExpanded = hasNestedBlocks\n\t\t\t\t\t? expandedState[ clientId ] ?? expandNested\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst isDragged = !! draggedClientIds?.includes( clientId );\n\n\t\t\t\tconst showBlock = isDragged || blockInView;\n\n\t\t\t\t// Make updates to the selected or dragged blocks synchronous,\n\t\t\t\t// but asynchronous for any other block.\n\t\t\t\tconst isSelected = isClientIdSelected(\n\t\t\t\t\tclientId,\n\t\t\t\t\tselectedClientIds\n\t\t\t\t);\n\t\t\t\tconst isSelectedBranch =\n\t\t\t\t\tisBranchSelected || ( isSelected && hasNestedBlocks );\n\t\t\t\treturn (\n\t\t\t\t\t<AsyncModeProvider key={ clientId } value={ ! isSelected }>\n\t\t\t\t\t\t{ showBlock && (\n\t\t\t\t\t\t\t<ListViewBlock\n\t\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tisDragged={ isDragged }\n\t\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\t\trowCount={ blockCount }\n\t\t\t\t\t\t\t\tsiblingBlockCount={ blockCount }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! showBlock && (\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t<td className=\"block-editor-list-view-placeholder\" />\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ hasNestedBlocks && isExpanded && ! isDragged && (\n\t\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\t\tblocks={ innerBlocks }\n\t\t\t\t\t\t\t\tselectBlock={ selectBlock }\n\t\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\t\tshowNestedBlocks={ showNestedBlocks }\n\t\t\t\t\t\t\t\tlevel={ level + 1 }\n\t\t\t\t\t\t\t\tpath={ updatedPath }\n\t\t\t\t\t\t\t\tlistPosition={ nextPosition + 1 }\n\t\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\t\tisBranchSelected={ isSelectedBranch }\n\t\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\t\texpandNested={ expandNested }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</AsyncModeProvider>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n\nListViewBranch.defaultProps = {\n\tselectBlock: () => {},\n};\n\nexport default memo( ListViewBranch );\n"]}
@@ -67,6 +67,8 @@ const BLOCK_LIST_ITEM_HEIGHT = 36;
67
67
  * @param {boolean} props.__experimentalFeatures Flag to enable experimental features.
68
68
  * @param {boolean} props.__experimentalPersistentListViewFeatures Flag to enable features for the Persistent List View experiment.
69
69
  * @param {boolean} props.__experimentalHideContainerBlockActions Flag to hide actions of top level blocks (like core/widget-area)
70
+ * @param {string} props.id Unique identifier for the root list element (primarily for a11y purposes).
71
+ * @param {boolean} props.expandNested Flag to determine whether nested levels are expanded by default.
70
72
  * @param {Object} ref Forwarded ref
71
73
  */
72
74
 
@@ -80,6 +82,8 @@ function ListView(_ref, ref) {
80
82
  __experimentalHideContainerBlockActions,
81
83
  showNestedBlocks,
82
84
  showBlockMovers,
85
+ id,
86
+ expandNested = false,
83
87
  ...props
84
88
  } = _ref;
85
89
  const {
@@ -183,6 +187,7 @@ function ListView(_ref, ref) {
183
187
  listViewRef: elementRef,
184
188
  blockDropTarget: blockDropTarget
185
189
  }), (0, _element.createElement)(_components.__experimentalTreeGrid, {
190
+ id: id,
186
191
  className: "block-editor-list-view-tree",
187
192
  "aria-label": (0, _i18n.__)('Block navigation structure'),
188
193
  ref: treeGridRef,
@@ -197,7 +202,8 @@ function ListView(_ref, ref) {
197
202
  showNestedBlocks: showNestedBlocks,
198
203
  showBlockMovers: showBlockMovers,
199
204
  fixedListWindow: fixedListWindow,
200
- selectedClientIds: selectedClientIds
205
+ selectedClientIds: selectedClientIds,
206
+ expandNested: expandNested
201
207
  }, props)))));
202
208
  }
203
209
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/index.js"],"names":["expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","ListView","ref","blocks","__experimentalFeatures","__experimentalPersistentListViewFeatures","__experimentalHideContainerBlockActions","showNestedBlocks","showBlockMovers","props","clientIdsTree","draggedClientIds","selectedClientIds","visibleBlockCount","select","getGlobalBlockCount","getClientIdsOfDescendants","blockEditorStore","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","isMounted","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","clientId","current","fixedListWindow","useWindowing","windowOverscan","expand","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","isTreeGridMounted"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport { __experimentalTreeGrid as TreeGrid } from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/**\n * Wrap `ListViewRows` with `TreeGrid`. ListViewRows is a\n * recursive component (it renders itself), so this ensures TreeGrid is only\n * present at the very top of the navigation grid.\n *\n * @param {Object} props Components props.\n * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {boolean} props.showNestedBlocks Flag to enable displaying nested blocks.\n * @param {boolean} props.showBlockMovers Flag to enable block movers\n * @param {boolean} props.__experimentalFeatures Flag to enable experimental features.\n * @param {boolean} props.__experimentalPersistentListViewFeatures Flag to enable features for the Persistent List View experiment.\n * @param {boolean} props.__experimentalHideContainerBlockActions Flag to hide actions of top level blocks (like core/widget-area)\n * @param {Object} ref Forwarded ref\n */\nfunction ListView(\n\t{\n\t\tblocks,\n\t\t__experimentalFeatures,\n\t\t__experimentalPersistentListViewFeatures,\n\t\t__experimentalHideContainerBlockActions,\n\t\tshowNestedBlocks,\n\t\tshowBlockMovers,\n\t\t...props\n\t},\n\tref\n) {\n\tconst {\n\t\tclientIdsTree,\n\t\tdraggedClientIds,\n\t\tselectedClientIds,\n\t} = useListViewClientIds( blocks );\n\n\tconst { visibleBlockCount } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getGlobalBlockCount, getClientIdsOfDescendants } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst isMounted = useRef( false );\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t( event, clientId ) => {\n\t\t\tupdateBlockSelection( event, clientId );\n\t\t\tsetSelectedTreeId( clientId );\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection ]\n\t);\n\tuseEffect( () => {\n\t\tisMounted.current = true;\n\t}, [] );\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\tuseWindowing: __experimentalPersistentListViewFeatures,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\tconst expand = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'expand', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'collapse', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\t__experimentalFeatures,\n\t\t\t__experimentalPersistentListViewFeatures,\n\t\t\t__experimentalHideContainerBlockActions,\n\t\t\tisTreeGridMounted: isMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t} ),\n\t\t[\n\t\t\t__experimentalFeatures,\n\t\t\t__experimentalPersistentListViewFeatures,\n\t\t\t__experimentalHideContainerBlockActions,\n\t\t\tisMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t]\n\t);\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t<TreeGrid\n\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\tref={ treeGridRef }\n\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\tonFocusRow={ focusRow }\n\t\t\t>\n\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\tshowNestedBlocks={ showNestedBlocks }\n\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t</ListViewContext.Provider>\n\t\t\t</TreeGrid>\n\t\t</AsyncModeProvider>\n\t);\n}\nexport default forwardRef( ListView );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/index.js"],"names":["expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","ListView","ref","blocks","__experimentalFeatures","__experimentalPersistentListViewFeatures","__experimentalHideContainerBlockActions","showNestedBlocks","showBlockMovers","expandNested","props","clientIdsTree","draggedClientIds","selectedClientIds","visibleBlockCount","select","getGlobalBlockCount","getClientIdsOfDescendants","blockEditorStore","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","isMounted","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","clientId","current","fixedListWindow","useWindowing","windowOverscan","expand","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","isTreeGridMounted"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport { __experimentalTreeGrid as TreeGrid } from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/**\n * Wrap `ListViewRows` with `TreeGrid`. ListViewRows is a\n * recursive component (it renders itself), so this ensures TreeGrid is only\n * present at the very top of the navigation grid.\n *\n * @param {Object} props Components props.\n * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {boolean} props.showNestedBlocks Flag to enable displaying nested blocks.\n * @param {boolean} props.showBlockMovers Flag to enable block movers\n * @param {boolean} props.__experimentalFeatures Flag to enable experimental features.\n * @param {boolean} props.__experimentalPersistentListViewFeatures Flag to enable features for the Persistent List View experiment.\n * @param {boolean} props.__experimentalHideContainerBlockActions Flag to hide actions of top level blocks (like core/widget-area)\n * @param {string} props.id Unique identifier for the root list element (primarily for a11y purposes).\n * @param {boolean} props.expandNested Flag to determine whether nested levels are expanded by default.\n * @param {Object} ref Forwarded ref\n */\nfunction ListView(\n\t{\n\t\tblocks,\n\t\t__experimentalFeatures,\n\t\t__experimentalPersistentListViewFeatures,\n\t\t__experimentalHideContainerBlockActions,\n\t\tshowNestedBlocks,\n\t\tshowBlockMovers,\n\t\tid,\n\t\texpandNested = false,\n\t\t...props\n\t},\n\tref\n) {\n\tconst {\n\t\tclientIdsTree,\n\t\tdraggedClientIds,\n\t\tselectedClientIds,\n\t} = useListViewClientIds( blocks );\n\n\tconst { visibleBlockCount } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getGlobalBlockCount, getClientIdsOfDescendants } = select(\n\t\t\t\tblockEditorStore\n\t\t\t);\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst isMounted = useRef( false );\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t( event, clientId ) => {\n\t\t\tupdateBlockSelection( event, clientId );\n\t\t\tsetSelectedTreeId( clientId );\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection ]\n\t);\n\tuseEffect( () => {\n\t\tisMounted.current = true;\n\t}, [] );\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\tuseWindowing: __experimentalPersistentListViewFeatures,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\tconst expand = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'expand', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( clientId ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( { type: 'collapse', clientIds: [ clientId ] } );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\t__experimentalFeatures,\n\t\t\t__experimentalPersistentListViewFeatures,\n\t\t\t__experimentalHideContainerBlockActions,\n\t\t\tisTreeGridMounted: isMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t} ),\n\t\t[\n\t\t\t__experimentalFeatures,\n\t\t\t__experimentalPersistentListViewFeatures,\n\t\t\t__experimentalHideContainerBlockActions,\n\t\t\tisMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t]\n\t);\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t<TreeGrid\n\t\t\t\tid={ id }\n\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\tref={ treeGridRef }\n\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\tonFocusRow={ focusRow }\n\t\t\t>\n\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\tshowNestedBlocks={ showNestedBlocks }\n\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\texpandNested={ expandNested }\n\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t/>\n\t\t\t\t</ListViewContext.Provider>\n\t\t\t</TreeGrid>\n\t\t</AsyncModeProvider>\n\t);\n}\nexport default forwardRef( ListView );\n"]}
@@ -62,7 +62,7 @@ function useBlockSelection() {
62
62
 
63
63
 
64
64
  event.preventDefault();
65
- const isKeyPress = event.type === 'keydown' && (event.keyCode === _keycodes.UP || event.keyCode === _keycodes.DOWN); // Handle clicking on a block when no blocks are selected, and return early.
65
+ const isKeyPress = event.type === 'keydown' && (event.keyCode === _keycodes.UP || event.keyCode === _keycodes.DOWN || event.keyCode === _keycodes.HOME || event.keyCode === _keycodes.END); // Handle clicking on a block when no blocks are selected, and return early.
66
66
 
67
67
  if (!isKeyPress && !hasSelectedBlock() && !hasMultiSelection()) {
68
68
  selectBlock(clientId, null);
@@ -108,7 +108,14 @@ function useBlockSelection() {
108
108
  await multiSelect(start, end, null); // Announce deselected block, or number of deselected blocks if
109
109
  // the total number of blocks deselected is greater than one.
110
110
 
111
- const updatedSelectedBlocks = getSelectedBlockClientIds();
111
+ const updatedSelectedBlocks = getSelectedBlockClientIds(); // If the selection is greater than 1 and the Home or End keys
112
+ // were used to generate the selection, then skip announcing the
113
+ // deselected blocks.
114
+
115
+ if ((event.keyCode === _keycodes.HOME || event.keyCode === _keycodes.END) && updatedSelectedBlocks.length > 1) {
116
+ return;
117
+ }
118
+
112
119
  const selectionDiff = (0, _lodash.difference)(selectedBlocks, updatedSelectedBlocks);
113
120
  let label;
114
121
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/use-block-selection.js"],"names":["useBlockSelection","clearSelectedBlock","multiSelect","selectBlock","blockEditorStore","getBlockName","getBlockParents","getBlockSelectionStart","getBlockSelectionEnd","getSelectedBlockClientIds","hasMultiSelection","hasSelectedBlock","getBlockType","blocksStore","updateBlockSelection","event","clientId","destinationClientId","shiftKey","preventDefault","isKeyPress","type","keyCode","UP","DOWN","selectedBlocks","clientIdWithParents","some","blockId","includes","startTarget","endTarget","startParents","endParents","start","end","updatedSelectedBlocks","selectionDiff","label","length","title"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { difference } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { speak } from '@wordpress/a11y';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\nimport { UP, DOWN } from '@wordpress/keycodes';\nimport { store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { getCommonDepthClientIds } from './utils';\n\nexport default function useBlockSelection() {\n\tconst { clearSelectedBlock, multiSelect, selectBlock } = useDispatch(\n\t\tblockEditorStore\n\t);\n\tconst {\n\t\tgetBlockName,\n\t\tgetBlockParents,\n\t\tgetBlockSelectionStart,\n\t\tgetBlockSelectionEnd,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\thasSelectedBlock,\n\t} = useSelect( blockEditorStore );\n\n\tconst { getBlockType } = useSelect( blocksStore );\n\n\tconst updateBlockSelection = useCallback(\n\t\tasync ( event, clientId, destinationClientId ) => {\n\t\t\tif ( ! event?.shiftKey ) {\n\t\t\t\tawait clearSelectedBlock();\n\t\t\t\tselectBlock( clientId );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// To handle multiple block selection via the `SHIFT` key, prevent\n\t\t\t// the browser default behavior of opening the link in a new window.\n\t\t\tevent.preventDefault();\n\n\t\t\tconst isKeyPress =\n\t\t\t\tevent.type === 'keydown' &&\n\t\t\t\t( event.keyCode === UP || event.keyCode === DOWN );\n\n\t\t\t// Handle clicking on a block when no blocks are selected, and return early.\n\t\t\tif (\n\t\t\t\t! isKeyPress &&\n\t\t\t\t! hasSelectedBlock() &&\n\t\t\t\t! hasMultiSelection()\n\t\t\t) {\n\t\t\t\tselectBlock( clientId, null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlocks = getSelectedBlockClientIds();\n\t\t\tconst clientIdWithParents = [\n\t\t\t\t...getBlockParents( clientId ),\n\t\t\t\tclientId,\n\t\t\t];\n\n\t\t\tif (\n\t\t\t\tisKeyPress &&\n\t\t\t\t! selectedBlocks.some( ( blockId ) =>\n\t\t\t\t\tclientIdWithParents.includes( blockId )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// Ensure that shift-selecting blocks via the keyboard only\n\t\t\t\t// expands the current selection if focusing over already\n\t\t\t\t// selected blocks. Otherwise, clear the selection so that\n\t\t\t\t// a user can create a new selection entirely by keyboard.\n\t\t\t\tawait clearSelectedBlock();\n\t\t\t}\n\n\t\t\tlet startTarget = getBlockSelectionStart();\n\t\t\tlet endTarget = clientId;\n\n\t\t\t// Handle keyboard behavior for selecting multiple blocks.\n\t\t\tif ( isKeyPress ) {\n\t\t\t\tif ( ! hasSelectedBlock() && ! hasMultiSelection() ) {\n\t\t\t\t\t// Set the starting point of the selection to the currently\n\t\t\t\t\t// focused block, if there are no blocks currently selected.\n\t\t\t\t\t// This ensures that as the selection is expanded or contracted,\n\t\t\t\t\t// the starting point of the selection is anchored to that block.\n\t\t\t\t\tstartTarget = clientId;\n\t\t\t\t}\n\t\t\t\tif ( destinationClientId ) {\n\t\t\t\t\t// If the user presses UP or DOWN, we want to ensure that the block they're\n\t\t\t\t\t// moving to is the target for selection, and not the currently focused one.\n\t\t\t\t\tendTarget = destinationClientId;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst startParents = getBlockParents( startTarget );\n\t\t\tconst endParents = getBlockParents( endTarget );\n\n\t\t\tconst { start, end } = getCommonDepthClientIds(\n\t\t\t\tstartTarget,\n\t\t\t\tendTarget,\n\t\t\t\tstartParents,\n\t\t\t\tendParents\n\t\t\t);\n\t\t\tawait multiSelect( start, end, null );\n\n\t\t\t// Announce deselected block, or number of deselected blocks if\n\t\t\t// the total number of blocks deselected is greater than one.\n\t\t\tconst updatedSelectedBlocks = getSelectedBlockClientIds();\n\n\t\t\tconst selectionDiff = difference(\n\t\t\t\tselectedBlocks,\n\t\t\t\tupdatedSelectedBlocks\n\t\t\t);\n\n\t\t\tlet label;\n\t\t\tif ( selectionDiff.length === 1 ) {\n\t\t\t\tconst title = getBlockType( getBlockName( selectionDiff[ 0 ] ) )\n\t\t\t\t\t?.title;\n\t\t\t\tif ( title ) {\n\t\t\t\t\tlabel = sprintf(\n\t\t\t\t\t\t/* translators: %s: block name */\n\t\t\t\t\t\t__( '%s deselected.' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if ( selectionDiff.length > 1 ) {\n\t\t\t\tlabel = sprintf(\n\t\t\t\t\t/* translators: %s: number of deselected blocks */\n\t\t\t\t\t__( '%s blocks deselected.' ),\n\t\t\t\t\tselectionDiff.length\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( label ) {\n\t\t\t\tspeak( label );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tclearSelectedBlock,\n\t\t\tgetBlockName,\n\t\t\tgetBlockType,\n\t\t\tgetBlockParents,\n\t\t\tgetBlockSelectionStart,\n\t\t\tgetBlockSelectionEnd,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\thasMultiSelection,\n\t\t\thasSelectedBlock,\n\t\t\tmultiSelect,\n\t\t\tselectBlock,\n\t\t]\n\t);\n\n\treturn {\n\t\tupdateBlockSelection,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/list-view/use-block-selection.js"],"names":["useBlockSelection","clearSelectedBlock","multiSelect","selectBlock","blockEditorStore","getBlockName","getBlockParents","getBlockSelectionStart","getBlockSelectionEnd","getSelectedBlockClientIds","hasMultiSelection","hasSelectedBlock","getBlockType","blocksStore","updateBlockSelection","event","clientId","destinationClientId","shiftKey","preventDefault","isKeyPress","type","keyCode","UP","DOWN","HOME","END","selectedBlocks","clientIdWithParents","some","blockId","includes","startTarget","endTarget","startParents","endParents","start","end","updatedSelectedBlocks","length","selectionDiff","label","title"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { difference } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { speak } from '@wordpress/a11y';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useCallback } from '@wordpress/element';\nimport { UP, DOWN, HOME, END } from '@wordpress/keycodes';\nimport { store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { getCommonDepthClientIds } from './utils';\n\nexport default function useBlockSelection() {\n\tconst { clearSelectedBlock, multiSelect, selectBlock } = useDispatch(\n\t\tblockEditorStore\n\t);\n\tconst {\n\t\tgetBlockName,\n\t\tgetBlockParents,\n\t\tgetBlockSelectionStart,\n\t\tgetBlockSelectionEnd,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\thasSelectedBlock,\n\t} = useSelect( blockEditorStore );\n\n\tconst { getBlockType } = useSelect( blocksStore );\n\n\tconst updateBlockSelection = useCallback(\n\t\tasync ( event, clientId, destinationClientId ) => {\n\t\t\tif ( ! event?.shiftKey ) {\n\t\t\t\tawait clearSelectedBlock();\n\t\t\t\tselectBlock( clientId );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// To handle multiple block selection via the `SHIFT` key, prevent\n\t\t\t// the browser default behavior of opening the link in a new window.\n\t\t\tevent.preventDefault();\n\n\t\t\tconst isKeyPress =\n\t\t\t\tevent.type === 'keydown' &&\n\t\t\t\t( event.keyCode === UP ||\n\t\t\t\t\tevent.keyCode === DOWN ||\n\t\t\t\t\tevent.keyCode === HOME ||\n\t\t\t\t\tevent.keyCode === END );\n\n\t\t\t// Handle clicking on a block when no blocks are selected, and return early.\n\t\t\tif (\n\t\t\t\t! isKeyPress &&\n\t\t\t\t! hasSelectedBlock() &&\n\t\t\t\t! hasMultiSelection()\n\t\t\t) {\n\t\t\t\tselectBlock( clientId, null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedBlocks = getSelectedBlockClientIds();\n\t\t\tconst clientIdWithParents = [\n\t\t\t\t...getBlockParents( clientId ),\n\t\t\t\tclientId,\n\t\t\t];\n\n\t\t\tif (\n\t\t\t\tisKeyPress &&\n\t\t\t\t! selectedBlocks.some( ( blockId ) =>\n\t\t\t\t\tclientIdWithParents.includes( blockId )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// Ensure that shift-selecting blocks via the keyboard only\n\t\t\t\t// expands the current selection if focusing over already\n\t\t\t\t// selected blocks. Otherwise, clear the selection so that\n\t\t\t\t// a user can create a new selection entirely by keyboard.\n\t\t\t\tawait clearSelectedBlock();\n\t\t\t}\n\n\t\t\tlet startTarget = getBlockSelectionStart();\n\t\t\tlet endTarget = clientId;\n\n\t\t\t// Handle keyboard behavior for selecting multiple blocks.\n\t\t\tif ( isKeyPress ) {\n\t\t\t\tif ( ! hasSelectedBlock() && ! hasMultiSelection() ) {\n\t\t\t\t\t// Set the starting point of the selection to the currently\n\t\t\t\t\t// focused block, if there are no blocks currently selected.\n\t\t\t\t\t// This ensures that as the selection is expanded or contracted,\n\t\t\t\t\t// the starting point of the selection is anchored to that block.\n\t\t\t\t\tstartTarget = clientId;\n\t\t\t\t}\n\t\t\t\tif ( destinationClientId ) {\n\t\t\t\t\t// If the user presses UP or DOWN, we want to ensure that the block they're\n\t\t\t\t\t// moving to is the target for selection, and not the currently focused one.\n\t\t\t\t\tendTarget = destinationClientId;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst startParents = getBlockParents( startTarget );\n\t\t\tconst endParents = getBlockParents( endTarget );\n\n\t\t\tconst { start, end } = getCommonDepthClientIds(\n\t\t\t\tstartTarget,\n\t\t\t\tendTarget,\n\t\t\t\tstartParents,\n\t\t\t\tendParents\n\t\t\t);\n\t\t\tawait multiSelect( start, end, null );\n\n\t\t\t// Announce deselected block, or number of deselected blocks if\n\t\t\t// the total number of blocks deselected is greater than one.\n\t\t\tconst updatedSelectedBlocks = getSelectedBlockClientIds();\n\n\t\t\t// If the selection is greater than 1 and the Home or End keys\n\t\t\t// were used to generate the selection, then skip announcing the\n\t\t\t// deselected blocks.\n\t\t\tif (\n\t\t\t\t( event.keyCode === HOME || event.keyCode === END ) &&\n\t\t\t\tupdatedSelectedBlocks.length > 1\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectionDiff = difference(\n\t\t\t\tselectedBlocks,\n\t\t\t\tupdatedSelectedBlocks\n\t\t\t);\n\n\t\t\tlet label;\n\t\t\tif ( selectionDiff.length === 1 ) {\n\t\t\t\tconst title = getBlockType( getBlockName( selectionDiff[ 0 ] ) )\n\t\t\t\t\t?.title;\n\t\t\t\tif ( title ) {\n\t\t\t\t\tlabel = sprintf(\n\t\t\t\t\t\t/* translators: %s: block name */\n\t\t\t\t\t\t__( '%s deselected.' ),\n\t\t\t\t\t\ttitle\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if ( selectionDiff.length > 1 ) {\n\t\t\t\tlabel = sprintf(\n\t\t\t\t\t/* translators: %s: number of deselected blocks */\n\t\t\t\t\t__( '%s blocks deselected.' ),\n\t\t\t\t\tselectionDiff.length\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif ( label ) {\n\t\t\t\tspeak( label );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tclearSelectedBlock,\n\t\t\tgetBlockName,\n\t\t\tgetBlockType,\n\t\t\tgetBlockParents,\n\t\t\tgetBlockSelectionStart,\n\t\t\tgetBlockSelectionEnd,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\thasMultiSelection,\n\t\t\thasSelectedBlock,\n\t\t\tmultiSelect,\n\t\t\tselectBlock,\n\t\t]\n\t);\n\n\treturn {\n\t\tupdateBlockSelection,\n\t};\n}\n"]}
@@ -351,7 +351,7 @@ function RichTextWrapper(_ref, forwardedRef) {
351
351
  "aria-multiline": !disableLineBreaks,
352
352
  "aria-label": placeholder
353
353
  }, props, autocompleteProps, {
354
- ref: (0, _compose.useMergeRefs)([autocompleteProps.ref, props.ref, richTextRef, (0, _useInputRules.useInputRules)({
354
+ ref: (0, _compose.useMergeRefs)([forwardedRef, autocompleteProps.ref, props.ref, richTextRef, (0, _useInputRules.useInputRules)({
355
355
  value,
356
356
  onChange,
357
357
  __unstableAllowPrefixTransformations,
@@ -381,7 +381,7 @@ function RichTextWrapper(_ref, forwardedRef) {
381
381
  onChange,
382
382
  disableLineBreaks,
383
383
  onSplitAtEnd
384
- }), anchorRef, forwardedRef]),
384
+ }), anchorRef]),
385
385
  contentEditable: true,
386
386
  suppressContentEditableWarning: true,
387
387
  className: (0, _classnames.default)('block-editor-rich-text__editable', props.className, 'rich-text'),
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","forwardedRef","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useCaretInFormat } from './use-caret-in-format';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } = select(\n\t\t\tblockEditorStore\n\t\t);\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst { value, onChange, ref: richTextRef } = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseCaretInFormat( { value } );\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\tanchorRef={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t\tforwardedRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t\tversion: '6.2',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","forwardedRef","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useCaretInFormat } from './use-caret-in-format';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useInputRules } from './use-input-rules';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } = select(\n\t\t\tblockEditorStore\n\t\t);\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tselectionChange( clientId, identifier, start, end );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst { value, onChange, ref: richTextRef } = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableMultilineTag: multilineTag,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseCaretInFormat( { value } );\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\tanchorRef={ anchorRef.current }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t\tversion: '6.2',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"]}
@@ -87,6 +87,8 @@ function RichTextWrapper(_ref, forwardedRef) {
87
87
  let {
88
88
  children,
89
89
  tagName,
90
+ start,
91
+ reversed,
90
92
  value: originalValue,
91
93
  onChange: originalOnChange,
92
94
  isSelected: originalIsSelected,
@@ -227,8 +229,8 @@ function RichTextWrapper(_ref, forwardedRef) {
227
229
  adjustedOnChange = newValue => originalOnChange(_blocks.children.fromDOM((0, _richText.__unstableCreateElement)(document, newValue).childNodes));
228
230
  }
229
231
 
230
- const onSelectionChange = (0, _element.useCallback)((start, end) => {
231
- selectionChange(clientId, identifier, start, end);
232
+ const onSelectionChange = (0, _element.useCallback)((selectionChangeStart, selectionChangeEnd) => {
233
+ selectionChange(clientId, identifier, selectionChangeStart, selectionChangeEnd);
232
234
  }, [clientId, identifier]);
233
235
  const onDelete = (0, _element.useCallback)(_ref2 => {
234
236
  let {
@@ -351,10 +353,10 @@ function RichTextWrapper(_ref, forwardedRef) {
351
353
  } else {
352
354
  const {
353
355
  text,
354
- start,
355
- end
356
+ start: splitStart,
357
+ end: splitEnd
356
358
  } = value;
357
- const canSplitAtEnd = onSplitAtEnd && start === end && end === text.length;
359
+ const canSplitAtEnd = onSplitAtEnd && splitStart === splitEnd && splitEnd === text.length;
358
360
 
359
361
  if (shiftKey || !canSplit && !canSplitAtEnd) {
360
362
  if (!disableLineBreaks) {
@@ -503,16 +505,16 @@ function RichTextWrapper(_ref, forwardedRef) {
503
505
  }
504
506
 
505
507
  const {
506
- start,
508
+ start: startPosition,
507
509
  text
508
510
  } = value;
509
- const characterBefore = text.slice(start - 1, start); // The character right before the caret must be a plain space.
511
+ const characterBefore = text.slice(startPosition - 1, startPosition); // The character right before the caret must be a plain space.
510
512
 
511
513
  if (characterBefore !== ' ') {
512
514
  return;
513
515
  }
514
516
 
515
- const trimmedTextBefore = text.slice(0, start).trim();
517
+ const trimmedTextBefore = text.slice(0, startPosition).trim();
516
518
  const prefixTransforms = (0, _blocks.getBlockTransforms)('from').filter(_ref6 => {
517
519
  let {
518
520
  type
@@ -530,7 +532,7 @@ function RichTextWrapper(_ref, forwardedRef) {
530
532
  return;
531
533
  }
532
534
 
533
- const content = valueToFormat((0, _richText.slice)(value, start, text.length));
535
+ const content = valueToFormat((0, _richText.slice)(value, startPosition, text.length));
534
536
  const block = transformation.transform(content);
535
537
  onReplace([block]);
536
538
 
@@ -547,6 +549,8 @@ function RichTextWrapper(_ref, forwardedRef) {
547
549
  selectionEnd: selectionEnd,
548
550
  onSelectionChange: onSelectionChange,
549
551
  tagName: tagName,
552
+ start: start,
553
+ reversed: reversed,
550
554
  placeholder: placeholder,
551
555
  allowedFormats: adjustedAllowedFormats,
552
556
  withoutInteractiveFormatting: withoutInteractiveFormatting,