@wordpress/block-editor 14.3.1 → 14.3.3

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 (137) hide show
  1. package/README.md +2 -2
  2. package/build/components/block-heading-level-dropdown/index.js +3 -1
  3. package/build/components/block-heading-level-dropdown/index.js.map +1 -1
  4. package/build/components/block-list/block.js +27 -4
  5. package/build/components/block-list/block.js.map +1 -1
  6. package/build/components/block-list/use-block-props/use-focus-first-element.js +0 -1
  7. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  8. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +9 -4
  9. package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
  10. package/build/components/block-list/zoom-out-separator.js +18 -1
  11. package/build/components/block-list/zoom-out-separator.js.map +1 -1
  12. package/build/components/block-switcher/utils.js +1 -1
  13. package/build/components/block-switcher/utils.js.map +1 -1
  14. package/build/components/block-tools/zoom-out-toolbar.js +5 -2
  15. package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
  16. package/build/components/block-variation-transforms/index.js +12 -6
  17. package/build/components/block-variation-transforms/index.js.map +1 -1
  18. package/build/components/rich-text/event-listeners/paste-handler.js +2 -13
  19. package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  20. package/build/components/rich-text/index.js +34 -20
  21. package/build/components/rich-text/index.js.map +1 -1
  22. package/build/components/tool-selector/index.js +2 -1
  23. package/build/components/tool-selector/index.js.map +1 -1
  24. package/build/components/writing-flow/index.js +1 -2
  25. package/build/components/writing-flow/index.js.map +1 -1
  26. package/build/components/writing-flow/use-arrow-nav.js +1 -4
  27. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  28. package/build/components/writing-flow/use-input.js +1 -31
  29. package/build/components/writing-flow/use-input.js.map +1 -1
  30. package/build/components/writing-flow/use-select-all.js +1 -14
  31. package/build/components/writing-flow/use-select-all.js.map +1 -1
  32. package/build/components/writing-flow/use-selection-observer.js +2 -6
  33. package/build/components/writing-flow/use-selection-observer.js.map +1 -1
  34. package/build/components/writing-flow/utils.js +0 -27
  35. package/build/components/writing-flow/utils.js.map +1 -1
  36. package/build/hooks/layout.js +12 -8
  37. package/build/hooks/layout.js.map +1 -1
  38. package/build/hooks/use-bindings-attributes.js +22 -28
  39. package/build/hooks/use-bindings-attributes.js.map +1 -1
  40. package/build/hooks/use-zoom-out.js +20 -23
  41. package/build/hooks/use-zoom-out.js.map +1 -1
  42. package/build/store/private-actions.js +25 -0
  43. package/build/store/private-actions.js.map +1 -1
  44. package/build/store/private-selectors.js +22 -0
  45. package/build/store/private-selectors.js.map +1 -1
  46. package/build/store/reducer.js +21 -1
  47. package/build/store/reducer.js.map +1 -1
  48. package/build/store/selectors.js +12 -5
  49. package/build/store/selectors.js.map +1 -1
  50. package/build-module/components/block-heading-level-dropdown/index.js +3 -1
  51. package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
  52. package/build-module/components/block-list/block.js +28 -7
  53. package/build-module/components/block-list/block.js.map +1 -1
  54. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +0 -1
  55. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  56. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +9 -4
  57. package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -1
  58. package/build-module/components/block-list/zoom-out-separator.js +18 -1
  59. package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
  60. package/build-module/components/block-switcher/utils.js +1 -1
  61. package/build-module/components/block-switcher/utils.js.map +1 -1
  62. package/build-module/components/block-tools/zoom-out-toolbar.js +5 -2
  63. package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
  64. package/build-module/components/block-variation-transforms/index.js +12 -6
  65. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  66. package/build-module/components/rich-text/event-listeners/paste-handler.js +2 -13
  67. package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
  68. package/build-module/components/rich-text/index.js +34 -20
  69. package/build-module/components/rich-text/index.js.map +1 -1
  70. package/build-module/components/tool-selector/index.js +2 -1
  71. package/build-module/components/tool-selector/index.js.map +1 -1
  72. package/build-module/components/writing-flow/index.js +1 -2
  73. package/build-module/components/writing-flow/index.js.map +1 -1
  74. package/build-module/components/writing-flow/use-arrow-nav.js +1 -4
  75. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  76. package/build-module/components/writing-flow/use-input.js +1 -31
  77. package/build-module/components/writing-flow/use-input.js.map +1 -1
  78. package/build-module/components/writing-flow/use-select-all.js +1 -14
  79. package/build-module/components/writing-flow/use-select-all.js.map +1 -1
  80. package/build-module/components/writing-flow/use-selection-observer.js +2 -6
  81. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
  82. package/build-module/components/writing-flow/utils.js +0 -26
  83. package/build-module/components/writing-flow/utils.js.map +1 -1
  84. package/build-module/hooks/layout.js +13 -9
  85. package/build-module/hooks/layout.js.map +1 -1
  86. package/build-module/hooks/use-bindings-attributes.js +22 -28
  87. package/build-module/hooks/use-bindings-attributes.js.map +1 -1
  88. package/build-module/hooks/use-zoom-out.js +20 -23
  89. package/build-module/hooks/use-zoom-out.js.map +1 -1
  90. package/build-module/store/private-actions.js +23 -0
  91. package/build-module/store/private-actions.js.map +1 -1
  92. package/build-module/store/private-selectors.js +20 -0
  93. package/build-module/store/private-selectors.js.map +1 -1
  94. package/build-module/store/reducer.js +20 -1
  95. package/build-module/store/reducer.js.map +1 -1
  96. package/build-module/store/selectors.js +12 -5
  97. package/build-module/store/selectors.js.map +1 -1
  98. package/build-style/content-rtl.css +10 -0
  99. package/build-style/content.css +10 -0
  100. package/build-style/style-rtl.css +4 -0
  101. package/build-style/style.css +4 -0
  102. package/package.json +20 -20
  103. package/src/components/block-heading-level-dropdown/index.js +7 -1
  104. package/src/components/block-list/block.js +47 -11
  105. package/src/components/block-list/content.scss +12 -0
  106. package/src/components/block-list/use-block-props/use-focus-first-element.js +0 -1
  107. package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +7 -3
  108. package/src/components/block-list/zoom-out-separator.js +14 -1
  109. package/src/components/block-switcher/test/use-transformed.patterns.js +3 -3
  110. package/src/components/block-switcher/test/utils.js +3 -3
  111. package/src/components/block-switcher/utils.js +1 -1
  112. package/src/components/block-toolbar/style.scss +7 -0
  113. package/src/components/block-tools/zoom-out-toolbar.js +5 -2
  114. package/src/components/block-variation-transforms/index.js +13 -4
  115. package/src/components/rich-text/event-listeners/paste-handler.js +2 -7
  116. package/src/components/rich-text/index.js +36 -23
  117. package/src/components/tool-selector/index.js +4 -1
  118. package/src/components/writing-flow/index.js +0 -2
  119. package/src/components/writing-flow/use-arrow-nav.js +2 -9
  120. package/src/components/writing-flow/use-input.js +1 -36
  121. package/src/components/writing-flow/use-select-all.js +1 -18
  122. package/src/components/writing-flow/use-selection-observer.js +3 -14
  123. package/src/components/writing-flow/utils.js +0 -30
  124. package/src/hooks/layout.js +17 -12
  125. package/src/hooks/use-bindings-attributes.js +26 -32
  126. package/src/hooks/use-zoom-out.js +21 -27
  127. package/src/store/private-actions.js +23 -0
  128. package/src/store/private-selectors.js +20 -0
  129. package/src/store/reducer.js +20 -0
  130. package/src/store/selectors.js +13 -8
  131. package/src/store/test/private-selectors.js +2 -2
  132. package/src/store/test/selectors.js +10 -6
  133. package/build/components/writing-flow/use-event-redirect.js +0 -66
  134. package/build/components/writing-flow/use-event-redirect.js.map +0 -1
  135. package/build-module/components/writing-flow/use-event-redirect.js +0 -60
  136. package/build-module/components/writing-flow/use-event-redirect.js.map +0 -1
  137. package/src/components/writing-flow/use-event-redirect.js +0 -72
package/README.md CHANGED
@@ -1027,11 +1027,11 @@ _Parameters_
1027
1027
 
1028
1028
  ### useZoomOut
1029
1029
 
1030
- A hook used to set the editor mode to zoomed out mode, invoking the hook sets the mode.
1030
+ A hook used to set the zoomed out view, invoking the hook sets the mode.
1031
1031
 
1032
1032
  _Parameters_
1033
1033
 
1034
- - _zoomOut_ `boolean`: If we should enter into zoomOut mode or not
1034
+ - _zoomOut_ `boolean`: If we should zoom out or not.
1035
1035
 
1036
1036
  ### Warning
1037
1037
 
@@ -47,13 +47,15 @@ function HeadingLevelDropdown({
47
47
  value,
48
48
  onChange
49
49
  }) {
50
+ const validOptions = options.filter(option => option === 0 || HEADING_LEVELS.includes(option)).sort((a, b) => a - b); // Sorts numerically in ascending order;
51
+
50
52
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarDropdownMenu, {
51
53
  popoverProps: POPOVER_PROPS,
52
54
  icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_headingLevelIcon.default, {
53
55
  level: value
54
56
  }),
55
57
  label: (0, _i18n.__)('Change level'),
56
- controls: options.map(targetLevel => {
58
+ controls: validOptions.map(targetLevel => {
57
59
  const isActive = targetLevel === value;
58
60
  return {
59
61
  icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_headingLevelIcon.default, {
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_i18n","_headingLevelIcon","_interopRequireDefault","_jsxRuntime","HEADING_LEVELS","POPOVER_PROPS","className","HeadingLevelDropdown","options","value","onChange","jsx","ToolbarDropdownMenu","popoverProps","icon","default","level","label","__","controls","map","targetLevel","isActive","title","sprintf","onClick","role"],"sources":["@wordpress/block-editor/src/components/block-heading-level-dropdown/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarDropdownMenu } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport HeadingLevelIcon from './heading-level-icon';\n\nconst HEADING_LEVELS = [ 1, 2, 3, 4, 5, 6 ];\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-library-heading-level-dropdown',\n};\n\n/** @typedef {import('react').ComponentType} ComponentType */\n\n/**\n * HeadingLevelDropdown props.\n *\n * @typedef WPHeadingLevelDropdownProps\n *\n * @property {number} value The chosen heading level.\n * @property {number[]} options An array of supported heading levels.\n * @property {()=>number} onChange Function called with\n * the selected value changes.\n */\n\n/**\n * Dropdown for selecting a heading level (1 through 6) or paragraph (0).\n *\n * @param {WPHeadingLevelDropdownProps} props Component props.\n *\n * @return {ComponentType} The toolbar.\n */\nexport default function HeadingLevelDropdown( {\n\toptions = HEADING_LEVELS,\n\tvalue,\n\tonChange,\n} ) {\n\treturn (\n\t\t<ToolbarDropdownMenu\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\ticon={ <HeadingLevelIcon level={ value } /> }\n\t\t\tlabel={ __( 'Change level' ) }\n\t\t\tcontrols={ options.map( ( targetLevel ) => {\n\t\t\t\tconst isActive = targetLevel === value;\n\t\t\t\treturn {\n\t\t\t\t\ticon: <HeadingLevelIcon level={ targetLevel } />,\n\t\t\t\t\ttitle:\n\t\t\t\t\t\ttargetLevel === 0\n\t\t\t\t\t\t\t? __( 'Paragraph' )\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t// translators: %d: heading level e.g: \"1\", \"2\", \"3\"\n\t\t\t\t\t\t\t\t\t__( 'Heading %d' ),\n\t\t\t\t\t\t\t\t\ttargetLevel\n\t\t\t\t\t\t\t ),\n\t\t\t\t\tisActive,\n\t\t\t\t\tonClick() {\n\t\t\t\t\t\tonChange( targetLevel );\n\t\t\t\t\t},\n\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t};\n\t\t\t} ) }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoD,IAAAI,WAAA,GAAAJ,OAAA;AATpD;AACA;AACA;;AAIA;AACA;AACA;;AAGA,MAAMK,cAAc,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAE3C,MAAMC,aAAa,GAAG;EACrBC,SAAS,EAAE;AACZ,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,oBAAoBA,CAAE;EAC7CC,OAAO,GAAGJ,cAAc;EACxBK,KAAK;EACLC;AACD,CAAC,EAAG;EACH,oBACC,IAAAP,WAAA,CAAAQ,GAAA,EAACb,WAAA,CAAAc,mBAAmB;IACnBC,YAAY,EAAGR,aAAe;IAC9BS,IAAI,eAAG,IAAAX,WAAA,CAAAQ,GAAA,EAACV,iBAAA,CAAAc,OAAgB;MAACC,KAAK,EAAGP;IAAO,CAAE,CAAG;IAC7CQ,KAAK,EAAG,IAAAC,QAAE,EAAE,cAAe,CAAG;IAC9BC,QAAQ,EAAGX,OAAO,CAACY,GAAG,CAAIC,WAAW,IAAM;MAC1C,MAAMC,QAAQ,GAAGD,WAAW,KAAKZ,KAAK;MACtC,OAAO;QACNK,IAAI,eAAE,IAAAX,WAAA,CAAAQ,GAAA,EAACV,iBAAA,CAAAc,OAAgB;UAACC,KAAK,EAAGK;QAAa,CAAE,CAAC;QAChDE,KAAK,EACJF,WAAW,KAAK,CAAC,GACd,IAAAH,QAAE,EAAE,WAAY,CAAC,GACjB,IAAAM,aAAO;QACP;QACA,IAAAN,QAAE,EAAE,YAAa,CAAC,EAClBG,WACA,CAAC;QACLC,QAAQ;QACRG,OAAOA,CAAA,EAAG;UACTf,QAAQ,CAAEW,WAAY,CAAC;QACxB,CAAC;QACDK,IAAI,EAAE;MACP,CAAC;IACF,CAAE;EAAG,CACL,CAAC;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["_components","require","_i18n","_headingLevelIcon","_interopRequireDefault","_jsxRuntime","HEADING_LEVELS","POPOVER_PROPS","className","HeadingLevelDropdown","options","value","onChange","validOptions","filter","option","includes","sort","a","b","jsx","ToolbarDropdownMenu","popoverProps","icon","default","level","label","__","controls","map","targetLevel","isActive","title","sprintf","onClick","role"],"sources":["@wordpress/block-editor/src/components/block-heading-level-dropdown/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ToolbarDropdownMenu } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport HeadingLevelIcon from './heading-level-icon';\n\nconst HEADING_LEVELS = [ 1, 2, 3, 4, 5, 6 ];\n\nconst POPOVER_PROPS = {\n\tclassName: 'block-library-heading-level-dropdown',\n};\n\n/** @typedef {import('react').ComponentType} ComponentType */\n\n/**\n * HeadingLevelDropdown props.\n *\n * @typedef WPHeadingLevelDropdownProps\n *\n * @property {number} value The chosen heading level.\n * @property {number[]} options An array of supported heading levels.\n * @property {()=>number} onChange Function called with\n * the selected value changes.\n */\n\n/**\n * Dropdown for selecting a heading level (1 through 6) or paragraph (0).\n *\n * @param {WPHeadingLevelDropdownProps} props Component props.\n *\n * @return {ComponentType} The toolbar.\n */\nexport default function HeadingLevelDropdown( {\n\toptions = HEADING_LEVELS,\n\tvalue,\n\tonChange,\n} ) {\n\tconst validOptions = options\n\t\t.filter(\n\t\t\t( option ) => option === 0 || HEADING_LEVELS.includes( option )\n\t\t)\n\t\t.sort( ( a, b ) => a - b ); // Sorts numerically in ascending order;\n\n\treturn (\n\t\t<ToolbarDropdownMenu\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\ticon={ <HeadingLevelIcon level={ value } /> }\n\t\t\tlabel={ __( 'Change level' ) }\n\t\t\tcontrols={ validOptions.map( ( targetLevel ) => {\n\t\t\t\tconst isActive = targetLevel === value;\n\t\t\t\treturn {\n\t\t\t\t\ticon: <HeadingLevelIcon level={ targetLevel } />,\n\t\t\t\t\ttitle:\n\t\t\t\t\t\ttargetLevel === 0\n\t\t\t\t\t\t\t? __( 'Paragraph' )\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t// translators: %d: heading level e.g: \"1\", \"2\", \"3\"\n\t\t\t\t\t\t\t\t\t__( 'Heading %d' ),\n\t\t\t\t\t\t\t\t\ttargetLevel\n\t\t\t\t\t\t\t ),\n\t\t\t\t\tisActive,\n\t\t\t\t\tonClick() {\n\t\t\t\t\t\tonChange( targetLevel );\n\t\t\t\t\t},\n\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t};\n\t\t\t} ) }\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,iBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoD,IAAAI,WAAA,GAAAJ,OAAA;AATpD;AACA;AACA;;AAIA;AACA;AACA;;AAGA,MAAMK,cAAc,GAAG,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAE3C,MAAMC,aAAa,GAAG;EACrBC,SAAS,EAAE;AACZ,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,oBAAoBA,CAAE;EAC7CC,OAAO,GAAGJ,cAAc;EACxBK,KAAK;EACLC;AACD,CAAC,EAAG;EACH,MAAMC,YAAY,GAAGH,OAAO,CAC1BI,MAAM,CACJC,MAAM,IAAMA,MAAM,KAAK,CAAC,IAAIT,cAAc,CAACU,QAAQ,CAAED,MAAO,CAC/D,CAAC,CACAE,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMD,CAAC,GAAGC,CAAE,CAAC,CAAC,CAAC;;EAE7B,oBACC,IAAAd,WAAA,CAAAe,GAAA,EAACpB,WAAA,CAAAqB,mBAAmB;IACnBC,YAAY,EAAGf,aAAe;IAC9BgB,IAAI,eAAG,IAAAlB,WAAA,CAAAe,GAAA,EAACjB,iBAAA,CAAAqB,OAAgB;MAACC,KAAK,EAAGd;IAAO,CAAE,CAAG;IAC7Ce,KAAK,EAAG,IAAAC,QAAE,EAAE,cAAe,CAAG;IAC9BC,QAAQ,EAAGf,YAAY,CAACgB,GAAG,CAAIC,WAAW,IAAM;MAC/C,MAAMC,QAAQ,GAAGD,WAAW,KAAKnB,KAAK;MACtC,OAAO;QACNY,IAAI,eAAE,IAAAlB,WAAA,CAAAe,GAAA,EAACjB,iBAAA,CAAAqB,OAAgB;UAACC,KAAK,EAAGK;QAAa,CAAE,CAAC;QAChDE,KAAK,EACJF,WAAW,KAAK,CAAC,GACd,IAAAH,QAAE,EAAE,WAAY,CAAC,GACjB,IAAAM,aAAO;QACP;QACA,IAAAN,QAAE,EAAE,YAAa,CAAC,EAClBG,WACA,CAAC;QACLC,QAAQ;QACRG,OAAOA,CAAA,EAAG;UACTtB,QAAQ,CAAEkB,WAAY,CAAC;QACxB,CAAC;QACDK,IAAI,EAAE;MACP,CAAC;IACF,CAAE;EAAG,CACL,CAAC;AAEJ","ignoreList":[]}
@@ -35,6 +35,10 @@ var _jsxRuntime = require("react/jsx-runtime");
35
35
  * Internal dependencies
36
36
  */
37
37
 
38
+ const {
39
+ isUnmodifiedBlockContent
40
+ } = (0, _lockUnlock.unlock)(_blocks.privateApis);
41
+
38
42
  /**
39
43
  * Merges wrapper props with special handling for classNames and styles.
40
44
  *
@@ -42,7 +46,8 @@ var _jsxRuntime = require("react/jsx-runtime");
42
46
  * @param {Object} propsB
43
47
  *
44
48
  * @return {Object} Merged props.
45
- */function mergeWrapperProps(propsA, propsB) {
49
+ */
50
+ function mergeWrapperProps(propsA, propsB) {
46
51
  const newProps = {
47
52
  ...propsA,
48
53
  ...propsB
@@ -319,14 +324,32 @@ const applyWithDispatch = (0, _data.withDispatch)((dispatch, ownProps, registry)
319
324
  removeBlock(_clientId);
320
325
  } else {
321
326
  registry.batch(() => {
322
- if (canInsertBlockType(getBlockName(firstClientId), targetRootClientId)) {
327
+ const firstBlock = getBlock(firstClientId);
328
+ const isFirstBlockContentUnmodified = isUnmodifiedBlockContent(firstBlock);
329
+ const defaultBlockName = (0, _blocks.getDefaultBlockName)();
330
+ const replacement = (0, _blocks.switchToBlockType)(firstBlock, defaultBlockName);
331
+ const canTransformToDefaultBlock = !!replacement?.length && replacement.every(block => canInsertBlockType(block.name, _clientId));
332
+ if (isFirstBlockContentUnmodified && canTransformToDefaultBlock) {
333
+ // Step 1: If the block is empty and can be transformed to the default block type.
334
+ replaceBlocks(firstClientId, replacement, changeSelection);
335
+ } else if (isFirstBlockContentUnmodified && firstBlock.name === defaultBlockName) {
336
+ // Step 2: If the block is empty and is already the default block type.
337
+ removeBlock(firstClientId);
338
+ const nextBlockClientId = getNextBlockClientId(clientId);
339
+ if (nextBlockClientId) {
340
+ selectBlock(nextBlockClientId);
341
+ }
342
+ } else if (canInsertBlockType(firstBlock.name, targetRootClientId)) {
343
+ // Step 3: If the block can be moved up.
323
344
  moveBlocksToPosition([firstClientId], _clientId, targetRootClientId, getBlockIndex(_clientId));
324
345
  } else {
325
- const replacement = (0, _blocks.switchToBlockType)(getBlock(firstClientId), (0, _blocks.getDefaultBlockName)());
326
- if (replacement && replacement.length && replacement.every(block => canInsertBlockType(block.name, targetRootClientId))) {
346
+ const canLiftAndTransformToDefaultBlock = !!replacement?.length && replacement.every(block => canInsertBlockType(block.name, targetRootClientId));
347
+ if (canLiftAndTransformToDefaultBlock) {
348
+ // Step 4: If the block can be transformed to the default block type and moved up.
327
349
  insertBlocks(replacement, getBlockIndex(_clientId), targetRootClientId, changeSelection);
328
350
  removeBlock(firstClientId, false);
329
351
  } else {
352
+ // Step 5: Continue the default behavior.
330
353
  switchToDefaultOrRemove();
331
354
  }
332
355
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_blocks","_components","_data","_compose","_dom","_blockEdit","_blockInvalidWarning","_blockCrashWarning","_blockCrashBoundary","_blockHtml","_useBlockProps","_store","_layout","_privateBlockContext","_lockUnlock","_jsxRuntime","mergeWrapperProps","propsA","propsB","newProps","hasOwnProperty","className","clsx","style","Block","children","isHtml","props","jsx","useBlockProps","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","__unstableLayoutClassNames","layoutClassNames","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","_wrapperProps","mayDisplayControls","mayDisplayParentControls","themeSupportsLayout","context","useContext","PrivateBlockContext","removeBlock","useDispatch","blockEditorStore","onRemove","useCallback","parentLayout","useLayout","blockEdit","default","insertBlocksAfter","undefined","mergeBlocks","__unstableParentLayout","Object","keys","length","blockEditingMode","isPreviewMode","blockType","getBlockType","getEditWrapperProps","isAligned","isSticky","includes","saveContent","serializeRawBlock","getSaveContent","jsxs","RawHTML","safeHTML","Fragment","display","apiVersion","dataAlign","restWrapperProps","updatedWrapperProps","Provider","value","fallback","applyWithDispatch","withDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","selectBlock","newAttributes","getMultiSelectedBlockClientIds","select","multiSelectedBlockClientIds","clientIds","onInsertBlocks","blocks","index","rootClientId","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockName","getBlockOrder","getBlockRootClientId","canInsertBlockType","switchToDefaultOrRemove","defaultBlockName","getDefaultBlockName","replacement","switchToBlockType","isUnmodifiedDefaultBlock","nextBlockClientId","batch","moveFirstItemUp","_clientId","changeSelection","targetRootClientId","blockOrder","firstClientId","isUnmodifiedBlock","every","nextRootClientId","rootAttributes","previousRootAttributes","key","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","replacementBlocks","Array","isArray","selectionEnabled","compose","withFilters","BlockListBlockProvider","selectedProps","useSelect","isBlockSelected","getBlockMode","getTemplateLock","getBlockWithoutAttributes","canRemoveBlock","canMoveBlock","getSettings","getTemporarilyEditingAsBlocks","getBlockEditingMode","isFirstMultiSelectedBlock","hasSelectedInnerBlock","getBlocksByName","isBlockMultiSelected","isBlockSubtreeDisabled","isBlockHighlighted","__unstableIsFullySelected","__unstableSelectionHasUnmergeableBlock","isBlockBeingDragged","isDragging","hasBlockMovingClientId","__unstableHasActiveBlockOverlayActive","__unstableGetEditorMode","getSelectedBlocksInitialCaretPosition","unlock","blockWithoutAttributes","hasBlockSupport","_hasBlockSupport","getActiveBlockVariation","blocksStore","blockName","supportsLayout","__unstableIsPreviewMode","hasLightBlockWrapper","previewContext","isReusable","isReusableBlock","defaultClassName","getBlockDefaultClassName","blockTitle","title","_isSelected","canMove","match","isMultiSelected","checkDeep","isAncestorOfSelectedBlock","movingClientId","multiple","blocksWithSameName","isInvalid","editorMode","templateLock","isTemporarilyEditingAsBlocks","id","blockApiVersion","isSubtreeDisabled","hasOverlay","isHighlighted","isPartiallySelected","hasChildSelected","isBlockMovingMode","canInsertMovingBlock","isEditingDisabled","hasEditableOutline","originalBlockClientId","useMemo","privateContext","_default","exports","memo"],"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tmemo,\n\tuseCallback,\n\tRawHTML,\n\tuseContext,\n\tuseMemo,\n} from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n\tisReusableBlock,\n\tgetBlockDefaultClassName,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { withDispatch, useDispatch, useSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { PrivateBlockContext } from './private-block-context';\n\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\t// May be set to undefined, so check if the property is set!\n\tif (\n\t\tpropsA?.hasOwnProperty( 'className' ) &&\n\t\tpropsB?.hasOwnProperty( 'className' )\n\t) {\n\t\tnewProps.className = clsx( propsA.className, propsB.className );\n\t}\n\n\tif (\n\t\tpropsA?.hasOwnProperty( 'style' ) &&\n\t\tpropsB?.hasOwnProperty( 'style' )\n\t) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tthemeSupportsLayout,\n\t\t...context\n\t} = useContext( PrivateBlockContext );\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback(\n\t\t() => removeBlock( clientId ),\n\t\t[ clientId, removeBlock ]\n\t);\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t\tmayDisplayControls={ mayDisplayControls }\n\t\t\tmayDisplayParentControls={ mayDisplayParentControls }\n\t\t\tblockEditingMode={ context.blockEditingMode }\n\t\t\tisPreviewMode={ context.isPreviewMode }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// Support for sticky position in classic themes with alignment wrappers.\n\n\tconst isSticky = className?.includes( 'is-position-sticky' );\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'wp-block', isSticky && className ) }\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\tconst updatedWrapperProps = {\n\t\t...restWrapperProps,\n\t\tclassName: clsx(\n\t\t\trestWrapperProps.className,\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\t! ( dataAlign && isSticky ) && className\n\t\t),\n\t};\n\n\t// We set a new context with the adjusted and filtered wrapperProps (through\n\t// `editor.BlockListBlock`), which the `BlockListBlockProvider` did not have\n\t// access to.\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider\n\t\t\tvalue={ {\n\t\t\t\twrapperProps: updatedWrapperProps,\n\t\t\t\tisAligned,\n\t\t\t\t...context,\n\t\t\t} }\n\t\t>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tselectBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\tfunction switchToDefaultOrRemove() {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\tconst defaultBlockName = getDefaultBlockName();\n\t\t\t\tif ( getBlockName( clientId ) !== defaultBlockName ) {\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tblock,\n\t\t\t\t\t\tdefaultBlockName\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\treplaceBlocks( clientId, replacement );\n\t\t\t\t\t}\n\t\t\t\t} else if ( isUnmodifiedDefaultBlock( block ) ) {\n\t\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t\t\tselectBlock( nextBlockClientId );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\treplacement &&\n\t\t\t\t\t\t\t\treplacement.length &&\n\t\t\t\t\t\t\t\treplacement.every( ( block ) =>\n\t\t\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\n// This component is used by the BlockListBlockProvider component below. It will\n// add the props necessary for the `editor.BlockListBlock` filters.\nBlockListBlock = compose(\n\tapplyWithDispatch,\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n\n// This component provides all the information we need through a single store\n// subscription (useSelect mapping). Only the necessary props are passed down\n// to the BlockListBlock component, which is a filtered component, so these\n// props are public API. To avoid adding to the public API, we use a private\n// context to pass the rest of the information to the filtered BlockListBlock\n// component, and useBlockProps.\nfunction BlockListBlockProvider( props ) {\n\tconst { clientId, rootClientId } = props;\n\tconst selectedProps = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\tgetBlockMode,\n\t\t\t\tisSelectionEnabled,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockWithoutAttributes,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanMoveBlock,\n\n\t\t\t\tgetSettings,\n\t\t\t\tgetTemporarilyEditingAsBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlocksByName,\n\n\t\t\t\tgetBlockIndex,\n\t\t\t\tisBlockMultiSelected,\n\t\t\t\tisBlockSubtreeDisabled,\n\t\t\t\tisBlockHighlighted,\n\t\t\t\t__unstableIsFullySelected,\n\t\t\t\t__unstableSelectionHasUnmergeableBlock,\n\t\t\t\tisBlockBeingDragged,\n\t\t\t\tisDragging,\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\t__unstableHasActiveBlockOverlayActive,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst blockWithoutAttributes =\n\t\t\t\tgetBlockWithoutAttributes( clientId );\n\n\t\t\t// This is a temporary fix.\n\t\t\t// This function should never be called when a block is not\n\t\t\t// present in the state. It happens now because the order in\n\t\t\t// withSelect rendering is not correct.\n\t\t\tif ( ! blockWithoutAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\thasBlockSupport: _hasBlockSupport,\n\t\t\t\tgetActiveBlockVariation,\n\t\t\t} = select( blocksStore );\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst { name: blockName, isValid } = blockWithoutAttributes;\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tconst { supportsLayout, __unstableIsPreviewMode: isPreviewMode } =\n\t\t\t\tgetSettings();\n\t\t\tconst hasLightBlockWrapper = blockType?.apiVersion > 1;\n\t\t\tconst previewContext = {\n\t\t\t\tisPreviewMode,\n\t\t\t\tblockWithoutAttributes,\n\t\t\t\tname: blockName,\n\t\t\t\tattributes,\n\t\t\t\tisValid,\n\t\t\t\tthemeSupportsLayout: supportsLayout,\n\t\t\t\tindex: getBlockIndex( clientId ),\n\t\t\t\tisReusable: isReusableBlock( blockType ),\n\t\t\t\tclassName: hasLightBlockWrapper\n\t\t\t\t\t? attributes.className\n\t\t\t\t\t: undefined,\n\t\t\t\tdefaultClassName: hasLightBlockWrapper\n\t\t\t\t\t? getBlockDefaultClassName( blockName )\n\t\t\t\t\t: undefined,\n\t\t\t\tblockTitle: blockType?.title,\n\t\t\t};\n\n\t\t\t// When in preview mode, we can avoid a lot of selection and\n\t\t\t// editing related selectors.\n\t\t\tif ( isPreviewMode ) {\n\t\t\t\treturn previewContext;\n\t\t\t}\n\n\t\t\tconst _isSelected = isBlockSelected( clientId );\n\t\t\tconst canRemove = canRemoveBlock( clientId );\n\t\t\tconst canMove = canMoveBlock( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\t\t\tconst isMultiSelected = isBlockMultiSelected( clientId );\n\t\t\tconst checkDeep = true;\n\t\t\tconst isAncestorOfSelectedBlock = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\tcheckDeep\n\t\t\t);\n\t\t\tconst movingClientId = hasBlockMovingClientId();\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\n\t\t\tconst multiple = hasBlockSupport( blockName, 'multiple', true );\n\n\t\t\t// For block types with `multiple` support, there is no \"original\n\t\t\t// block\" to be found in the content, as the block itself is valid.\n\t\t\tconst blocksWithSameName = multiple\n\t\t\t\t? []\n\t\t\t\t: getBlocksByName( blockName );\n\t\t\tconst isInvalid =\n\t\t\t\tblocksWithSameName.length &&\n\t\t\t\tblocksWithSameName[ 0 ] !== clientId;\n\n\t\t\tconst editorMode = __unstableGetEditorMode();\n\n\t\t\treturn {\n\t\t\t\t...previewContext,\n\t\t\t\tmode: getBlockMode( clientId ),\n\t\t\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\t\t\tisLocked: !! getTemplateLock( rootClientId ),\n\t\t\t\ttemplateLock: getTemplateLock( clientId ),\n\t\t\t\tcanRemove,\n\t\t\t\tcanMove,\n\t\t\t\tisSelected: _isSelected,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\tgetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t\tblockEditingMode,\n\t\t\t\tmayDisplayControls:\n\t\t\t\t\t_isSelected ||\n\t\t\t\t\t( isFirstMultiSelectedBlock( clientId ) &&\n\t\t\t\t\t\tgetMultiSelectedBlockClientIds().every(\n\t\t\t\t\t\t\t( id ) => getBlockName( id ) === blockName\n\t\t\t\t\t\t) ),\n\t\t\t\tmayDisplayParentControls:\n\t\t\t\t\t_hasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) && hasSelectedInnerBlock( clientId ),\n\t\t\t\tblockApiVersion: blockType?.apiVersion || 1,\n\t\t\t\tblockTitle: match?.title || blockType?.title,\n\t\t\t\teditorMode,\n\t\t\t\tisSubtreeDisabled:\n\t\t\t\t\tblockEditingMode === 'disabled' &&\n\t\t\t\t\tisBlockSubtreeDisabled( clientId ),\n\t\t\t\thasOverlay:\n\t\t\t\t\t__unstableHasActiveBlockOverlayActive( clientId ) &&\n\t\t\t\t\t! isDragging(),\n\t\t\t\tinitialPosition:\n\t\t\t\t\t_isSelected &&\n\t\t\t\t\t( editorMode === 'edit' || editorMode === 'zoom-out' ) // Don't recalculate the initialPosition when toggling in/out of zoom-out mode\n\t\t\t\t\t\t? getSelectedBlocksInitialCaretPosition()\n\t\t\t\t\t\t: undefined,\n\t\t\t\tisHighlighted: isBlockHighlighted( clientId ),\n\t\t\t\tisMultiSelected,\n\t\t\t\tisPartiallySelected:\n\t\t\t\t\tisMultiSelected &&\n\t\t\t\t\t! __unstableIsFullySelected() &&\n\t\t\t\t\t! __unstableSelectionHasUnmergeableBlock(),\n\t\t\t\tisDragging: isBlockBeingDragged( clientId ),\n\t\t\t\thasChildSelected: isAncestorOfSelectedBlock,\n\t\t\t\tisBlockMovingMode: !! movingClientId,\n\t\t\t\tcanInsertMovingBlock:\n\t\t\t\t\tmovingClientId &&\n\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\tgetBlockName( movingClientId ),\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\tisEditingDisabled: blockEditingMode === 'disabled',\n\t\t\t\thasEditableOutline:\n\t\t\t\t\tblockEditingMode !== 'disabled' &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) === 'disabled',\n\t\t\t\toriginalBlockClientId: isInvalid\n\t\t\t\t\t? blocksWithSameName[ 0 ]\n\t\t\t\t\t: false,\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\n\tconst {\n\t\tisPreviewMode,\n\t\t// Fill values that end up as a public API and may not be defined in\n\t\t// preview mode.\n\t\tmode = 'visual',\n\t\tisSelectionEnabled = false,\n\t\tisLocked = false,\n\t\tcanRemove = false,\n\t\tcanMove = false,\n\t\tblockWithoutAttributes,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected = false,\n\t\tthemeSupportsLayout,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tblockEditingMode,\n\t\teditorMode,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tindex,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisBlockMovingMode,\n\t\tcanInsertMovingBlock,\n\t\ttemplateLock,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tclassName,\n\t\tdefaultClassName,\n\t\toriginalBlockClientId,\n\t} = selectedProps;\n\n\t// Users of the editor.BlockListBlock filter used to be able to\n\t// access the block prop.\n\t// Ideally these blocks would rely on the clientId prop only.\n\t// This is kept for backward compatibility reasons.\n\tconst block = useMemo(\n\t\t() => ( { ...blockWithoutAttributes, attributes } ),\n\t\t[ blockWithoutAttributes, attributes ]\n\t);\n\n\t// Block is sometimes not mounted at the right time, causing it be\n\t// undefined see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tif ( ! selectedProps ) {\n\t\treturn null;\n\t}\n\n\tconst privateContext = {\n\t\tisPreviewMode,\n\t\tclientId,\n\t\tclassName,\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSelected,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tblockEditingMode,\n\t\teditorMode,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisBlockMovingMode,\n\t\tcanInsertMovingBlock,\n\t\ttemplateLock,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tdefaultClassName,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\toriginalBlockClientId,\n\t\tthemeSupportsLayout,\n\t};\n\n\t// Here we separate between the props passed to BlockListBlock and any other\n\t// information we selected for internal use. BlockListBlock is a filtered\n\t// component and thus ALL the props are PUBLIC API.\n\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider value={ privateContext }>\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t// WARNING: all the following props are public API (through the\n\t\t\t\t// editor.BlockListBlock filter) and normally nothing new should\n\t\t\t\t// be added to it.\n\t\t\t\t{ ...{\n\t\t\t\t\tmode,\n\t\t\t\t\tisSelectionEnabled,\n\t\t\t\t\tisLocked,\n\t\t\t\t\tcanRemove,\n\t\t\t\t\tcanMove,\n\t\t\t\t\t// Users of the editor.BlockListBlock filter used to be able\n\t\t\t\t\t// to access the block prop. Ideally these blocks would rely\n\t\t\t\t\t// on the clientId prop only. This is kept for backward\n\t\t\t\t\t// compatibility reasons.\n\t\t\t\t\tblock,\n\t\t\t\t\tname,\n\t\t\t\t\tattributes,\n\t\t\t\t\tisValid,\n\t\t\t\t\tisSelected,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nexport default memo( BlockListBlockProvider );\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AAOA,IAAAE,OAAA,GAAAF,OAAA;AAaA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,IAAA,GAAAN,OAAA;AAKA,IAAAO,UAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,oBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,kBAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,mBAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,UAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,cAAA,GAAAZ,OAAA;AACA,IAAAa,MAAA,GAAAb,OAAA;AACA,IAAAc,OAAA,GAAAd,OAAA;AACA,IAAAe,oBAAA,GAAAf,OAAA;AAEA,IAAAgB,WAAA,GAAAhB,OAAA;AAA2C,IAAAiB,WAAA,GAAAjB,OAAA;AA9C3C;AACA;AACA;;AAGA;AACA;AACA;;AA0BA;AACA;AACA;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GACA,SAASkB,iBAAiBA,CAAEC,MAAM,EAAEC,MAAM,EAAG;EAC5C,MAAMC,QAAQ,GAAG;IAChB,GAAGF,MAAM;IACT,GAAGC;EACJ,CAAC;;EAED;EACA,IACCD,MAAM,EAAEG,cAAc,CAAE,WAAY,CAAC,IACrCF,MAAM,EAAEE,cAAc,CAAE,WAAY,CAAC,EACpC;IACDD,QAAQ,CAACE,SAAS,GAAG,IAAAC,aAAI,EAAEL,MAAM,CAACI,SAAS,EAAEH,MAAM,CAACG,SAAU,CAAC;EAChE;EAEA,IACCJ,MAAM,EAAEG,cAAc,CAAE,OAAQ,CAAC,IACjCF,MAAM,EAAEE,cAAc,CAAE,OAAQ,CAAC,EAChC;IACDD,QAAQ,CAACI,KAAK,GAAG;MAAE,GAAGN,MAAM,CAACM,KAAK;MAAE,GAAGL,MAAM,CAACK;IAAM,CAAC;EACtD;EAEA,OAAOJ,QAAQ;AAChB;AAEA,SAASK,KAAKA,CAAE;EAAEC,QAAQ;EAAEC,MAAM;EAAE,GAAGC;AAAM,CAAC,EAAG;EAChD,oBACC,IAAAZ,WAAA,CAAAa,GAAA;IAAA,GAAU,IAAAC,4BAAa,EAAEF,KAAK,EAAE;MAAEG,gBAAgB,EAAEJ;IAAO,CAAE,CAAC;IAAAD,QAAA,EAC3DA;EAAQ,CACN,CAAC;AAER;AAEA,SAASM,cAAcA,CAAE;EACxBC,KAAK,EAAE;IAAEC;EAAsB,CAAC;EAChCC,IAAI;EACJC,QAAQ;EACRC,SAAS;EACTC,QAAQ;EACRC,UAAU;EACVC,kBAAkB;EAClBlB,SAAS;EACTmB,0BAA0B,EAAEC,gBAAgB;EAC5CC,IAAI;EACJC,OAAO;EACPC,UAAU;EACVC,YAAY;EACZC,aAAa;EACbC,SAAS;EACTC,mBAAmB;EACnBC,OAAO;EACPC;AACD,CAAC,EAAG;EAAA,IAAAC,aAAA;EACH,MAAM;IACLC,kBAAkB;IAClBC,wBAAwB;IACxBC,mBAAmB;IACnB,GAAGC;EACJ,CAAC,GAAG,IAAAC,mBAAU,EAAEC,wCAAoB,CAAC;EACrC,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,iBAAW,EAAEC,YAAiB,CAAC;EACvD,MAAMC,QAAQ,GAAG,IAAAC,oBAAW,EAC3B,MAAMJ,WAAW,CAAErB,QAAS,CAAC,EAC7B,CAAEA,QAAQ,EAAEqB,WAAW,CACxB,CAAC;EAED,MAAMK,YAAY,GAAG,IAAAC,iBAAS,EAAC,CAAC,IAAI,CAAC,CAAC;;EAEtC;EACA;EACA;EACA;EACA,IAAIC,SAAS,gBACZ,IAAAlD,WAAA,CAAAa,GAAA,EAACvB,UAAA,CAAA6D,OAAS;IACTxB,IAAI,EAAGA,IAAM;IACbJ,UAAU,EAAGA,UAAY;IACzBM,UAAU,EAAGA,UAAY;IACzBE,aAAa,EAAGA,aAAe;IAC/BqB,iBAAiB,EAAGhC,QAAQ,GAAGiC,SAAS,GAAGpB,mBAAqB;IAChED,SAAS,EAAGX,SAAS,GAAGW,SAAS,GAAGqB,SAAW;IAC/CP,QAAQ,EAAGzB,SAAS,GAAGyB,QAAQ,GAAGO,SAAW;IAC7CC,WAAW,EAAGjC,SAAS,GAAGa,OAAO,GAAGmB,SAAW;IAC/C/B,QAAQ,EAAGA,QAAU;IACrBE,kBAAkB,EAAGA,kBAAoB;IACzCW,eAAe,EAAGA,eAAiB;IACnCV,0BAA0B,EAAGC,gBAAkB;IAC/C6B,sBAAsB,EACrBC,MAAM,CAACC,IAAI,CAAET,YAAa,CAAC,CAACU,MAAM,GAAGV,YAAY,GAAGK,SACpD;IACDhB,kBAAkB,EAAGA,kBAAoB;IACzCC,wBAAwB,EAAGA,wBAA0B;IACrDqB,gBAAgB,EAAGnB,OAAO,CAACmB,gBAAkB;IAC7CC,aAAa,EAAGpB,OAAO,CAACoB;EAAe,CACvC,CACD;EAED,MAAMC,SAAS,GAAG,IAAAC,oBAAY,EAAEnC,IAAK,CAAC;;EAEtC;EACA,IAAKkC,SAAS,EAAEE,mBAAmB,EAAG;IACrCjC,YAAY,GAAG7B,iBAAiB,CAC/B6B,YAAY,EACZ+B,SAAS,CAACE,mBAAmB,CAAElC,UAAW,CAC3C,CAAC;EACF;EAEA,MAAMmC,SAAS,GACdlC,YAAY,IACZ,CAAC,CAAEA,YAAY,CAAE,YAAY,CAAE,IAC/B,CAAES,mBAAmB;;EAEtB;;EAEA,MAAM0B,QAAQ,GAAG3D,SAAS,EAAE4D,QAAQ,CAAE,oBAAqB,CAAC;;EAE5D;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAKF,SAAS,EAAG;IAChBd,SAAS,gBACR,IAAAlD,WAAA,CAAAa,GAAA;MACCP,SAAS,EAAG,IAAAC,aAAI,EAAE,UAAU,EAAE0D,QAAQ,IAAI3D,SAAU,CAAG;MACvD,cAAawB,YAAY,CAAE,YAAY,CAAI;MAAApB,QAAA,EAEzCwC;IAAS,CACP,CACL;EACF;EAEA,IAAIjC,KAAK;EAET,IAAK,CAAEW,OAAO,EAAG;IAChB,MAAMuC,WAAW,GAAGjD,qBAAqB,GACtC,IAAAkD,yBAAiB,EAAElD,qBAAsB,CAAC,GAC1C,IAAAmD,sBAAc,EAAER,SAAS,EAAEhC,UAAW,CAAC;IAE1CZ,KAAK,gBACJ,IAAAjB,WAAA,CAAAsE,IAAA,EAAC7D,KAAK;MAACH,SAAS,EAAC,aAAa;MAAAI,QAAA,gBAC7B,IAAAV,WAAA,CAAAa,GAAA,EAACtB,oBAAA,CAAA4D,OAAmB;QAAC7B,QAAQ,EAAGA;MAAU,CAAE,CAAC,eAC7C,IAAAtB,WAAA,CAAAa,GAAA,EAAC7B,QAAA,CAAAuF,OAAO;QAAA7D,QAAA,EAAG,IAAA8D,aAAQ,EAAEL,WAAY;MAAC,CAAW,CAAC;IAAA,CACxC,CACP;EACF,CAAC,MAAM,IAAKhD,IAAI,KAAK,MAAM,EAAG;IAC7B;IACA;IACAF,KAAK,gBACJ,IAAAjB,WAAA,CAAAsE,IAAA,EAAAtE,WAAA,CAAAyE,QAAA;MAAA/D,QAAA,gBACC,IAAAV,WAAA,CAAAa,GAAA;QAAKL,KAAK,EAAG;UAAEkE,OAAO,EAAE;QAAO,CAAG;QAAAhE,QAAA,EAAGwC;MAAS,CAAO,CAAC,eACtD,IAAAlD,WAAA,CAAAa,GAAA,EAACJ,KAAK;QAACE,MAAM;QAAAD,QAAA,eACZ,IAAAV,WAAA,CAAAa,GAAA,EAACnB,UAAA,CAAAyD,OAAS;UAAC7B,QAAQ,EAAGA;QAAU,CAAE;MAAC,CAC7B,CAAC;IAAA,CACP,CACF;EACF,CAAC,MAAM,IAAKuC,SAAS,EAAEc,UAAU,GAAG,CAAC,EAAG;IACvC1D,KAAK,GAAGiC,SAAS;EAClB,CAAC,MAAM;IACNjC,KAAK,gBAAG,IAAAjB,WAAA,CAAAa,GAAA,EAACJ,KAAK;MAAAC,QAAA,EAAGwC;IAAS,CAAS,CAAC;EACrC;EAEA,MAAM;IAAE,YAAY,EAAE0B,SAAS;IAAE,GAAGC;EAAiB,CAAC,IAAAzC,aAAA,GAAGN,YAAY,cAAAM,aAAA,cAAAA,aAAA,GAAI,CAAC,CAAC;EAC3E,MAAM0C,mBAAmB,GAAG;IAC3B,GAAGD,gBAAgB;IACnBvE,SAAS,EAAE,IAAAC,aAAI,EACdsE,gBAAgB,CAACvE,SAAS,EAC1BsE,SAAS,IAAIrC,mBAAmB,IAAK,QAAQqC,SAAW,EAAC,EACzD,EAAIA,SAAS,IAAIX,QAAQ,CAAE,IAAI3D,SAChC;EACD,CAAC;;EAED;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBACC,IAAAN,WAAA,CAAAa,GAAA,EAACf,oBAAA,CAAA4C,mBAAmB,CAACqC,QAAQ;IAC5BC,KAAK,EAAG;MACPlD,YAAY,EAAEgD,mBAAmB;MACjCd,SAAS;MACT,GAAGxB;IACJ,CAAG;IAAA9B,QAAA,eAEH,IAAAV,WAAA,CAAAa,GAAA,EAACpB,mBAAA,CAAA0D,OAAkB;MAClB8B,QAAQ,eACP,IAAAjF,WAAA,CAAAa,GAAA,EAACJ,KAAK;QAACH,SAAS,EAAC,aAAa;QAAAI,QAAA,eAC7B,IAAAV,WAAA,CAAAa,GAAA,EAACrB,kBAAA,CAAA2D,OAAiB,IAAE;MAAC,CACf,CACP;MAAAzC,QAAA,EAECO;IAAK,CACY;EAAC,CACQ,CAAC;AAEjC;AAEA,MAAMiE,iBAAiB,GAAG,IAAAC,kBAAY,EAAE,CAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,KAAM;EAC3E,MAAM;IACLC,qBAAqB;IACrBC,YAAY;IACZlC,WAAW;IACXmC,aAAa;IACbtD,eAAe;IACfuD,oCAAoC;IACpCC,oBAAoB;IACpBhD,WAAW;IACXiD;EACD,CAAC,GAAGR,QAAQ,CAAEvC,YAAiB,CAAC;;EAEhC;EACA;EACA,OAAO;IACNd,aAAaA,CAAE8D,aAAa,EAAG;MAC9B,MAAM;QAAEC;MAA+B,CAAC,GACvCR,QAAQ,CAACS,MAAM,CAAElD,YAAiB,CAAC;MACpC,MAAMmD,2BAA2B,GAChCF,8BAA8B,CAAC,CAAC;MACjC,MAAM;QAAExE;MAAS,CAAC,GAAG+D,QAAQ;MAC7B,MAAMY,SAAS,GAAGD,2BAA2B,CAACtC,MAAM,GACjDsC,2BAA2B,GAC3B,CAAE1E,QAAQ,CAAE;MAEfiE,qBAAqB,CAAEU,SAAS,EAAEJ,aAAc,CAAC;IAClD,CAAC;IACDK,cAAcA,CAAEC,MAAM,EAAEC,KAAK,EAAG;MAC/B,MAAM;QAAEC;MAAa,CAAC,GAAGhB,QAAQ;MACjCG,YAAY,CAAEW,MAAM,EAAEC,KAAK,EAAEC,YAAa,CAAC;IAC5C,CAAC;IACDpE,mBAAmBA,CAAEkE,MAAM,EAAG;MAC7B,MAAM;QAAE7E,QAAQ;QAAE+E;MAAa,CAAC,GAAGhB,QAAQ;MAC3C,MAAM;QAAEiB;MAAc,CAAC,GAAGhB,QAAQ,CAACS,MAAM,CAAElD,YAAiB,CAAC;MAC7D,MAAMuD,KAAK,GAAGE,aAAa,CAAEhF,QAAS,CAAC;MACvCkE,YAAY,CAAEW,MAAM,EAAEC,KAAK,GAAG,CAAC,EAAEC,YAAa,CAAC;IAChD,CAAC;IACDnE,OAAOA,CAAEqE,OAAO,EAAG;MAClB,MAAM;QAAEjF,QAAQ;QAAE+E;MAAa,CAAC,GAAGhB,QAAQ;MAC3C,MAAM;QACLmB,wBAAwB;QACxBC,oBAAoB;QACpBC,QAAQ;QACRC,kBAAkB;QAClBC,YAAY;QACZC,aAAa;QACbP,aAAa;QACbQ,oBAAoB;QACpBC;MACD,CAAC,GAAGzB,QAAQ,CAACS,MAAM,CAAElD,YAAiB,CAAC;MAEvC,SAASmE,uBAAuBA,CAAA,EAAG;QAClC,MAAM/F,KAAK,GAAGyF,QAAQ,CAAEpF,QAAS,CAAC;QAClC,MAAM2F,gBAAgB,GAAG,IAAAC,2BAAmB,EAAC,CAAC;QAC9C,IAAKN,YAAY,CAAEtF,QAAS,CAAC,KAAK2F,gBAAgB,EAAG;UACpD,MAAME,WAAW,GAAG,IAAAC,yBAAiB,EACpCnG,KAAK,EACLgG,gBACD,CAAC;UACD,IAAKE,WAAW,IAAIA,WAAW,CAACzD,MAAM,EAAG;YACxC+B,aAAa,CAAEnE,QAAQ,EAAE6F,WAAY,CAAC;UACvC;QACD,CAAC,MAAM,IAAK,IAAAE,gCAAwB,EAAEpG,KAAM,CAAC,EAAG;UAC/C,MAAMqG,iBAAiB,GAAGb,oBAAoB,CAAEnF,QAAS,CAAC;UAC1D,IAAKgG,iBAAiB,EAAG;YACxBhC,QAAQ,CAACiC,KAAK,CAAE,MAAM;cACrB5E,WAAW,CAAErB,QAAS,CAAC;cACvBsE,WAAW,CAAE0B,iBAAkB,CAAC;YACjC,CAAE,CAAC;UACJ;QACD;MACD;;MAEA;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACG,SAASE,eAAeA,CAAEC,SAAS,EAAEC,eAAe,GAAG,IAAI,EAAG;QAC7D,MAAMC,kBAAkB,GAAGb,oBAAoB,CAAEW,SAAU,CAAC;QAC5D,MAAMG,UAAU,GAAGf,aAAa,CAAEY,SAAU,CAAC;QAC7C,MAAM,CAAEI,aAAa,CAAE,GAAGD,UAAU;QAEpC,IACCA,UAAU,CAAClE,MAAM,KAAK,CAAC,IACvB,IAAAoE,yBAAiB,EAAEpB,QAAQ,CAAEmB,aAAc,CAAE,CAAC,EAC7C;UACDlF,WAAW,CAAE8E,SAAU,CAAC;QACzB,CAAC,MAAM;UACNnC,QAAQ,CAACiC,KAAK,CAAE,MAAM;YACrB,IACCR,kBAAkB,CACjBH,YAAY,CAAEiB,aAAc,CAAC,EAC7BF,kBACD,CAAC,EACA;cACDhC,oBAAoB,CACnB,CAAEkC,aAAa,CAAE,EACjBJ,SAAS,EACTE,kBAAkB,EAClBrB,aAAa,CAAEmB,SAAU,CAC1B,CAAC;YACF,CAAC,MAAM;cACN,MAAMN,WAAW,GAAG,IAAAC,yBAAiB,EACpCV,QAAQ,CAAEmB,aAAc,CAAC,EACzB,IAAAX,2BAAmB,EAAC,CACrB,CAAC;cAED,IACCC,WAAW,IACXA,WAAW,CAACzD,MAAM,IAClByD,WAAW,CAACY,KAAK,CAAI9G,KAAK,IACzB8F,kBAAkB,CACjB9F,KAAK,CAACU,IAAI,EACVgG,kBACD,CACD,CAAC,EACA;gBACDnC,YAAY,CACX2B,WAAW,EACXb,aAAa,CAAEmB,SAAU,CAAC,EAC1BE,kBAAkB,EAClBD,eACD,CAAC;gBACD/E,WAAW,CAAEkF,aAAa,EAAE,KAAM,CAAC;cACpC,CAAC,MAAM;gBACNb,uBAAuB,CAAC,CAAC;cAC1B;YACD;YAEA,IACC,CAAEH,aAAa,CAAEY,SAAU,CAAC,CAAC/D,MAAM,IACnC,IAAAoE,yBAAiB,EAAEpB,QAAQ,CAAEe,SAAU,CAAE,CAAC,EACzC;cACD9E,WAAW,CAAE8E,SAAS,EAAE,KAAM,CAAC;YAChC;UACD,CAAE,CAAC;QACJ;MACD;;MAEA;MACA;MACA,IAAKlB,OAAO,EAAG;QACd,IAAKF,YAAY,EAAG;UACnB,MAAM2B,gBAAgB,GACrBvB,oBAAoB,CAAEJ,YAAa,CAAC;UAErC,IAAK2B,gBAAgB,EAAG;YACvB;YACA;YACA;YACA,IACCpB,YAAY,CAAEP,YAAa,CAAC,KAC5BO,YAAY,CAAEoB,gBAAiB,CAAC,EAC/B;cACD,MAAMC,cAAc,GACnBtB,kBAAkB,CAAEN,YAAa,CAAC;cACnC,MAAM6B,sBAAsB,GAC3BvB,kBAAkB,CAAEqB,gBAAiB,CAAC;cAEvC,IACCxE,MAAM,CAACC,IAAI,CAAEwE,cAAe,CAAC,CAACF,KAAK,CAChCI,GAAG,IACJF,cAAc,CAAEE,GAAG,CAAE,KACrBD,sBAAsB,CAAEC,GAAG,CAC7B,CAAC,EACA;gBACD7C,QAAQ,CAACiC,KAAK,CAAE,MAAM;kBACrB5B,oBAAoB,CACnBkB,aAAa,CAAEmB,gBAAiB,CAAC,EACjCA,gBAAgB,EAChB3B,YACD,CAAC;kBACD1D,WAAW,CAAEqF,gBAAgB,EAAE,KAAM,CAAC;gBACvC,CAAE,CAAC;gBACH;cACD;YACD,CAAC,MAAM;cACN1E,WAAW,CAAE+C,YAAY,EAAE2B,gBAAiB,CAAC;cAC7C;YACD;UACD;QACD;QAEA,MAAMV,iBAAiB,GAAGb,oBAAoB,CAAEnF,QAAS,CAAC;QAE1D,IAAK,CAAEgG,iBAAiB,EAAG;UAC1B;QACD;QAEA,IAAKT,aAAa,CAAES,iBAAkB,CAAC,CAAC5D,MAAM,EAAG;UAChD8D,eAAe,CAAEF,iBAAiB,EAAE,KAAM,CAAC;QAC5C,CAAC,MAAM;UACNhE,WAAW,CAAEhC,QAAQ,EAAEgG,iBAAkB,CAAC;QAC3C;MACD,CAAC,MAAM;QACN,MAAMc,qBAAqB,GAC1B5B,wBAAwB,CAAElF,QAAS,CAAC;QAErC,IAAK8G,qBAAqB,EAAG;UAC5B9E,WAAW,CAAE8E,qBAAqB,EAAE9G,QAAS,CAAC;QAC/C,CAAC,MAAM,IAAK+E,YAAY,EAAG;UAC1B,MAAMgC,oBAAoB,GACzB7B,wBAAwB,CAAEH,YAAa,CAAC;;UAEzC;UACA;UACA,IACCgC,oBAAoB,IACpBzB,YAAY,CAAEP,YAAa,CAAC,KAC3BO,YAAY,CAAEyB,oBAAqB,CAAC,EACpC;YACD,MAAMJ,cAAc,GACnBtB,kBAAkB,CAAEN,YAAa,CAAC;YACnC,MAAM6B,sBAAsB,GAC3BvB,kBAAkB,CAAE0B,oBAAqB,CAAC;YAE3C,IACC7E,MAAM,CAACC,IAAI,CAAEwE,cAAe,CAAC,CAACF,KAAK,CAChCI,GAAG,IACJF,cAAc,CAAEE,GAAG,CAAE,KACrBD,sBAAsB,CAAEC,GAAG,CAC7B,CAAC,EACA;cACD7C,QAAQ,CAACiC,KAAK,CAAE,MAAM;gBACrB5B,oBAAoB,CACnBkB,aAAa,CAAER,YAAa,CAAC,EAC7BA,YAAY,EACZgC,oBACD,CAAC;gBACD1F,WAAW,CAAE0D,YAAY,EAAE,KAAM,CAAC;cACnC,CAAE,CAAC;cACH;YACD;UACD;UAEAmB,eAAe,CAAEnB,YAAa,CAAC;QAChC,CAAC,MAAM;UACNW,uBAAuB,CAAC,CAAC;QAC1B;MACD;IACD,CAAC;IACDhF,SAASA,CAAEmE,MAAM,EAAEmC,aAAa,EAAEC,eAAe,EAAG;MACnD,IACCpC,MAAM,CAACzC,MAAM,IACb,CAAE,IAAA2D,gCAAwB,EAAElB,MAAM,CAAEA,MAAM,CAACzC,MAAM,GAAG,CAAC,CAAG,CAAC,EACxD;QACDgC,oCAAoC,CAAC,CAAC;MACvC;MACA;MACA,MAAM8C,iBAAiB,GACtBrC,MAAM,EAAEzC,MAAM,KAAK,CAAC,IAAI+E,KAAK,CAACC,OAAO,CAAEvC,MAAM,CAAE,CAAC,CAAG,CAAC,GACjDA,MAAM,CAAE,CAAC,CAAE,GACXA,MAAM;MACVV,aAAa,CACZ,CAAEJ,QAAQ,CAAC/D,QAAQ,CAAE,EACrBkH,iBAAiB,EACjBF,aAAa,EACbC,eACD,CAAC;IACF,CAAC;IACDpG,eAAeA,CAAEwG,gBAAgB,EAAG;MACnCxG,eAAe,CAAEwG,gBAAiB,CAAC;IACpC;EACD,CAAC;AACF,CAAE,CAAC;;AAEH;AACA;AACA3H,cAAc,GAAG,IAAA4H,gBAAO,EACvB1D,iBAAiB,EACjB,IAAA2D,uBAAW,EAAE,uBAAwB,CACtC,CAAC,CAAE7H,cAAe,CAAC;;AAEnB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS8H,sBAAsBA,CAAElI,KAAK,EAAG;EACxC,MAAM;IAAEU,QAAQ;IAAE+E;EAAa,CAAC,GAAGzF,KAAK;EACxC,MAAMmI,aAAa,GAAG,IAAAC,eAAS,EAC5BjD,MAAM,IAAM;IACb,MAAM;MACLkD,eAAe;MACfC,YAAY;MACZ1H,kBAAkB;MAClB2H,eAAe;MACfC,yBAAyB;MACzBzC,kBAAkB;MAClB0C,cAAc;MACdC,YAAY;MAEZC,WAAW;MACXC,6BAA6B;MAC7BC,mBAAmB;MACnB7C,YAAY;MACZ8C,yBAAyB;MACzB5D,8BAA8B;MAC9B6D,qBAAqB;MACrBC,eAAe;MAEftD,aAAa;MACbuD,oBAAoB;MACpBC,sBAAsB;MACtBC,kBAAkB;MAClBC,yBAAyB;MACzBC,sCAAsC;MACtCC,mBAAmB;MACnBC,UAAU;MACVC,sBAAsB;MACtBrD,kBAAkB;MAClBsD,qCAAqC;MACrCC,uBAAuB;MACvBC;IACD,CAAC,GAAG,IAAAC,kBAAM,EAAEzE,MAAM,CAAElD,YAAiB,CAAE,CAAC;IACxC,MAAM4H,sBAAsB,GAC3BrB,yBAAyB,CAAE9H,QAAS,CAAC;;IAEtC;IACA;IACA;IACA;IACA,IAAK,CAAEmJ,sBAAsB,EAAG;MAC/B;IACD;IAEA,MAAM;MACLC,eAAe,EAAEC,gBAAgB;MACjCC;IACD,CAAC,GAAG7E,MAAM,CAAE8E,aAAY,CAAC;IACzB,MAAMhJ,UAAU,GAAG8E,kBAAkB,CAAErF,QAAS,CAAC;IACjD,MAAM;MAAEK,IAAI,EAAEmJ,SAAS;MAAElJ;IAAQ,CAAC,GAAG6I,sBAAsB;IAC3D,MAAM5G,SAAS,GAAG,IAAAC,oBAAY,EAAEgH,SAAU,CAAC;IAC3C,MAAM;MAAEC,cAAc;MAAEC,uBAAuB,EAAEpH;IAAc,CAAC,GAC/D2F,WAAW,CAAC,CAAC;IACd,MAAM0B,oBAAoB,GAAGpH,SAAS,EAAEc,UAAU,GAAG,CAAC;IACtD,MAAMuG,cAAc,GAAG;MACtBtH,aAAa;MACb6G,sBAAsB;MACtB9I,IAAI,EAAEmJ,SAAS;MACfjJ,UAAU;MACVD,OAAO;MACPW,mBAAmB,EAAEwI,cAAc;MACnC3E,KAAK,EAAEE,aAAa,CAAEhF,QAAS,CAAC;MAChC6J,UAAU,EAAE,IAAAC,uBAAe,EAAEvH,SAAU,CAAC;MACxCvD,SAAS,EAAE2K,oBAAoB,GAC5BpJ,UAAU,CAACvB,SAAS,GACpB+C,SAAS;MACZgI,gBAAgB,EAAEJ,oBAAoB,GACnC,IAAAK,gCAAwB,EAAER,SAAU,CAAC,GACrCzH,SAAS;MACZkI,UAAU,EAAE1H,SAAS,EAAE2H;IACxB,CAAC;;IAED;IACA;IACA,IAAK5H,aAAa,EAAG;MACpB,OAAOsH,cAAc;IACtB;IAEA,MAAMO,WAAW,GAAGxC,eAAe,CAAE3H,QAAS,CAAC;IAC/C,MAAMD,SAAS,GAAGgI,cAAc,CAAE/H,QAAS,CAAC;IAC5C,MAAMoK,OAAO,GAAGpC,YAAY,CAAEhI,QAAS,CAAC;IACxC,MAAMqK,KAAK,GAAGf,uBAAuB,CAAEE,SAAS,EAAEjJ,UAAW,CAAC;IAC9D,MAAM+J,eAAe,GAAG/B,oBAAoB,CAAEvI,QAAS,CAAC;IACxD,MAAMuK,SAAS,GAAG,IAAI;IACtB,MAAMC,yBAAyB,GAAGnC,qBAAqB,CACtDrI,QAAQ,EACRuK,SACD,CAAC;IACD,MAAME,cAAc,GAAG3B,sBAAsB,CAAC,CAAC;IAC/C,MAAMzG,gBAAgB,GAAG8F,mBAAmB,CAAEnI,QAAS,CAAC;IAExD,MAAM0K,QAAQ,GAAG,IAAAtB,uBAAe,EAAEI,SAAS,EAAE,UAAU,EAAE,IAAK,CAAC;;IAE/D;IACA;IACA,MAAMmB,kBAAkB,GAAGD,QAAQ,GAChC,EAAE,GACFpC,eAAe,CAAEkB,SAAU,CAAC;IAC/B,MAAMoB,SAAS,GACdD,kBAAkB,CAACvI,MAAM,IACzBuI,kBAAkB,CAAE,CAAC,CAAE,KAAK3K,QAAQ;IAErC,MAAM6K,UAAU,GAAG7B,uBAAuB,CAAC,CAAC;IAE5C,OAAO;MACN,GAAGY,cAAc;MACjB/J,IAAI,EAAE+H,YAAY,CAAE5H,QAAS,CAAC;MAC9BE,kBAAkB,EAAEA,kBAAkB,CAAC,CAAC;MACxCJ,QAAQ,EAAE,CAAC,CAAE+H,eAAe,CAAE9C,YAAa,CAAC;MAC5C+F,YAAY,EAAEjD,eAAe,CAAE7H,QAAS,CAAC;MACzCD,SAAS;MACTqK,OAAO;MACPnK,UAAU,EAAEkK,WAAW;MACvBY,4BAA4B,EAC3B7C,6BAA6B,CAAC,CAAC,KAAKlI,QAAQ;MAC7CqC,gBAAgB;MAChBtB,kBAAkB,EACjBoJ,WAAW,IACT/B,yBAAyB,CAAEpI,QAAS,CAAC,IACtCwE,8BAA8B,CAAC,CAAC,CAACiC,KAAK,CACnCuE,EAAE,IAAM1F,YAAY,CAAE0F,EAAG,CAAC,KAAKxB,SAClC,CAAG;MACLxI,wBAAwB,EACvBqI,gBAAgB,CACf/D,YAAY,CAAEtF,QAAS,CAAC,EACxB,wCAAwC,EACxC,KACD,CAAC,IAAIqI,qBAAqB,CAAErI,QAAS,CAAC;MACvCiL,eAAe,EAAE1I,SAAS,EAAEc,UAAU,IAAI,CAAC;MAC3C4G,UAAU,EAAEI,KAAK,EAAEH,KAAK,IAAI3H,SAAS,EAAE2H,KAAK;MAC5CW,UAAU;MACVK,iBAAiB,EAChB7I,gBAAgB,KAAK,UAAU,IAC/BmG,sBAAsB,CAAExI,QAAS,CAAC;MACnCmL,UAAU,EACTpC,qCAAqC,CAAE/I,QAAS,CAAC,IACjD,CAAE6I,UAAU,CAAC,CAAC;MACf5B,eAAe,EACdkD,WAAW,KACTU,UAAU,KAAK,MAAM,IAAIA,UAAU,KAAK,UAAU,CAAE,CAAC;MAAA,EACpD5B,qCAAqC,CAAC,CAAC,GACvClH,SAAS;MACbqJ,aAAa,EAAE3C,kBAAkB,CAAEzI,QAAS,CAAC;MAC7CsK,eAAe;MACfe,mBAAmB,EAClBf,eAAe,IACf,CAAE5B,yBAAyB,CAAC,CAAC,IAC7B,CAAEC,sCAAsC,CAAC,CAAC;MAC3CE,UAAU,EAAED,mBAAmB,CAAE5I,QAAS,CAAC;MAC3CsL,gBAAgB,EAAEd,yBAAyB;MAC3Ce,iBAAiB,EAAE,CAAC,CAAEd,cAAc;MACpCe,oBAAoB,EACnBf,cAAc,IACdhF,kBAAkB,CACjBH,YAAY,CAAEmF,cAAe,CAAC,EAC9B1F,YACD,CAAC;MACF0G,iBAAiB,EAAEpJ,gBAAgB,KAAK,UAAU;MAClDqJ,kBAAkB,EACjBrJ,gBAAgB,KAAK,UAAU,IAC/B8F,mBAAmB,CAAEpD,YAAa,CAAC,KAAK,UAAU;MACnD4G,qBAAqB,EAAEf,SAAS,GAC7BD,kBAAkB,CAAE,CAAC,CAAE,GACvB;IACJ,CAAC;EACF,CAAC,EACD,CAAE3K,QAAQ,EAAE+E,YAAY,CACzB,CAAC;EAED,MAAM;IACLzC,aAAa;IACb;IACA;IACAzC,IAAI,GAAG,QAAQ;IACfK,kBAAkB,GAAG,KAAK;IAC1BJ,QAAQ,GAAG,KAAK;IAChBC,SAAS,GAAG,KAAK;IACjBqK,OAAO,GAAG,KAAK;IACfjB,sBAAsB;IACtB9I,IAAI;IACJE,UAAU;IACVD,OAAO;IACPL,UAAU,GAAG,KAAK;IAClBgB,mBAAmB;IACnB8J,4BAA4B;IAC5B1I,gBAAgB;IAChBwI,UAAU;IACV9J,kBAAkB;IAClBC,wBAAwB;IACxB8D,KAAK;IACLmG,eAAe;IACfhB,UAAU;IACViB,iBAAiB;IACjBC,UAAU;IACVlE,eAAe;IACfmE,aAAa;IACbd,eAAe;IACfe,mBAAmB;IACnBxB,UAAU;IACVhB,UAAU;IACVyC,gBAAgB;IAChBC,iBAAiB;IACjBC,oBAAoB;IACpBV,YAAY;IACZW,iBAAiB;IACjBC,kBAAkB;IAClB1M,SAAS;IACT+K,gBAAgB;IAChB4B;EACD,CAAC,GAAGlE,aAAa;;EAEjB;EACA;EACA;EACA;EACA,MAAM9H,KAAK,GAAG,IAAAiM,gBAAO,EACpB,OAAQ;IAAE,GAAGzC,sBAAsB;IAAE5I;EAAW,CAAC,CAAE,EACnD,CAAE4I,sBAAsB,EAAE5I,UAAU,CACrC,CAAC;;EAED;EACA;EACA;EACA,IAAK,CAAEkH,aAAa,EAAG;IACtB,OAAO,IAAI;EACZ;EAEA,MAAMoE,cAAc,GAAG;IACtBvJ,aAAa;IACbtC,QAAQ;IACRhB,SAAS;IACT8F,KAAK;IACLjF,IAAI;IACJQ,IAAI;IACJ4K,eAAe;IACfhB,UAAU;IACVhK,UAAU;IACViL,iBAAiB;IACjBC,UAAU;IACVlE,eAAe;IACf5E,gBAAgB;IAChBwI,UAAU;IACVO,aAAa;IACbd,eAAe;IACfe,mBAAmB;IACnBxB,UAAU;IACVhB,UAAU;IACVyC,gBAAgB;IAChBC,iBAAiB;IACjBC,oBAAoB;IACpBV,YAAY;IACZW,iBAAiB;IACjBC,kBAAkB;IAClBX,4BAA4B;IAC5BhB,gBAAgB;IAChBhJ,kBAAkB;IAClBC,wBAAwB;IACxB2K,qBAAqB;IACrB1K;EACD,CAAC;;EAED;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA,oBACC,IAAAvC,WAAA,CAAAa,GAAA,EAACf,oBAAA,CAAA4C,mBAAmB,CAACqC,QAAQ;IAACC,KAAK,EAAGmI,cAAgB;IAAAzM,QAAA,eACrD,IAAAV,WAAA,CAAAa,GAAA,EAACG,cAAc;MAAA,GACTJ,KAAK;MAKTO,IAAI;MACJK,kBAAkB;MAClBJ,QAAQ;MACRC,SAAS;MACTqK,OAAO;MACP;MACA;MACA;MACA;MACAzK,KAAK;MACLU,IAAI;MACJE,UAAU;MACVD,OAAO;MACPL;IAAU,CAEX;EAAC,CAC2B,CAAC;AAEjC;AAAC,IAAA6L,QAAA,GAAAC,OAAA,CAAAlK,OAAA,GAEc,IAAAmK,aAAI,EAAExE,sBAAuB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_blocks","_components","_data","_compose","_dom","_blockEdit","_blockInvalidWarning","_blockCrashWarning","_blockCrashBoundary","_blockHtml","_useBlockProps","_store","_layout","_privateBlockContext","_lockUnlock","_jsxRuntime","isUnmodifiedBlockContent","unlock","blocksPrivateApis","mergeWrapperProps","propsA","propsB","newProps","hasOwnProperty","className","clsx","style","Block","children","isHtml","props","jsx","useBlockProps","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","__unstableLayoutClassNames","layoutClassNames","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","_wrapperProps","mayDisplayControls","mayDisplayParentControls","themeSupportsLayout","context","useContext","PrivateBlockContext","removeBlock","useDispatch","blockEditorStore","onRemove","useCallback","parentLayout","useLayout","blockEdit","default","insertBlocksAfter","undefined","mergeBlocks","__unstableParentLayout","Object","keys","length","blockEditingMode","isPreviewMode","blockType","getBlockType","getEditWrapperProps","isAligned","isSticky","includes","saveContent","serializeRawBlock","getSaveContent","jsxs","RawHTML","safeHTML","Fragment","display","apiVersion","dataAlign","restWrapperProps","updatedWrapperProps","Provider","value","fallback","applyWithDispatch","withDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","selectBlock","newAttributes","getMultiSelectedBlockClientIds","select","multiSelectedBlockClientIds","clientIds","onInsertBlocks","blocks","index","rootClientId","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockName","getBlockOrder","getBlockRootClientId","canInsertBlockType","switchToDefaultOrRemove","defaultBlockName","getDefaultBlockName","replacement","switchToBlockType","isUnmodifiedDefaultBlock","nextBlockClientId","batch","moveFirstItemUp","_clientId","changeSelection","targetRootClientId","blockOrder","firstClientId","isUnmodifiedBlock","firstBlock","isFirstBlockContentUnmodified","canTransformToDefaultBlock","every","canLiftAndTransformToDefaultBlock","nextRootClientId","rootAttributes","previousRootAttributes","key","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","replacementBlocks","Array","isArray","selectionEnabled","compose","withFilters","BlockListBlockProvider","selectedProps","useSelect","isBlockSelected","getBlockMode","getTemplateLock","getBlockWithoutAttributes","canRemoveBlock","canMoveBlock","getSettings","getTemporarilyEditingAsBlocks","getBlockEditingMode","isFirstMultiSelectedBlock","hasSelectedInnerBlock","getBlocksByName","isBlockMultiSelected","isBlockSubtreeDisabled","isBlockHighlighted","__unstableIsFullySelected","__unstableSelectionHasUnmergeableBlock","isBlockBeingDragged","isDragging","hasBlockMovingClientId","__unstableHasActiveBlockOverlayActive","__unstableGetEditorMode","getSelectedBlocksInitialCaretPosition","blockWithoutAttributes","hasBlockSupport","_hasBlockSupport","getActiveBlockVariation","blocksStore","blockName","supportsLayout","__unstableIsPreviewMode","hasLightBlockWrapper","previewContext","isReusable","isReusableBlock","defaultClassName","getBlockDefaultClassName","blockTitle","title","_isSelected","canMove","match","isMultiSelected","checkDeep","isAncestorOfSelectedBlock","movingClientId","multiple","blocksWithSameName","isInvalid","editorMode","templateLock","isTemporarilyEditingAsBlocks","id","blockApiVersion","isSubtreeDisabled","hasOverlay","isHighlighted","isPartiallySelected","hasChildSelected","isBlockMovingMode","canInsertMovingBlock","isEditingDisabled","hasEditableOutline","originalBlockClientId","useMemo","privateContext","_default","exports","memo"],"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tmemo,\n\tuseCallback,\n\tRawHTML,\n\tuseContext,\n\tuseMemo,\n} from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n\tisReusableBlock,\n\tgetBlockDefaultClassName,\n\thasBlockSupport,\n\tstore as blocksStore,\n\tprivateApis as blocksPrivateApis,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { withDispatch, useDispatch, useSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { PrivateBlockContext } from './private-block-context';\n\nimport { unlock } from '../../lock-unlock';\n\nconst { isUnmodifiedBlockContent } = unlock( blocksPrivateApis );\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\t// May be set to undefined, so check if the property is set!\n\tif (\n\t\tpropsA?.hasOwnProperty( 'className' ) &&\n\t\tpropsB?.hasOwnProperty( 'className' )\n\t) {\n\t\tnewProps.className = clsx( propsA.className, propsB.className );\n\t}\n\n\tif (\n\t\tpropsA?.hasOwnProperty( 'style' ) &&\n\t\tpropsB?.hasOwnProperty( 'style' )\n\t) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tthemeSupportsLayout,\n\t\t...context\n\t} = useContext( PrivateBlockContext );\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback(\n\t\t() => removeBlock( clientId ),\n\t\t[ clientId, removeBlock ]\n\t);\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t\tmayDisplayControls={ mayDisplayControls }\n\t\t\tmayDisplayParentControls={ mayDisplayParentControls }\n\t\t\tblockEditingMode={ context.blockEditingMode }\n\t\t\tisPreviewMode={ context.isPreviewMode }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// Support for sticky position in classic themes with alignment wrappers.\n\n\tconst isSticky = className?.includes( 'is-position-sticky' );\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'wp-block', isSticky && className ) }\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\tconst updatedWrapperProps = {\n\t\t...restWrapperProps,\n\t\tclassName: clsx(\n\t\t\trestWrapperProps.className,\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\t! ( dataAlign && isSticky ) && className\n\t\t),\n\t};\n\n\t// We set a new context with the adjusted and filtered wrapperProps (through\n\t// `editor.BlockListBlock`), which the `BlockListBlockProvider` did not have\n\t// access to.\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider\n\t\t\tvalue={ {\n\t\t\t\twrapperProps: updatedWrapperProps,\n\t\t\t\tisAligned,\n\t\t\t\t...context,\n\t\t\t} }\n\t\t>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tselectBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( newAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\tfunction switchToDefaultOrRemove() {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\tconst defaultBlockName = getDefaultBlockName();\n\t\t\t\tif ( getBlockName( clientId ) !== defaultBlockName ) {\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tblock,\n\t\t\t\t\t\tdefaultBlockName\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\treplaceBlocks( clientId, replacement );\n\t\t\t\t\t}\n\t\t\t\t} else if ( isUnmodifiedDefaultBlock( block ) ) {\n\t\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t\t\tselectBlock( nextBlockClientId );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tconst firstBlock = getBlock( firstClientId );\n\t\t\t\t\t\tconst isFirstBlockContentUnmodified =\n\t\t\t\t\t\t\tisUnmodifiedBlockContent( firstBlock );\n\t\t\t\t\t\tconst defaultBlockName = getDefaultBlockName();\n\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\tfirstBlock,\n\t\t\t\t\t\t\tdefaultBlockName\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst canTransformToDefaultBlock =\n\t\t\t\t\t\t\t!! replacement?.length &&\n\t\t\t\t\t\t\treplacement.every( ( block ) =>\n\t\t\t\t\t\t\t\tcanInsertBlockType( block.name, _clientId )\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tisFirstBlockContentUnmodified &&\n\t\t\t\t\t\t\tcanTransformToDefaultBlock\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Step 1: If the block is empty and can be transformed to the default block type.\n\t\t\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t\t\tfirstClientId,\n\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tisFirstBlockContentUnmodified &&\n\t\t\t\t\t\t\tfirstBlock.name === defaultBlockName\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Step 2: If the block is empty and is already the default block type.\n\t\t\t\t\t\t\tremoveBlock( firstClientId );\n\t\t\t\t\t\t\tconst nextBlockClientId =\n\t\t\t\t\t\t\t\tgetNextBlockClientId( clientId );\n\t\t\t\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\t\t\t\tselectBlock( nextBlockClientId );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// Step 3: If the block can be moved up.\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst canLiftAndTransformToDefaultBlock =\n\t\t\t\t\t\t\t\t!! replacement?.length &&\n\t\t\t\t\t\t\t\treplacement.every( ( block ) =>\n\t\t\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif ( canLiftAndTransformToDefaultBlock ) {\n\t\t\t\t\t\t\t\t// Step 4: If the block can be transformed to the default block type and moved up.\n\t\t\t\t\t\t\t\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Step 5: Continue the default behavior.\n\t\t\t\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\n// This component is used by the BlockListBlockProvider component below. It will\n// add the props necessary for the `editor.BlockListBlock` filters.\nBlockListBlock = compose(\n\tapplyWithDispatch,\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n\n// This component provides all the information we need through a single store\n// subscription (useSelect mapping). Only the necessary props are passed down\n// to the BlockListBlock component, which is a filtered component, so these\n// props are public API. To avoid adding to the public API, we use a private\n// context to pass the rest of the information to the filtered BlockListBlock\n// component, and useBlockProps.\nfunction BlockListBlockProvider( props ) {\n\tconst { clientId, rootClientId } = props;\n\tconst selectedProps = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\tgetBlockMode,\n\t\t\t\tisSelectionEnabled,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockWithoutAttributes,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanMoveBlock,\n\n\t\t\t\tgetSettings,\n\t\t\t\tgetTemporarilyEditingAsBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlocksByName,\n\n\t\t\t\tgetBlockIndex,\n\t\t\t\tisBlockMultiSelected,\n\t\t\t\tisBlockSubtreeDisabled,\n\t\t\t\tisBlockHighlighted,\n\t\t\t\t__unstableIsFullySelected,\n\t\t\t\t__unstableSelectionHasUnmergeableBlock,\n\t\t\t\tisBlockBeingDragged,\n\t\t\t\tisDragging,\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\t__unstableHasActiveBlockOverlayActive,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst blockWithoutAttributes =\n\t\t\t\tgetBlockWithoutAttributes( clientId );\n\n\t\t\t// This is a temporary fix.\n\t\t\t// This function should never be called when a block is not\n\t\t\t// present in the state. It happens now because the order in\n\t\t\t// withSelect rendering is not correct.\n\t\t\tif ( ! blockWithoutAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\thasBlockSupport: _hasBlockSupport,\n\t\t\t\tgetActiveBlockVariation,\n\t\t\t} = select( blocksStore );\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst { name: blockName, isValid } = blockWithoutAttributes;\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tconst { supportsLayout, __unstableIsPreviewMode: isPreviewMode } =\n\t\t\t\tgetSettings();\n\t\t\tconst hasLightBlockWrapper = blockType?.apiVersion > 1;\n\t\t\tconst previewContext = {\n\t\t\t\tisPreviewMode,\n\t\t\t\tblockWithoutAttributes,\n\t\t\t\tname: blockName,\n\t\t\t\tattributes,\n\t\t\t\tisValid,\n\t\t\t\tthemeSupportsLayout: supportsLayout,\n\t\t\t\tindex: getBlockIndex( clientId ),\n\t\t\t\tisReusable: isReusableBlock( blockType ),\n\t\t\t\tclassName: hasLightBlockWrapper\n\t\t\t\t\t? attributes.className\n\t\t\t\t\t: undefined,\n\t\t\t\tdefaultClassName: hasLightBlockWrapper\n\t\t\t\t\t? getBlockDefaultClassName( blockName )\n\t\t\t\t\t: undefined,\n\t\t\t\tblockTitle: blockType?.title,\n\t\t\t};\n\n\t\t\t// When in preview mode, we can avoid a lot of selection and\n\t\t\t// editing related selectors.\n\t\t\tif ( isPreviewMode ) {\n\t\t\t\treturn previewContext;\n\t\t\t}\n\n\t\t\tconst _isSelected = isBlockSelected( clientId );\n\t\t\tconst canRemove = canRemoveBlock( clientId );\n\t\t\tconst canMove = canMoveBlock( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\t\t\tconst isMultiSelected = isBlockMultiSelected( clientId );\n\t\t\tconst checkDeep = true;\n\t\t\tconst isAncestorOfSelectedBlock = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\tcheckDeep\n\t\t\t);\n\t\t\tconst movingClientId = hasBlockMovingClientId();\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\n\t\t\tconst multiple = hasBlockSupport( blockName, 'multiple', true );\n\n\t\t\t// For block types with `multiple` support, there is no \"original\n\t\t\t// block\" to be found in the content, as the block itself is valid.\n\t\t\tconst blocksWithSameName = multiple\n\t\t\t\t? []\n\t\t\t\t: getBlocksByName( blockName );\n\t\t\tconst isInvalid =\n\t\t\t\tblocksWithSameName.length &&\n\t\t\t\tblocksWithSameName[ 0 ] !== clientId;\n\n\t\t\tconst editorMode = __unstableGetEditorMode();\n\n\t\t\treturn {\n\t\t\t\t...previewContext,\n\t\t\t\tmode: getBlockMode( clientId ),\n\t\t\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\t\t\tisLocked: !! getTemplateLock( rootClientId ),\n\t\t\t\ttemplateLock: getTemplateLock( clientId ),\n\t\t\t\tcanRemove,\n\t\t\t\tcanMove,\n\t\t\t\tisSelected: _isSelected,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\tgetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t\tblockEditingMode,\n\t\t\t\tmayDisplayControls:\n\t\t\t\t\t_isSelected ||\n\t\t\t\t\t( isFirstMultiSelectedBlock( clientId ) &&\n\t\t\t\t\t\tgetMultiSelectedBlockClientIds().every(\n\t\t\t\t\t\t\t( id ) => getBlockName( id ) === blockName\n\t\t\t\t\t\t) ),\n\t\t\t\tmayDisplayParentControls:\n\t\t\t\t\t_hasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) && hasSelectedInnerBlock( clientId ),\n\t\t\t\tblockApiVersion: blockType?.apiVersion || 1,\n\t\t\t\tblockTitle: match?.title || blockType?.title,\n\t\t\t\teditorMode,\n\t\t\t\tisSubtreeDisabled:\n\t\t\t\t\tblockEditingMode === 'disabled' &&\n\t\t\t\t\tisBlockSubtreeDisabled( clientId ),\n\t\t\t\thasOverlay:\n\t\t\t\t\t__unstableHasActiveBlockOverlayActive( clientId ) &&\n\t\t\t\t\t! isDragging(),\n\t\t\t\tinitialPosition:\n\t\t\t\t\t_isSelected &&\n\t\t\t\t\t( editorMode === 'edit' || editorMode === 'zoom-out' ) // Don't recalculate the initialPosition when toggling in/out of zoom-out mode\n\t\t\t\t\t\t? getSelectedBlocksInitialCaretPosition()\n\t\t\t\t\t\t: undefined,\n\t\t\t\tisHighlighted: isBlockHighlighted( clientId ),\n\t\t\t\tisMultiSelected,\n\t\t\t\tisPartiallySelected:\n\t\t\t\t\tisMultiSelected &&\n\t\t\t\t\t! __unstableIsFullySelected() &&\n\t\t\t\t\t! __unstableSelectionHasUnmergeableBlock(),\n\t\t\t\tisDragging: isBlockBeingDragged( clientId ),\n\t\t\t\thasChildSelected: isAncestorOfSelectedBlock,\n\t\t\t\tisBlockMovingMode: !! movingClientId,\n\t\t\t\tcanInsertMovingBlock:\n\t\t\t\t\tmovingClientId &&\n\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\tgetBlockName( movingClientId ),\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t),\n\t\t\t\tisEditingDisabled: blockEditingMode === 'disabled',\n\t\t\t\thasEditableOutline:\n\t\t\t\t\tblockEditingMode !== 'disabled' &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) === 'disabled',\n\t\t\t\toriginalBlockClientId: isInvalid\n\t\t\t\t\t? blocksWithSameName[ 0 ]\n\t\t\t\t\t: false,\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\n\tconst {\n\t\tisPreviewMode,\n\t\t// Fill values that end up as a public API and may not be defined in\n\t\t// preview mode.\n\t\tmode = 'visual',\n\t\tisSelectionEnabled = false,\n\t\tisLocked = false,\n\t\tcanRemove = false,\n\t\tcanMove = false,\n\t\tblockWithoutAttributes,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected = false,\n\t\tthemeSupportsLayout,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tblockEditingMode,\n\t\teditorMode,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tindex,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisBlockMovingMode,\n\t\tcanInsertMovingBlock,\n\t\ttemplateLock,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tclassName,\n\t\tdefaultClassName,\n\t\toriginalBlockClientId,\n\t} = selectedProps;\n\n\t// Users of the editor.BlockListBlock filter used to be able to\n\t// access the block prop.\n\t// Ideally these blocks would rely on the clientId prop only.\n\t// This is kept for backward compatibility reasons.\n\tconst block = useMemo(\n\t\t() => ( { ...blockWithoutAttributes, attributes } ),\n\t\t[ blockWithoutAttributes, attributes ]\n\t);\n\n\t// Block is sometimes not mounted at the right time, causing it be\n\t// undefined see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tif ( ! selectedProps ) {\n\t\treturn null;\n\t}\n\n\tconst privateContext = {\n\t\tisPreviewMode,\n\t\tclientId,\n\t\tclassName,\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSelected,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tblockEditingMode,\n\t\teditorMode,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisBlockMovingMode,\n\t\tcanInsertMovingBlock,\n\t\ttemplateLock,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tdefaultClassName,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\toriginalBlockClientId,\n\t\tthemeSupportsLayout,\n\t};\n\n\t// Here we separate between the props passed to BlockListBlock and any other\n\t// information we selected for internal use. BlockListBlock is a filtered\n\t// component and thus ALL the props are PUBLIC API.\n\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider value={ privateContext }>\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t// WARNING: all the following props are public API (through the\n\t\t\t\t// editor.BlockListBlock filter) and normally nothing new should\n\t\t\t\t// be added to it.\n\t\t\t\t{ ...{\n\t\t\t\t\tmode,\n\t\t\t\t\tisSelectionEnabled,\n\t\t\t\t\tisLocked,\n\t\t\t\t\tcanRemove,\n\t\t\t\t\tcanMove,\n\t\t\t\t\t// Users of the editor.BlockListBlock filter used to be able\n\t\t\t\t\t// to access the block prop. Ideally these blocks would rely\n\t\t\t\t\t// on the clientId prop only. This is kept for backward\n\t\t\t\t\t// compatibility reasons.\n\t\t\t\t\tblock,\n\t\t\t\t\tname,\n\t\t\t\t\tattributes,\n\t\t\t\t\tisValid,\n\t\t\t\t\tisSelected,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nexport default memo( BlockListBlockProvider );\n"],"mappings":"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","ignoreList":[]}
@@ -65,7 +65,6 @@ function useFocusFirstElement({
65
65
  const isReverse = -1 === initialPosition;
66
66
  const target = textInputs[isReverse ? textInputs.length - 1 : 0] || ref.current;
67
67
  if (!(0, _dom2.isInsideRootBlock)(ref.current, target)) {
68
- ownerDocument.defaultView.getSelection().removeAllRanges();
69
68
  ref.current.focus();
70
69
  return;
71
70
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_dom","_data","_dom2","_store","useFocusFirstElement","clientId","initialPosition","ref","useRef","isBlockSelected","isMultiSelecting","__unstableGetEditorMode","useSelect","blockEditorStore","useEffect","undefined","current","ownerDocument","isInsideRootBlock","activeElement","textInputs","focus","tabbable","find","filter","node","isTextField","isReverse","target","length","defaultView","getSelection","removeAllRanges","getAttribute","focusElement","findNext","isFormElement","placeCaretAtHorizontalEdge"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-focus-first-element.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tfocus,\n\tisFormElement,\n\tisTextField,\n\tplaceCaretAtHorizontalEdge,\n} from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { isInsideRootBlock } from '../../../utils/dom';\nimport { store as blockEditorStore } from '../../../store';\n\n/** @typedef {import('@wordpress/element').RefObject} RefObject */\n\n/**\n * Transitions focus to the block or inner tabbable when the block becomes\n * selected and an initial position is set.\n *\n * @param {string} clientId Block client ID.\n *\n * @return {RefObject} React ref with the block element.\n */\nexport function useFocusFirstElement( { clientId, initialPosition } ) {\n\tconst ref = useRef();\n\tconst { isBlockSelected, isMultiSelecting, __unstableGetEditorMode } =\n\t\tuseSelect( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Check if the block is still selected at the time this effect runs.\n\t\tif (\n\t\t\t! isBlockSelected( clientId ) ||\n\t\t\tisMultiSelecting() ||\n\t\t\t__unstableGetEditorMode() === 'zoom-out'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( initialPosition === undefined || initialPosition === null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { ownerDocument } = ref.current;\n\n\t\t// Do not focus the block if it already contains the active element.\n\t\tif ( isInsideRootBlock( ref.current, ownerDocument.activeElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find all tabbables within node.\n\t\tconst textInputs = focus.tabbable\n\t\t\t.find( ref.current )\n\t\t\t.filter( ( node ) => isTextField( node ) );\n\n\t\t// If reversed (e.g. merge via backspace), use the last in the set of\n\t\t// tabbables.\n\t\tconst isReverse = -1 === initialPosition;\n\t\tconst target =\n\t\t\ttextInputs[ isReverse ? textInputs.length - 1 : 0 ] || ref.current;\n\n\t\tif ( ! isInsideRootBlock( ref.current, target ) ) {\n\t\t\townerDocument.defaultView.getSelection().removeAllRanges();\n\t\t\tref.current.focus();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check to see if element is focussable before a generic caret insert.\n\t\tif ( ! ref.current.getAttribute( 'contenteditable' ) ) {\n\t\t\tconst focusElement = focus.tabbable.findNext( ref.current );\n\t\t\t// Make sure focusElement is valid, contained in the same block, and a form field.\n\t\t\tif (\n\t\t\t\tfocusElement &&\n\t\t\t\tisInsideRootBlock( ref.current, focusElement ) &&\n\t\t\t\tisFormElement( focusElement )\n\t\t\t) {\n\t\t\t\tfocusElement.focus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tplaceCaretAtHorizontalEdge( target, isReverse );\n\t}, [ initialPosition, clientId ] );\n\n\treturn ref;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAMA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAhBA;AACA;AACA;;AAUA;AACA;AACA;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,oBAAoBA,CAAE;EAAEC,QAAQ;EAAEC;AAAgB,CAAC,EAAG;EACrE,MAAMC,GAAG,GAAG,IAAAC,eAAM,EAAC,CAAC;EACpB,MAAM;IAAEC,eAAe;IAAEC,gBAAgB;IAAEC;EAAwB,CAAC,GACnE,IAAAC,eAAS,EAAEC,YAAiB,CAAC;EAE9B,IAAAC,kBAAS,EAAE,MAAM;IAChB;IACA,IACC,CAAEL,eAAe,CAAEJ,QAAS,CAAC,IAC7BK,gBAAgB,CAAC,CAAC,IAClBC,uBAAuB,CAAC,CAAC,KAAK,UAAU,EACvC;MACD;IACD;IAEA,IAAKL,eAAe,KAAKS,SAAS,IAAIT,eAAe,KAAK,IAAI,EAAG;MAChE;IACD;IAEA,IAAK,CAAEC,GAAG,CAACS,OAAO,EAAG;MACpB;IACD;IAEA,MAAM;MAAEC;IAAc,CAAC,GAAGV,GAAG,CAACS,OAAO;;IAErC;IACA,IAAK,IAAAE,uBAAiB,EAAEX,GAAG,CAACS,OAAO,EAAEC,aAAa,CAACE,aAAc,CAAC,EAAG;MACpE;IACD;;IAEA;IACA,MAAMC,UAAU,GAAGC,UAAK,CAACC,QAAQ,CAC/BC,IAAI,CAAEhB,GAAG,CAACS,OAAQ,CAAC,CACnBQ,MAAM,CAAIC,IAAI,IAAM,IAAAC,gBAAW,EAAED,IAAK,CAAE,CAAC;;IAE3C;IACA;IACA,MAAME,SAAS,GAAG,CAAC,CAAC,KAAKrB,eAAe;IACxC,MAAMsB,MAAM,GACXR,UAAU,CAAEO,SAAS,GAAGP,UAAU,CAACS,MAAM,GAAG,CAAC,GAAG,CAAC,CAAE,IAAItB,GAAG,CAACS,OAAO;IAEnE,IAAK,CAAE,IAAAE,uBAAiB,EAAEX,GAAG,CAACS,OAAO,EAAEY,MAAO,CAAC,EAAG;MACjDX,aAAa,CAACa,WAAW,CAACC,YAAY,CAAC,CAAC,CAACC,eAAe,CAAC,CAAC;MAC1DzB,GAAG,CAACS,OAAO,CAACK,KAAK,CAAC,CAAC;MACnB;IACD;;IAEA;IACA,IAAK,CAAEd,GAAG,CAACS,OAAO,CAACiB,YAAY,CAAE,iBAAkB,CAAC,EAAG;MACtD,MAAMC,YAAY,GAAGb,UAAK,CAACC,QAAQ,CAACa,QAAQ,CAAE5B,GAAG,CAACS,OAAQ,CAAC;MAC3D;MACA,IACCkB,YAAY,IACZ,IAAAhB,uBAAiB,EAAEX,GAAG,CAACS,OAAO,EAAEkB,YAAa,CAAC,IAC9C,IAAAE,kBAAa,EAAEF,YAAa,CAAC,EAC5B;QACDA,YAAY,CAACb,KAAK,CAAC,CAAC;QACpB;MACD;IACD;IACA,IAAAgB,+BAA0B,EAAET,MAAM,EAAED,SAAU,CAAC;EAChD,CAAC,EAAE,CAAErB,eAAe,EAAED,QAAQ,CAAG,CAAC;EAElC,OAAOE,GAAG;AACX","ignoreList":[]}
1
+ {"version":3,"names":["_element","require","_dom","_data","_dom2","_store","useFocusFirstElement","clientId","initialPosition","ref","useRef","isBlockSelected","isMultiSelecting","__unstableGetEditorMode","useSelect","blockEditorStore","useEffect","undefined","current","ownerDocument","isInsideRootBlock","activeElement","textInputs","focus","tabbable","find","filter","node","isTextField","isReverse","target","length","getAttribute","focusElement","findNext","isFormElement","placeCaretAtHorizontalEdge"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-focus-first-element.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useRef } from '@wordpress/element';\nimport {\n\tfocus,\n\tisFormElement,\n\tisTextField,\n\tplaceCaretAtHorizontalEdge,\n} from '@wordpress/dom';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { isInsideRootBlock } from '../../../utils/dom';\nimport { store as blockEditorStore } from '../../../store';\n\n/** @typedef {import('@wordpress/element').RefObject} RefObject */\n\n/**\n * Transitions focus to the block or inner tabbable when the block becomes\n * selected and an initial position is set.\n *\n * @param {string} clientId Block client ID.\n *\n * @return {RefObject} React ref with the block element.\n */\nexport function useFocusFirstElement( { clientId, initialPosition } ) {\n\tconst ref = useRef();\n\tconst { isBlockSelected, isMultiSelecting, __unstableGetEditorMode } =\n\t\tuseSelect( blockEditorStore );\n\n\tuseEffect( () => {\n\t\t// Check if the block is still selected at the time this effect runs.\n\t\tif (\n\t\t\t! isBlockSelected( clientId ) ||\n\t\t\tisMultiSelecting() ||\n\t\t\t__unstableGetEditorMode() === 'zoom-out'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( initialPosition === undefined || initialPosition === null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { ownerDocument } = ref.current;\n\n\t\t// Do not focus the block if it already contains the active element.\n\t\tif ( isInsideRootBlock( ref.current, ownerDocument.activeElement ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find all tabbables within node.\n\t\tconst textInputs = focus.tabbable\n\t\t\t.find( ref.current )\n\t\t\t.filter( ( node ) => isTextField( node ) );\n\n\t\t// If reversed (e.g. merge via backspace), use the last in the set of\n\t\t// tabbables.\n\t\tconst isReverse = -1 === initialPosition;\n\t\tconst target =\n\t\t\ttextInputs[ isReverse ? textInputs.length - 1 : 0 ] || ref.current;\n\n\t\tif ( ! isInsideRootBlock( ref.current, target ) ) {\n\t\t\tref.current.focus();\n\t\t\treturn;\n\t\t}\n\n\t\t// Check to see if element is focussable before a generic caret insert.\n\t\tif ( ! ref.current.getAttribute( 'contenteditable' ) ) {\n\t\t\tconst focusElement = focus.tabbable.findNext( ref.current );\n\t\t\t// Make sure focusElement is valid, contained in the same block, and a form field.\n\t\t\tif (\n\t\t\t\tfocusElement &&\n\t\t\t\tisInsideRootBlock( ref.current, focusElement ) &&\n\t\t\t\tisFormElement( focusElement )\n\t\t\t) {\n\t\t\t\tfocusElement.focus();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tplaceCaretAtHorizontalEdge( target, isReverse );\n\t}, [ initialPosition, clientId ] );\n\n\treturn ref;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAMA,IAAAE,KAAA,GAAAF,OAAA;AAKA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAhBA;AACA;AACA;;AAUA;AACA;AACA;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,oBAAoBA,CAAE;EAAEC,QAAQ;EAAEC;AAAgB,CAAC,EAAG;EACrE,MAAMC,GAAG,GAAG,IAAAC,eAAM,EAAC,CAAC;EACpB,MAAM;IAAEC,eAAe;IAAEC,gBAAgB;IAAEC;EAAwB,CAAC,GACnE,IAAAC,eAAS,EAAEC,YAAiB,CAAC;EAE9B,IAAAC,kBAAS,EAAE,MAAM;IAChB;IACA,IACC,CAAEL,eAAe,CAAEJ,QAAS,CAAC,IAC7BK,gBAAgB,CAAC,CAAC,IAClBC,uBAAuB,CAAC,CAAC,KAAK,UAAU,EACvC;MACD;IACD;IAEA,IAAKL,eAAe,KAAKS,SAAS,IAAIT,eAAe,KAAK,IAAI,EAAG;MAChE;IACD;IAEA,IAAK,CAAEC,GAAG,CAACS,OAAO,EAAG;MACpB;IACD;IAEA,MAAM;MAAEC;IAAc,CAAC,GAAGV,GAAG,CAACS,OAAO;;IAErC;IACA,IAAK,IAAAE,uBAAiB,EAAEX,GAAG,CAACS,OAAO,EAAEC,aAAa,CAACE,aAAc,CAAC,EAAG;MACpE;IACD;;IAEA;IACA,MAAMC,UAAU,GAAGC,UAAK,CAACC,QAAQ,CAC/BC,IAAI,CAAEhB,GAAG,CAACS,OAAQ,CAAC,CACnBQ,MAAM,CAAIC,IAAI,IAAM,IAAAC,gBAAW,EAAED,IAAK,CAAE,CAAC;;IAE3C;IACA;IACA,MAAME,SAAS,GAAG,CAAC,CAAC,KAAKrB,eAAe;IACxC,MAAMsB,MAAM,GACXR,UAAU,CAAEO,SAAS,GAAGP,UAAU,CAACS,MAAM,GAAG,CAAC,GAAG,CAAC,CAAE,IAAItB,GAAG,CAACS,OAAO;IAEnE,IAAK,CAAE,IAAAE,uBAAiB,EAAEX,GAAG,CAACS,OAAO,EAAEY,MAAO,CAAC,EAAG;MACjDrB,GAAG,CAACS,OAAO,CAACK,KAAK,CAAC,CAAC;MACnB;IACD;;IAEA;IACA,IAAK,CAAEd,GAAG,CAACS,OAAO,CAACc,YAAY,CAAE,iBAAkB,CAAC,EAAG;MACtD,MAAMC,YAAY,GAAGV,UAAK,CAACC,QAAQ,CAACU,QAAQ,CAAEzB,GAAG,CAACS,OAAQ,CAAC;MAC3D;MACA,IACCe,YAAY,IACZ,IAAAb,uBAAiB,EAAEX,GAAG,CAACS,OAAO,EAAEe,YAAa,CAAC,IAC9C,IAAAE,kBAAa,EAAEF,YAAa,CAAC,EAC5B;QACDA,YAAY,CAACV,KAAK,CAAC,CAAC;QACpB;MACD;IACD;IACA,IAAAa,+BAA0B,EAAEN,MAAM,EAAED,SAAU,CAAC;EAChD,CAAC,EAAE,CAAErB,eAAe,EAAED,QAAQ,CAAG,CAAC;EAElC,OAAOE,GAAG;AACX","ignoreList":[]}
@@ -25,13 +25,17 @@ function useZoomOutModeExit({
25
25
  editorMode
26
26
  }) {
27
27
  const {
28
- getSettings
29
- } = (0, _data.useSelect)(_store.store);
28
+ getSettings,
29
+ isZoomOut
30
+ } = (0, _lockUnlock.unlock)((0, _data.useSelect)(_store.store));
30
31
  const {
31
- __unstableSetEditorMode
32
+ __unstableSetEditorMode,
33
+ resetZoomLevel
32
34
  } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
33
35
  return (0, _compose.useRefEffect)(node => {
34
- if (editorMode !== 'zoom-out') {
36
+ // In "compose" mode.
37
+ const composeMode = editorMode === 'zoom-out' && isZoomOut();
38
+ if (!composeMode) {
35
39
  return;
36
40
  }
37
41
  function onDoubleClick(event) {
@@ -44,6 +48,7 @@ function useZoomOutModeExit({
44
48
  __experimentalSetIsInserterOpened(false);
45
49
  }
46
50
  __unstableSetEditorMode('edit');
51
+ resetZoomLevel();
47
52
  }
48
53
  }
49
54
  node.addEventListener('dblclick', onDoubleClick);
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_compose","_store","_lockUnlock","useZoomOutModeExit","editorMode","getSettings","useSelect","blockEditorStore","__unstableSetEditorMode","unlock","useDispatch","useRefEffect","node","onDoubleClick","event","defaultPrevented","preventDefault","__experimentalSetIsInserterOpened","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\n/**\n * Allows Zoom Out mode to be exited by double clicking in the selected block.\n *\n * @param {string} clientId Block client ID.\n */\nexport function useZoomOutModeExit( { editorMode } ) {\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst { __unstableSetEditorMode } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( editorMode !== 'zoom-out' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction onDoubleClick( event ) {\n\t\t\t\tif ( ! event.defaultPrevented ) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\tconst { __experimentalSetIsInserterOpened } = getSettings();\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof __experimentalSetIsInserterOpened === 'function'\n\t\t\t\t\t) {\n\t\t\t\t\t\t__experimentalSetIsInserterOpened( false );\n\t\t\t\t\t}\n\t\t\t\t\t__unstableSetEditorMode( 'edit' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'dblclick', onDoubleClick );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'dblclick', onDoubleClick );\n\t\t\t};\n\t\t},\n\t\t[ editorMode, getSettings, __unstableSetEditorMode ]\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACO,SAASI,kBAAkBA,CAAE;EAAEC;AAAW,CAAC,EAAG;EACpD,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,eAAS,EAAEC,YAAiB,CAAC;EACrD,MAAM;IAAEC;EAAwB,CAAC,GAAG,IAAAC,kBAAM,EACzC,IAAAC,iBAAW,EAAEH,YAAiB,CAC/B,CAAC;EAED,OAAO,IAAAI,qBAAY,EAChBC,IAAI,IAAM;IACX,IAAKR,UAAU,KAAK,UAAU,EAAG;MAChC;IACD;IAEA,SAASS,aAAaA,CAAEC,KAAK,EAAG;MAC/B,IAAK,CAAEA,KAAK,CAACC,gBAAgB,EAAG;QAC/BD,KAAK,CAACE,cAAc,CAAC,CAAC;QAEtB,MAAM;UAAEC;QAAkC,CAAC,GAAGZ,WAAW,CAAC,CAAC;QAE3D,IACC,OAAOY,iCAAiC,KAAK,UAAU,EACtD;UACDA,iCAAiC,CAAE,KAAM,CAAC;QAC3C;QACAT,uBAAuB,CAAE,MAAO,CAAC;MAClC;IACD;IAEAI,IAAI,CAACM,gBAAgB,CAAE,UAAU,EAAEL,aAAc,CAAC;IAElD,OAAO,MAAM;MACZD,IAAI,CAACO,mBAAmB,CAAE,UAAU,EAAEN,aAAc,CAAC;IACtD,CAAC;EACF,CAAC,EACD,CAAET,UAAU,EAAEC,WAAW,EAAEG,uBAAuB,CACnD,CAAC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["_data","require","_compose","_store","_lockUnlock","useZoomOutModeExit","editorMode","getSettings","isZoomOut","unlock","useSelect","blockEditorStore","__unstableSetEditorMode","resetZoomLevel","useDispatch","useRefEffect","node","composeMode","onDoubleClick","event","defaultPrevented","preventDefault","__experimentalSetIsInserterOpened","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\n/**\n * Allows Zoom Out mode to be exited by double clicking in the selected block.\n *\n * @param {string} clientId Block client ID.\n */\nexport function useZoomOutModeExit( { editorMode } ) {\n\tconst { getSettings, isZoomOut } = unlock( useSelect( blockEditorStore ) );\n\tconst { __unstableSetEditorMode, resetZoomLevel } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\t// In \"compose\" mode.\n\t\t\tconst composeMode = editorMode === 'zoom-out' && isZoomOut();\n\n\t\t\tif ( ! composeMode ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction onDoubleClick( event ) {\n\t\t\t\tif ( ! event.defaultPrevented ) {\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\tconst { __experimentalSetIsInserterOpened } = getSettings();\n\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof __experimentalSetIsInserterOpened === 'function'\n\t\t\t\t\t) {\n\t\t\t\t\t\t__experimentalSetIsInserterOpened( false );\n\t\t\t\t\t}\n\t\t\t\t\t__unstableSetEditorMode( 'edit' );\n\t\t\t\t\tresetZoomLevel();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'dblclick', onDoubleClick );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'dblclick', onDoubleClick );\n\t\t\t};\n\t\t},\n\t\t[ editorMode, getSettings, __unstableSetEditorMode ]\n\t);\n}\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACO,SAASI,kBAAkBA,CAAE;EAAEC;AAAW,CAAC,EAAG;EACpD,MAAM;IAAEC,WAAW;IAAEC;EAAU,CAAC,GAAG,IAAAC,kBAAM,EAAE,IAAAC,eAAS,EAAEC,YAAiB,CAAE,CAAC;EAC1E,MAAM;IAAEC,uBAAuB;IAAEC;EAAe,CAAC,GAAG,IAAAJ,kBAAM,EACzD,IAAAK,iBAAW,EAAEH,YAAiB,CAC/B,CAAC;EAED,OAAO,IAAAI,qBAAY,EAChBC,IAAI,IAAM;IACX;IACA,MAAMC,WAAW,GAAGX,UAAU,KAAK,UAAU,IAAIE,SAAS,CAAC,CAAC;IAE5D,IAAK,CAAES,WAAW,EAAG;MACpB;IACD;IAEA,SAASC,aAAaA,CAAEC,KAAK,EAAG;MAC/B,IAAK,CAAEA,KAAK,CAACC,gBAAgB,EAAG;QAC/BD,KAAK,CAACE,cAAc,CAAC,CAAC;QAEtB,MAAM;UAAEC;QAAkC,CAAC,GAAGf,WAAW,CAAC,CAAC;QAE3D,IACC,OAAOe,iCAAiC,KAAK,UAAU,EACtD;UACDA,iCAAiC,CAAE,KAAM,CAAC;QAC3C;QACAV,uBAAuB,CAAE,MAAO,CAAC;QACjCC,cAAc,CAAC,CAAC;MACjB;IACD;IAEAG,IAAI,CAACO,gBAAgB,CAAE,UAAU,EAAEL,aAAc,CAAC;IAElD,OAAO,MAAM;MACZF,IAAI,CAACQ,mBAAmB,CAAE,UAAU,EAAEN,aAAc,CAAC;IACtD,CAAC;EACF,CAAC,EACD,CAAEZ,UAAU,EAAEC,WAAW,EAAEK,uBAAuB,CACnD,CAAC;AACF","ignoreList":[]}
@@ -10,6 +10,7 @@ var _components = require("@wordpress/components");
10
10
  var _compose = require("@wordpress/compose");
11
11
  var _data = require("@wordpress/data");
12
12
  var _element = require("@wordpress/element");
13
+ var _i18n = require("@wordpress/i18n");
13
14
  var _store = require("../../store");
14
15
  var _lockUnlock = require("../../lock-unlock");
15
16
  var _jsxRuntime = require("react/jsx-runtime");
@@ -91,7 +92,23 @@ function ZoomOutSeparator({
91
92
  }),
92
93
  "data-is-insertion-point": "true",
93
94
  onDragOver: () => setIsDraggedOver(true),
94
- onDragLeave: () => setIsDraggedOver(false)
95
+ onDragLeave: () => setIsDraggedOver(false),
96
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.__unstableMotion.div, {
97
+ initial: {
98
+ opacity: 0
99
+ },
100
+ animate: {
101
+ opacity: 1
102
+ },
103
+ exit: {
104
+ opacity: 0
105
+ },
106
+ transition: {
107
+ type: 'tween',
108
+ duration: 0.1
109
+ },
110
+ children: (0, _i18n.__)('Drop pattern.')
111
+ })
95
112
  })
96
113
  });
97
114
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_compose","_data","_element","_store","_lockUnlock","_jsxRuntime","ZoomOutSeparator","clientId","rootClientId","position","isDraggedOver","setIsDraggedOver","useState","sectionRootClientId","sectionClientIds","blockInsertionPoint","blockInsertionPointVisible","useSelect","select","getBlockInsertionPoint","getBlockOrder","isBlockInsertionPointVisible","getSectionRootClientId","unlock","blockEditorStore","root","sectionRootClientIds","blockOrder","isReducedMotion","useReducedMotion","isVisible","isSectionBlock","includes","index","jsx","__unstableAnimatePresence","children","__unstableMotion","div","as","layout","initial","height","animate","exit","transition","type","duration","ease","className","clsx","onDragOver","onDragLeave"],"sources":["@wordpress/block-editor/src/components/block-list/zoom-out-separator.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { useReducedMotion } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function ZoomOutSeparator( {\n\tclientId,\n\trootClientId = '',\n\tposition = 'top',\n} ) {\n\tconst [ isDraggedOver, setIsDraggedOver ] = useState( false );\n\tconst {\n\t\tsectionRootClientId,\n\t\tsectionClientIds,\n\t\tblockInsertionPoint,\n\t\tblockInsertionPointVisible,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockInsertionPoint,\n\t\t\tgetBlockOrder,\n\t\t\tisBlockInsertionPointVisible,\n\t\t\tgetSectionRootClientId,\n\t\t} = unlock( select( blockEditorStore ) );\n\n\t\tconst root = getSectionRootClientId();\n\t\tconst sectionRootClientIds = getBlockOrder( root );\n\t\treturn {\n\t\t\tsectionRootClientId: root,\n\t\t\tsectionClientIds: sectionRootClientIds,\n\t\t\tblockOrder: getBlockOrder( root ),\n\t\t\tblockInsertionPoint: getBlockInsertionPoint(),\n\t\t\tblockInsertionPointVisible: isBlockInsertionPointVisible(),\n\t\t};\n\t}, [] );\n\n\tconst isReducedMotion = useReducedMotion();\n\n\tif ( ! clientId ) {\n\t\treturn;\n\t}\n\n\tlet isVisible = false;\n\n\tconst isSectionBlock =\n\t\trootClientId === sectionRootClientId &&\n\t\tsectionClientIds &&\n\t\tsectionClientIds.includes( clientId );\n\n\tif ( ! isSectionBlock ) {\n\t\treturn null;\n\t}\n\n\tif ( position === 'top' ) {\n\t\tisVisible =\n\t\t\tblockInsertionPointVisible &&\n\t\t\tblockInsertionPoint.index === 0 &&\n\t\t\tclientId === sectionClientIds[ blockInsertionPoint.index ];\n\t}\n\n\tif ( position === 'bottom' ) {\n\t\tisVisible =\n\t\t\tblockInsertionPointVisible &&\n\t\t\tclientId === sectionClientIds[ blockInsertionPoint.index - 1 ];\n\t}\n\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t{ isVisible && (\n\t\t\t\t<motion.div\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\tlayout={ ! isReducedMotion }\n\t\t\t\t\tinitial={ { height: 0 } }\n\t\t\t\t\tanimate={ { height: '120px' } }\n\t\t\t\t\texit={ { height: 0 } }\n\t\t\t\t\ttransition={ {\n\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\tduration: 0.2,\n\t\t\t\t\t\tease: [ 0.6, 0, 0.4, 1 ],\n\t\t\t\t\t} }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'block-editor-block-list__zoom-out-separator',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-dragged-over': isDraggedOver,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tdata-is-insertion-point=\"true\"\n\t\t\t\t\tonDragOver={ () => setIsDraggedOver( true ) }\n\t\t\t\t\tonDragLeave={ () => setIsDraggedOver( false ) }\n\t\t\t\t></motion.div>\n\t\t\t) }\n\t\t</AnimatePresence>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_components","_compose","_data","_element","_i18n","_store","_lockUnlock","_jsxRuntime","ZoomOutSeparator","clientId","rootClientId","position","isDraggedOver","setIsDraggedOver","useState","sectionRootClientId","sectionClientIds","blockInsertionPoint","blockInsertionPointVisible","useSelect","select","getBlockInsertionPoint","getBlockOrder","isBlockInsertionPointVisible","getSectionRootClientId","unlock","blockEditorStore","root","sectionRootClientIds","blockOrder","isReducedMotion","useReducedMotion","isVisible","isSectionBlock","includes","index","jsx","__unstableAnimatePresence","children","__unstableMotion","div","as","layout","initial","height","animate","exit","transition","type","duration","ease","className","clsx","onDragOver","onDragLeave","opacity","__"],"sources":["@wordpress/block-editor/src/components/block-list/zoom-out-separator.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__unstableMotion as motion,\n\t__unstableAnimatePresence as AnimatePresence,\n} from '@wordpress/components';\nimport { useReducedMotion } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport function ZoomOutSeparator( {\n\tclientId,\n\trootClientId = '',\n\tposition = 'top',\n} ) {\n\tconst [ isDraggedOver, setIsDraggedOver ] = useState( false );\n\tconst {\n\t\tsectionRootClientId,\n\t\tsectionClientIds,\n\t\tblockInsertionPoint,\n\t\tblockInsertionPointVisible,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockInsertionPoint,\n\t\t\tgetBlockOrder,\n\t\t\tisBlockInsertionPointVisible,\n\t\t\tgetSectionRootClientId,\n\t\t} = unlock( select( blockEditorStore ) );\n\n\t\tconst root = getSectionRootClientId();\n\t\tconst sectionRootClientIds = getBlockOrder( root );\n\t\treturn {\n\t\t\tsectionRootClientId: root,\n\t\t\tsectionClientIds: sectionRootClientIds,\n\t\t\tblockOrder: getBlockOrder( root ),\n\t\t\tblockInsertionPoint: getBlockInsertionPoint(),\n\t\t\tblockInsertionPointVisible: isBlockInsertionPointVisible(),\n\t\t};\n\t}, [] );\n\n\tconst isReducedMotion = useReducedMotion();\n\n\tif ( ! clientId ) {\n\t\treturn;\n\t}\n\n\tlet isVisible = false;\n\n\tconst isSectionBlock =\n\t\trootClientId === sectionRootClientId &&\n\t\tsectionClientIds &&\n\t\tsectionClientIds.includes( clientId );\n\n\tif ( ! isSectionBlock ) {\n\t\treturn null;\n\t}\n\n\tif ( position === 'top' ) {\n\t\tisVisible =\n\t\t\tblockInsertionPointVisible &&\n\t\t\tblockInsertionPoint.index === 0 &&\n\t\t\tclientId === sectionClientIds[ blockInsertionPoint.index ];\n\t}\n\n\tif ( position === 'bottom' ) {\n\t\tisVisible =\n\t\t\tblockInsertionPointVisible &&\n\t\t\tclientId === sectionClientIds[ blockInsertionPoint.index - 1 ];\n\t}\n\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t{ isVisible && (\n\t\t\t\t<motion.div\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\tlayout={ ! isReducedMotion }\n\t\t\t\t\tinitial={ { height: 0 } }\n\t\t\t\t\tanimate={ { height: '120px' } }\n\t\t\t\t\texit={ { height: 0 } }\n\t\t\t\t\ttransition={ {\n\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\tduration: 0.2,\n\t\t\t\t\t\tease: [ 0.6, 0, 0.4, 1 ],\n\t\t\t\t\t} }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'block-editor-block-list__zoom-out-separator',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'is-dragged-over': isDraggedOver,\n\t\t\t\t\t\t}\n\t\t\t\t\t) }\n\t\t\t\t\tdata-is-insertion-point=\"true\"\n\t\t\t\t\tonDragOver={ () => setIsDraggedOver( true ) }\n\t\t\t\t\tonDragLeave={ () => setIsDraggedOver( false ) }\n\t\t\t\t>\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tinitial={ { opacity: 0 } }\n\t\t\t\t\t\tanimate={ { opacity: 1 } }\n\t\t\t\t\t\texit={ { opacity: 0 } }\n\t\t\t\t\t\ttransition={ {\n\t\t\t\t\t\t\ttype: 'tween',\n\t\t\t\t\t\t\tduration: 0.1,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Drop pattern.' ) }\n\t\t\t\t\t</motion.div>\n\t\t\t\t</motion.div>\n\t\t\t) }\n\t\t</AnimatePresence>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -55,7 +55,7 @@ const getMatchingBlockByName = (block, selectedBlockName, consumedBlocks = new S
55
55
  */
56
56
  exports.getMatchingBlockByName = getMatchingBlockByName;
57
57
  const getRetainedBlockAttributes = (name, attributes) => {
58
- const contentAttributes = (0, _blocks.__experimentalGetBlockAttributesNamesByRole)(name, 'content');
58
+ const contentAttributes = (0, _blocks.getBlockAttributesNamesByRole)(name, 'content');
59
59
  if (!contentAttributes?.length) {
60
60
  return attributes;
61
61
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_blocks","require","getMatchingBlockByName","block","selectedBlockName","consumedBlocks","Set","clientId","name","innerBlocks","has","innerBlock","match","exports","getRetainedBlockAttributes","attributes","contentAttributes","getBlockAttributesNamesByRole","length","reduce","_accumulator","attribute"],"sources":["@wordpress/block-editor/src/components/block-switcher/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalGetBlockAttributesNamesByRole as getBlockAttributesNamesByRole } from '@wordpress/blocks';\n\n/**\n * Try to find a matching block by a block's name in a provided\n * block. We recurse through InnerBlocks and return the reference\n * of the matched block (it could be an InnerBlock).\n * If no match is found return nothing.\n *\n * @param {WPBlock} block The block to try to find a match.\n * @param {string} selectedBlockName The block's name to use for matching condition.\n * @param {Set} consumedBlocks A set holding the previously matched/consumed blocks.\n *\n * @return {WPBlock | undefined} The matched block if found or nothing(`undefined`).\n */\nexport const getMatchingBlockByName = (\n\tblock,\n\tselectedBlockName,\n\tconsumedBlocks = new Set()\n) => {\n\tconst { clientId, name, innerBlocks = [] } = block;\n\t// Check if block has been consumed already.\n\tif ( consumedBlocks.has( clientId ) ) {\n\t\treturn;\n\t}\n\tif ( name === selectedBlockName ) {\n\t\treturn block;\n\t}\n\t// Try to find a matching block from InnerBlocks recursively.\n\tfor ( const innerBlock of innerBlocks ) {\n\t\tconst match = getMatchingBlockByName(\n\t\t\tinnerBlock,\n\t\t\tselectedBlockName,\n\t\t\tconsumedBlocks\n\t\t);\n\t\tif ( match ) {\n\t\t\treturn match;\n\t\t}\n\t}\n};\n\n/**\n * Find and return the block attributes to retain through\n * the transformation, based on Block Type's `role:content`\n * attributes. If no `role:content` attributes exist,\n * return selected block's attributes.\n *\n * @param {string} name Block type's namespaced name.\n * @param {Object} attributes Selected block's attributes.\n * @return {Object} The block's attributes to retain.\n */\nexport const getRetainedBlockAttributes = ( name, attributes ) => {\n\tconst contentAttributes = getBlockAttributesNamesByRole( name, 'content' );\n\tif ( ! contentAttributes?.length ) {\n\t\treturn attributes;\n\t}\n\n\treturn contentAttributes.reduce( ( _accumulator, attribute ) => {\n\t\tif ( attributes[ attribute ] ) {\n\t\t\t_accumulator[ attribute ] = attributes[ attribute ];\n\t\t}\n\t\treturn _accumulator;\n\t}, {} );\n};\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,sBAAsB,GAAGA,CACrCC,KAAK,EACLC,iBAAiB,EACjBC,cAAc,GAAG,IAAIC,GAAG,CAAC,CAAC,KACtB;EACJ,MAAM;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,WAAW,GAAG;EAAG,CAAC,GAAGN,KAAK;EAClD;EACA,IAAKE,cAAc,CAACK,GAAG,CAAEH,QAAS,CAAC,EAAG;IACrC;EACD;EACA,IAAKC,IAAI,KAAKJ,iBAAiB,EAAG;IACjC,OAAOD,KAAK;EACb;EACA;EACA,KAAM,MAAMQ,UAAU,IAAIF,WAAW,EAAG;IACvC,MAAMG,KAAK,GAAGV,sBAAsB,CACnCS,UAAU,EACVP,iBAAiB,EACjBC,cACD,CAAC;IACD,IAAKO,KAAK,EAAG;MACZ,OAAOA,KAAK;IACb;EACD;AACD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATAC,OAAA,CAAAX,sBAAA,GAAAA,sBAAA;AAUO,MAAMY,0BAA0B,GAAGA,CAAEN,IAAI,EAAEO,UAAU,KAAM;EACjE,MAAMC,iBAAiB,GAAG,IAAAC,mDAA6B,EAAET,IAAI,EAAE,SAAU,CAAC;EAC1E,IAAK,CAAEQ,iBAAiB,EAAEE,MAAM,EAAG;IAClC,OAAOH,UAAU;EAClB;EAEA,OAAOC,iBAAiB,CAACG,MAAM,CAAE,CAAEC,YAAY,EAAEC,SAAS,KAAM;IAC/D,IAAKN,UAAU,CAAEM,SAAS,CAAE,EAAG;MAC9BD,YAAY,CAAEC,SAAS,CAAE,GAAGN,UAAU,CAAEM,SAAS,CAAE;IACpD;IACA,OAAOD,YAAY;EACpB,CAAC,EAAE,CAAC,CAAE,CAAC;AACR,CAAC;AAACP,OAAA,CAAAC,0BAAA,GAAAA,0BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_blocks","require","getMatchingBlockByName","block","selectedBlockName","consumedBlocks","Set","clientId","name","innerBlocks","has","innerBlock","match","exports","getRetainedBlockAttributes","attributes","contentAttributes","getBlockAttributesNamesByRole","length","reduce","_accumulator","attribute"],"sources":["@wordpress/block-editor/src/components/block-switcher/utils.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockAttributesNamesByRole } from '@wordpress/blocks';\n\n/**\n * Try to find a matching block by a block's name in a provided\n * block. We recurse through InnerBlocks and return the reference\n * of the matched block (it could be an InnerBlock).\n * If no match is found return nothing.\n *\n * @param {WPBlock} block The block to try to find a match.\n * @param {string} selectedBlockName The block's name to use for matching condition.\n * @param {Set} consumedBlocks A set holding the previously matched/consumed blocks.\n *\n * @return {WPBlock | undefined} The matched block if found or nothing(`undefined`).\n */\nexport const getMatchingBlockByName = (\n\tblock,\n\tselectedBlockName,\n\tconsumedBlocks = new Set()\n) => {\n\tconst { clientId, name, innerBlocks = [] } = block;\n\t// Check if block has been consumed already.\n\tif ( consumedBlocks.has( clientId ) ) {\n\t\treturn;\n\t}\n\tif ( name === selectedBlockName ) {\n\t\treturn block;\n\t}\n\t// Try to find a matching block from InnerBlocks recursively.\n\tfor ( const innerBlock of innerBlocks ) {\n\t\tconst match = getMatchingBlockByName(\n\t\t\tinnerBlock,\n\t\t\tselectedBlockName,\n\t\t\tconsumedBlocks\n\t\t);\n\t\tif ( match ) {\n\t\t\treturn match;\n\t\t}\n\t}\n};\n\n/**\n * Find and return the block attributes to retain through\n * the transformation, based on Block Type's `role:content`\n * attributes. If no `role:content` attributes exist,\n * return selected block's attributes.\n *\n * @param {string} name Block type's namespaced name.\n * @param {Object} attributes Selected block's attributes.\n * @return {Object} The block's attributes to retain.\n */\nexport const getRetainedBlockAttributes = ( name, attributes ) => {\n\tconst contentAttributes = getBlockAttributesNamesByRole( name, 'content' );\n\tif ( ! contentAttributes?.length ) {\n\t\treturn attributes;\n\t}\n\n\treturn contentAttributes.reduce( ( _accumulator, attribute ) => {\n\t\tif ( attributes[ attribute ] ) {\n\t\t\t_accumulator[ attribute ] = attributes[ attribute ];\n\t\t}\n\t\treturn _accumulator;\n\t}, {} );\n};\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,sBAAsB,GAAGA,CACrCC,KAAK,EACLC,iBAAiB,EACjBC,cAAc,GAAG,IAAIC,GAAG,CAAC,CAAC,KACtB;EACJ,MAAM;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,WAAW,GAAG;EAAG,CAAC,GAAGN,KAAK;EAClD;EACA,IAAKE,cAAc,CAACK,GAAG,CAAEH,QAAS,CAAC,EAAG;IACrC;EACD;EACA,IAAKC,IAAI,KAAKJ,iBAAiB,EAAG;IACjC,OAAOD,KAAK;EACb;EACA;EACA,KAAM,MAAMQ,UAAU,IAAIF,WAAW,EAAG;IACvC,MAAMG,KAAK,GAAGV,sBAAsB,CACnCS,UAAU,EACVP,iBAAiB,EACjBC,cACD,CAAC;IACD,IAAKO,KAAK,EAAG;MACZ,OAAOA,KAAK;IACb;EACD;AACD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATAC,OAAA,CAAAX,sBAAA,GAAAA,sBAAA;AAUO,MAAMY,0BAA0B,GAAGA,CAAEN,IAAI,EAAEO,UAAU,KAAM;EACjE,MAAMC,iBAAiB,GAAG,IAAAC,qCAA6B,EAAET,IAAI,EAAE,SAAU,CAAC;EAC1E,IAAK,CAAEQ,iBAAiB,EAAEE,MAAM,EAAG;IAClC,OAAOH,UAAU;EAClB;EAEA,OAAOC,iBAAiB,CAACG,MAAM,CAAE,CAAEC,YAAY,EAAEC,SAAS,KAAM;IAC/D,IAAKN,UAAU,CAAEM,SAAS,CAAE,EAAG;MAC9BD,YAAY,CAAEC,SAAS,CAAE,GAAGN,UAAU,CAAEM,SAAS,CAAE;IACpD;IACA,OAAOD,YAAY;EACpB,CAAC,EAAE,CAAC,CAAE,CAAC;AACR,CAAC;AAACP,OAAA,CAAAC,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -16,6 +16,7 @@ var _blockDraggable = _interopRequireDefault(require("../block-draggable"));
16
16
  var _blockMover = _interopRequireDefault(require("../block-mover"));
17
17
  var _shuffle = _interopRequireDefault(require("../block-toolbar/shuffle"));
18
18
  var _navigableToolbar = _interopRequireDefault(require("../navigable-toolbar"));
19
+ var _lockUnlock = require("../../lock-unlock");
19
20
  var _jsxRuntime = require("react/jsx-runtime");
20
21
  /**
21
22
  * External dependencies
@@ -93,8 +94,9 @@ function ZoomOutToolbar({
93
94
  } = selected;
94
95
  const {
95
96
  removeBlock,
96
- __unstableSetEditorMode
97
- } = (0, _data.useDispatch)(_store.store);
97
+ __unstableSetEditorMode,
98
+ resetZoomLevel
99
+ } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
98
100
  const classNames = (0, _clsx.default)('zoom-out-toolbar', {
99
101
  'is-block-moving-mode': !!blockMovingMode
100
102
  });
@@ -141,6 +143,7 @@ function ZoomOutToolbar({
141
143
  setIsInserterOpened(false);
142
144
  }
143
145
  __unstableSetEditorMode('edit');
146
+ resetZoomLevel();
144
147
  __unstableContentRef.current?.focus();
145
148
  }
146
149
  }), canRemove && !isBlockTemplatePart && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarButton, {