@wordpress/block-editor 10.0.4 → 10.0.6

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 (50) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +40 -0
  3. package/build/components/block-inspector/index.js +3 -4
  4. package/build/components/block-inspector/index.js.map +1 -1
  5. package/build/components/block-list/block.js +72 -14
  6. package/build/components/block-list/block.js.map +1 -1
  7. package/build/components/font-sizes/fluid-utils.js +208 -0
  8. package/build/components/font-sizes/fluid-utils.js.map +1 -0
  9. package/build/components/font-sizes/index.js +8 -0
  10. package/build/components/font-sizes/index.js.map +1 -1
  11. package/build/components/inserter/search-items.js +2 -17
  12. package/build/components/inserter/search-items.js.map +1 -1
  13. package/build/hooks/font-size.js +60 -0
  14. package/build/hooks/font-size.js.map +1 -1
  15. package/build/hooks/margin.js +4 -4
  16. package/build/hooks/margin.js.map +1 -1
  17. package/build/hooks/use-typography-props.js +17 -3
  18. package/build/hooks/use-typography-props.js.map +1 -1
  19. package/build-module/components/block-inspector/index.js +3 -4
  20. package/build-module/components/block-inspector/index.js.map +1 -1
  21. package/build-module/components/block-list/block.js +72 -14
  22. package/build-module/components/block-list/block.js.map +1 -1
  23. package/build-module/components/font-sizes/fluid-utils.js +197 -0
  24. package/build-module/components/font-sizes/fluid-utils.js.map +1 -0
  25. package/build-module/components/font-sizes/index.js +1 -0
  26. package/build-module/components/font-sizes/index.js.map +1 -1
  27. package/build-module/components/inserter/search-items.js +3 -17
  28. package/build-module/components/inserter/search-items.js.map +1 -1
  29. package/build-module/hooks/font-size.js +59 -1
  30. package/build-module/hooks/font-size.js.map +1 -1
  31. package/build-module/hooks/margin.js +4 -4
  32. package/build-module/hooks/margin.js.map +1 -1
  33. package/build-module/hooks/use-typography-props.js +17 -4
  34. package/build-module/hooks/use-typography-props.js.map +1 -1
  35. package/build-style/style-rtl.css +61 -106
  36. package/build-style/style.css +61 -106
  37. package/package.json +3 -4
  38. package/src/components/block-inspector/index.js +4 -7
  39. package/src/components/block-list/block.js +111 -7
  40. package/src/components/block-list/style.scss +85 -133
  41. package/src/components/button-block-appender/style.scss +3 -1
  42. package/src/components/font-sizes/fluid-utils.js +221 -0
  43. package/src/components/font-sizes/index.js +1 -0
  44. package/src/components/font-sizes/test/fluid-utils.js +168 -0
  45. package/src/components/inserter/search-items.js +3 -15
  46. package/src/components/inserter/test/search-items.js +4 -0
  47. package/src/hooks/font-size.js +75 -0
  48. package/src/hooks/margin.js +4 -4
  49. package/src/hooks/test/use-typography-props.js +22 -0
  50. package/src/hooks/use-typography-props.js +18 -3
@@ -15,6 +15,8 @@ var _style = require("./style");
15
15
 
16
16
  var _fontSizes = require("../components/font-sizes");
17
17
 
18
+ var _fluidUtils = require("../components/font-sizes/fluid-utils");
19
+
18
20
  /**
19
21
  * External dependencies
20
22
  */
@@ -30,14 +32,26 @@ var _fontSizes = require("../components/font-sizes");
30
32
  * Provides the CSS class names and inline styles for a block's typography support
31
33
  * attributes.
32
34
  *
33
- * @param {Object} attributes Block attributes.
35
+ * @param {Object} attributes Block attributes.
36
+ * @param {boolean} isFluidFontSizeActive Whether the function should try to convert font sizes to fluid values.
34
37
  *
35
38
  * @return {Object} Typography block support derived CSS classes & styles.
36
39
  */
37
- function getTypographyClassesAndStyles(attributes) {
40
+ function getTypographyClassesAndStyles(attributes, isFluidFontSizeActive) {
38
41
  var _attributes$style;
39
42
 
40
- const typographyStyles = (attributes === null || attributes === void 0 ? void 0 : (_attributes$style = attributes.style) === null || _attributes$style === void 0 ? void 0 : _attributes$style.typography) || {};
43
+ let typographyStyles = (attributes === null || attributes === void 0 ? void 0 : (_attributes$style = attributes.style) === null || _attributes$style === void 0 ? void 0 : _attributes$style.typography) || {};
44
+
45
+ if (isFluidFontSizeActive) {
46
+ var _attributes$style2, _attributes$style2$ty;
47
+
48
+ typographyStyles = { ...typographyStyles,
49
+ fontSize: (0, _fluidUtils.getComputedFluidTypographyValue)({
50
+ fontSize: attributes === null || attributes === void 0 ? void 0 : (_attributes$style2 = attributes.style) === null || _attributes$style2 === void 0 ? void 0 : (_attributes$style2$ty = _attributes$style2.typography) === null || _attributes$style2$ty === void 0 ? void 0 : _attributes$style2$ty.fontSize
51
+ })
52
+ };
53
+ }
54
+
41
55
  const style = (0, _style.getInlineStyles)({
42
56
  typography: typographyStyles
43
57
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/hooks/use-typography-props.js"],"names":["getTypographyClassesAndStyles","attributes","typographyStyles","style","typography","fontFamilyClassName","fontFamily","className","fontSize"],"mappings":";;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AAVA;AACA;AACA;;AAIA;AACA;AACA;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,6BAAT,CAAwCC,UAAxC,EAAqD;AAAA;;AAC3D,QAAMC,gBAAgB,GAAG,CAAAD,UAAU,SAAV,IAAAA,UAAU,WAAV,iCAAAA,UAAU,CAAEE,KAAZ,wEAAmBC,UAAnB,KAAiC,EAA1D;AACA,QAAMD,KAAK,GAAG,4BAAiB;AAAEC,IAAAA,UAAU,EAAEF;AAAd,GAAjB,CAAd;AACA,QAAMG,mBAAmB,GAAG,CAAC,EAAEJ,UAAF,aAAEA,UAAF,eAAEA,UAAU,CAAEK,UAAd,CAAD,GACxB,OAAO,uBAAWL,UAAU,CAACK,UAAtB,CAAoC,cADnB,GAEzB,EAFH;AAIA,QAAMC,SAAS,GAAG,yBACjBF,mBADiB,EAEjB,iCAAkBJ,UAAlB,aAAkBA,UAAlB,uBAAkBA,UAAU,CAAEO,QAA9B,CAFiB,CAAlB;AAKA,SAAO;AACND,IAAAA,SADM;AAENJ,IAAAA;AAFM,GAAP;AAIA","sourcesContent":["/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * Internal dependencies\n */\nimport { getInlineStyles } from './style';\nimport { getFontSizeClass } from '../components/font-sizes';\n\n// This utility is intended to assist where the serialization of the typography\n// block support is being skipped for a block but the typography related CSS\n// styles still need to be generated so they can be applied to inner elements.\n\n/**\n * Provides the CSS class names and inline styles for a block's typography support\n * attributes.\n *\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Typography block support derived CSS classes & styles.\n */\nexport function getTypographyClassesAndStyles( attributes ) {\n\tconst typographyStyles = attributes?.style?.typography || {};\n\tconst style = getInlineStyles( { typography: typographyStyles } );\n\tconst fontFamilyClassName = !! attributes?.fontFamily\n\t\t? `has-${ kebabCase( attributes.fontFamily ) }-font-family`\n\t\t: '';\n\n\tconst className = classnames(\n\t\tfontFamilyClassName,\n\t\tgetFontSizeClass( attributes?.fontSize )\n\t);\n\n\treturn {\n\t\tclassName,\n\t\tstyle,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/hooks/use-typography-props.js"],"names":["getTypographyClassesAndStyles","attributes","isFluidFontSizeActive","typographyStyles","style","typography","fontSize","fontFamilyClassName","fontFamily","className"],"mappings":";;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AACA;;AAXA;AACA;AACA;;AAIA;AACA;AACA;AAKA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,6BAAT,CACNC,UADM,EAENC,qBAFM,EAGL;AAAA;;AACD,MAAIC,gBAAgB,GAAG,CAAAF,UAAU,SAAV,IAAAA,UAAU,WAAV,iCAAAA,UAAU,CAAEG,KAAZ,wEAAmBC,UAAnB,KAAiC,EAAxD;;AAEA,MAAKH,qBAAL,EAA6B;AAAA;;AAC5BC,IAAAA,gBAAgB,GAAG,EAClB,GAAGA,gBADe;AAElBG,MAAAA,QAAQ,EAAE,iDAAiC;AAC1CA,QAAAA,QAAQ,EAAEL,UAAF,aAAEA,UAAF,6CAAEA,UAAU,CAAEG,KAAd,gFAAE,mBAAmBC,UAArB,0DAAE,sBAA+BC;AADC,OAAjC;AAFQ,KAAnB;AAMA;;AAED,QAAMF,KAAK,GAAG,4BAAiB;AAAEC,IAAAA,UAAU,EAAEF;AAAd,GAAjB,CAAd;AACA,QAAMI,mBAAmB,GAAG,CAAC,EAAEN,UAAF,aAAEA,UAAF,eAAEA,UAAU,CAAEO,UAAd,CAAD,GACxB,OAAO,uBAAWP,UAAU,CAACO,UAAtB,CAAoC,cADnB,GAEzB,EAFH;AAIA,QAAMC,SAAS,GAAG,yBACjBF,mBADiB,EAEjB,iCAAkBN,UAAlB,aAAkBA,UAAlB,uBAAkBA,UAAU,CAAEK,QAA9B,CAFiB,CAAlB;AAKA,SAAO;AACNG,IAAAA,SADM;AAENL,IAAAA;AAFM,GAAP;AAIA","sourcesContent":["/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * Internal dependencies\n */\nimport { getInlineStyles } from './style';\nimport { getFontSizeClass } from '../components/font-sizes';\nimport { getComputedFluidTypographyValue } from '../components/font-sizes/fluid-utils';\n\n// This utility is intended to assist where the serialization of the typography\n// block support is being skipped for a block but the typography related CSS\n// styles still need to be generated so they can be applied to inner elements.\n\n/**\n * Provides the CSS class names and inline styles for a block's typography support\n * attributes.\n *\n * @param {Object} attributes Block attributes.\n * @param {boolean} isFluidFontSizeActive Whether the function should try to convert font sizes to fluid values.\n *\n * @return {Object} Typography block support derived CSS classes & styles.\n */\nexport function getTypographyClassesAndStyles(\n\tattributes,\n\tisFluidFontSizeActive\n) {\n\tlet typographyStyles = attributes?.style?.typography || {};\n\n\tif ( isFluidFontSizeActive ) {\n\t\ttypographyStyles = {\n\t\t\t...typographyStyles,\n\t\t\tfontSize: getComputedFluidTypographyValue( {\n\t\t\t\tfontSize: attributes?.style?.typography?.fontSize,\n\t\t\t} ),\n\t\t};\n\t}\n\n\tconst style = getInlineStyles( { typography: typographyStyles } );\n\tconst fontFamilyClassName = !! attributes?.fontFamily\n\t\t? `has-${ kebabCase( attributes.fontFamily ) }-font-family`\n\t\t: '';\n\n\tconst className = classnames(\n\t\tfontFamilyClassName,\n\t\tgetFontSizeClass( attributes?.fontSize )\n\t);\n\n\treturn {\n\t\tclassName,\n\t\tstyle,\n\t};\n}\n"]}
@@ -26,7 +26,7 @@ import BlockIcon from '../block-icon';
26
26
  function useContentBlocks(blockTypes, block) {
27
27
  const contenBlocksObjectAux = useMemo(() => {
28
28
  return blockTypes.reduce((result, blockType) => {
29
- if (Object.entries(blockType.attributes).some(_ref => {
29
+ if (blockType.name !== 'core/list-item' && Object.entries(blockType.attributes).some(_ref => {
30
30
  let [, {
31
31
  __experimentalRole
32
32
  }] = _ref;
@@ -136,8 +136,7 @@ const BlockInspector = _ref5 => {
136
136
  getSelectedBlockClientId,
137
137
  getSelectedBlockCount,
138
138
  getBlockName,
139
- __unstableGetContentLockingParent,
140
- getTemplateLock
139
+ __unstableGetContentLockingParent
141
140
  } = select(blockEditorStore);
142
141
 
143
142
  const _selectedBlockClientId = getSelectedBlockClientId();
@@ -151,7 +150,7 @@ const BlockInspector = _ref5 => {
151
150
  selectedBlockClientId: _selectedBlockClientId,
152
151
  selectedBlockName: _selectedBlockName,
153
152
  blockType: _blockType,
154
- topLevelLockedBlock: getTemplateLock(_selectedBlockClientId) === 'contentOnly' ? _selectedBlockClientId : __unstableGetContentLockingParent(_selectedBlockClientId)
153
+ topLevelLockedBlock: __unstableGetContentLockingParent(_selectedBlockClientId)
155
154
  };
156
155
  }, []);
157
156
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-inspector/index.js"],"names":["__","getBlockType","getUnregisteredTypeHandlerName","hasBlockSupport","store","blocksStore","PanelBody","__experimentalUseSlot","useSlot","FlexItem","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","useSelect","useDispatch","useMemo","useCallback","SkipToSelectedBlock","BlockCard","default","InspectorControls","InspectorAdvancedControls","BlockStyles","MultiSelectionInspector","DefaultStylePicker","BlockVariationTransforms","useBlockDisplayInformation","blockEditorStore","BlockIcon","useContentBlocks","blockTypes","block","contenBlocksObjectAux","reduce","result","blockType","Object","entries","attributes","some","__experimentalRole","name","isContentBlock","blockName","getContentBlocks","blocks","push","innerBlocks","BlockNavigationButton","selectedBlock","selectBlock","find","isSelected","clientId","icon","title","BlockInspectorLockedBlocks","topLevelLockedBlock","select","getBlockTypes","getBlock","getSelectedBlock","blockInformation","contentBlocks","map","contentBlock","BlockInspector","showNoBlockSelectedMessage","count","selectedBlockName","selectedBlockClientId","getSelectedBlockClientId","getSelectedBlockCount","getBlockName","__unstableGetContentLockingParent","getTemplateLock","_selectedBlockClientId","_selectedBlockName","_blockType","isSelectedBlockUnregistered","BlockInspectorSingleBlock","hasBlockStyles","getBlockStyles","blockStyles","length","AdvancedControls","slot","slotName","hasFills","Boolean","fills"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SACCC,YADD,EAECC,8BAFD,EAGCC,eAHD,EAICC,KAAK,IAAIC,WAJV,QAKO,mBALP;AAMA,SACCC,SADD,EAECC,qBAAqB,IAAIC,OAF1B,EAGCC,QAHD,EAICC,oBAAoB,IAAIC,MAJzB,EAKCC,oBAAoB,IAAIC,MALzB,EAMCC,MAND,QAOO,uBAPP;AAQA,SAASC,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SAASC,OAAT,EAAkBC,WAAlB,QAAqC,oBAArC;AAEA;AACA;AACA;;AACA,OAAOC,mBAAP,MAAgC,2BAAhC;AACA,OAAOC,SAAP,MAAsB,eAAtB;AACA,SACCC,OAAO,IAAIC,iBADZ,EAECC,yBAFD,QAGO,uBAHP;AAIA,OAAOC,WAAP,MAAwB,iBAAxB;AACA,OAAOC,uBAAP,MAAoC,8BAApC;AACA,OAAOC,kBAAP,MAA+B,yBAA/B;AACA,OAAOC,wBAAP,MAAqC,+BAArC;AACA,OAAOC,0BAAP,MAAuC,kCAAvC;AACA,SAASxB,KAAK,IAAIyB,gBAAlB,QAA0C,aAA1C;AACA,OAAOC,SAAP,MAAsB,eAAtB;;AAEA,SAASC,gBAAT,CAA2BC,UAA3B,EAAuCC,KAAvC,EAA+C;AAC9C,QAAMC,qBAAqB,GAAGjB,OAAO,CAAE,MAAM;AAC5C,WAAOe,UAAU,CAACG,MAAX,CAAmB,CAAEC,MAAF,EAAUC,SAAV,KAAyB;AAClD,UACCC,MAAM,CAACC,OAAP,CAAgBF,SAAS,CAACG,UAA1B,EAAuCC,IAAvC,CACC;AAAA,YAAE,GAAI;AAAEC,UAAAA;AAAF,SAAJ,CAAF;AAAA,eACCA,kBAAkB,KAAK,SADxB;AAAA,OADD,CADD,EAKE;AACDN,QAAAA,MAAM,CAAEC,SAAS,CAACM,IAAZ,CAAN,GAA2B,IAA3B;AACA;;AACD,aAAOP,MAAP;AACA,KAVM,EAUJ,EAVI,CAAP;AAWA,GAZoC,EAYlC,CAAEJ,UAAF,CAZkC,CAArC;AAaA,QAAMY,cAAc,GAAG1B,WAAW,CAC/B2B,SAAF,IAAiB;AAChB,WAAO,CAAC,CAAEX,qBAAqB,CAAEW,SAAF,CAA/B;AACA,GAHgC,EAIjC,CAAEb,UAAF,CAJiC,CAAlC;AAMA,SAAOf,OAAO,CAAE,MAAM;AACrB,WAAO6B,gBAAgB,CAAE,CAAEb,KAAF,CAAF,EAAaW,cAAb,CAAvB;AACA,GAFa,EAEX,CAAEX,KAAF,EAASW,cAAT,CAFW,CAAd;AAGA;;AAED,SAASE,gBAAT,CAA2BC,MAA3B,EAAmCH,cAAnC,EAAoD;AACnD,QAAMR,MAAM,GAAG,EAAf;;AACA,OAAM,MAAMH,KAAZ,IAAqBc,MAArB,EAA8B;AAC7B,QAAKH,cAAc,CAAEX,KAAK,CAACU,IAAR,CAAnB,EAAoC;AACnCP,MAAAA,MAAM,CAACY,IAAP,CAAaf,KAAb;AACA;;AACDG,IAAAA,MAAM,CAACY,IAAP,CAAa,GAAGF,gBAAgB,CAAEb,KAAK,CAACgB,WAAR,EAAqBL,cAArB,CAAhC;AACA;;AACD,SAAOR,MAAP;AACA;;AAED,SAASc,qBAAT,QAAuE;AAAA,MAAvC;AAAElB,IAAAA,UAAF;AAAcC,IAAAA,KAAd;AAAqBkB,IAAAA;AAArB,GAAuC;AACtE,QAAM;AAAEC,IAAAA;AAAF,MAAkBpC,WAAW,CAAEa,gBAAF,CAAnC;AACA,QAAMQ,SAAS,GAAGL,UAAU,CAACqB,IAAX,CAAiB;AAAA,QAAE;AAAEV,MAAAA;AAAF,KAAF;AAAA,WAAgBA,IAAI,KAAKV,KAAK,CAACU,IAA/B;AAAA,GAAjB,CAAlB;AACA,QAAMW,UAAU,GACfH,aAAa,IAAIA,aAAa,CAACI,QAAd,KAA2BtB,KAAK,CAACsB,QADnD;AAEA,SACC,cAAC,MAAD;AACC,IAAA,SAAS,EAAGD,UADb;AAEC,IAAA,OAAO,EAAG,MAAMF,WAAW,CAAEnB,KAAK,CAACsB,QAAR;AAF5B,KAIC,cAAC,MAAD;AAAQ,IAAA,OAAO,EAAC;AAAhB,KACC,cAAC,SAAD;AAAW,IAAA,IAAI,EAAGlB,SAAS,CAACmB;AAA5B,IADD,EAEC,cAAC,QAAD,QAAYnB,SAAS,CAACoB,KAAtB,CAFD,CAJD,CADD;AAWA;;AAED,SAASC,0BAAT,QAA+D;AAAA,MAA1B;AAAEC,IAAAA;AAAF,GAA0B;AAC9D,QAAM;AAAE3B,IAAAA,UAAF;AAAcC,IAAAA,KAAd;AAAqBkB,IAAAA;AAArB,MAAuCpC,SAAS,CACnD6C,MAAF,IAAc;AACb,WAAO;AACN5B,MAAAA,UAAU,EAAE4B,MAAM,CAAEvD,WAAF,CAAN,CAAsBwD,aAAtB,EADN;AAEN5B,MAAAA,KAAK,EAAE2B,MAAM,CAAE/B,gBAAF,CAAN,CAA2BiC,QAA3B,CACNH,mBADM,CAFD;AAKNR,MAAAA,aAAa,EAAES,MAAM,CAAE/B,gBAAF,CAAN,CAA2BkC,gBAA3B;AALT,KAAP;AAOA,GAToD,EAUrD,CAAEJ,mBAAF,CAVqD,CAAtD;AAYA,QAAMK,gBAAgB,GAAGpC,0BAA0B,CAAE+B,mBAAF,CAAnD;AACA,QAAMM,aAAa,GAAGlC,gBAAgB,CAAEC,UAAF,EAAcC,KAAd,CAAtC;AACA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,SAAD,EAAgB+B,gBAAhB,CADD,EAEC,cAAC,wBAAD;AAA0B,IAAA,aAAa,EAAGL;AAA1C,IAFD,EAGC,cAAC,MAAD;AACC,IAAA,OAAO,EAAG,CADX;AAEC,IAAA,OAAO,EAAG,CAFX;AAGC,IAAA,SAAS,EAAC;AAHX,KAKC;AAAI,IAAA,SAAS,EAAC;AAAd,KACG3D,EAAE,CAAE,SAAF,CADL,CALD,EAQGiE,aAAa,CAACC,GAAd,CAAqBC,YAAF,IACpB,cAAC,qBAAD;AACC,IAAA,aAAa,EAAGhB,aADjB;AAEC,IAAA,GAAG,EAAGgB,YAAY,CAACZ,QAFpB;AAGC,IAAA,KAAK,EAAGY,YAHT;AAIC,IAAA,UAAU,EAAGnC;AAJd,IADC,CARH,CAHD,CADD;AAuBA;;AAED,MAAMoC,cAAc,GAAG,SAA6C;AAAA,MAA3C;AAAEC,IAAAA,0BAA0B,GAAG;AAA/B,GAA2C;AACnE,QAAM;AACLC,IAAAA,KADK;AAELC,IAAAA,iBAFK;AAGLC,IAAAA,qBAHK;AAILnC,IAAAA,SAJK;AAKLsB,IAAAA;AALK,MAMF5C,SAAS,CAAI6C,MAAF,IAAc;AAC5B,UAAM;AACLa,MAAAA,wBADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA,YAHK;AAILC,MAAAA,iCAJK;AAKLC,MAAAA;AALK,QAMFjB,MAAM,CAAE/B,gBAAF,CANV;;AAQA,UAAMiD,sBAAsB,GAAGL,wBAAwB,EAAvD;;AACA,UAAMM,kBAAkB,GACvBD,sBAAsB,IAAIH,YAAY,CAAEG,sBAAF,CADvC;;AAEA,UAAME,UAAU,GACfD,kBAAkB,IAAI9E,YAAY,CAAE8E,kBAAF,CADnC;;AAGA,WAAO;AACNT,MAAAA,KAAK,EAAEI,qBAAqB,EADtB;AAENF,MAAAA,qBAAqB,EAAEM,sBAFjB;AAGNP,MAAAA,iBAAiB,EAAEQ,kBAHb;AAIN1C,MAAAA,SAAS,EAAE2C,UAJL;AAKNrB,MAAAA,mBAAmB,EAClBkB,eAAe,CAAEC,sBAAF,CAAf,KAA8C,aAA9C,GACGA,sBADH,GAEGF,iCAAiC,CACjCE,sBADiC;AAR/B,KAAP;AAYA,GA3BY,EA2BV,EA3BU,CANb;;AAmCA,MAAKR,KAAK,GAAG,CAAb,EAAiB;AAChB,WACC;AAAK,MAAA,SAAS,EAAC;AAAf,OACC,cAAC,uBAAD,OADD,EAEC,cAAC,iBAAD,CAAmB,IAAnB,OAFD,EAGC,cAAC,iBAAD,CAAmB,IAAnB;AACC,MAAA,mBAAmB,EAAC,OADrB;AAEC,MAAA,KAAK,EAAGtE,EAAE,CAAE,OAAF,CAFX;AAGC,MAAA,SAAS,EAAC;AAHX,MAHD,EAQC,cAAC,iBAAD,CAAmB,IAAnB;AACC,MAAA,mBAAmB,EAAC,YADrB;AAEC,MAAA,KAAK,EAAGA,EAAE,CAAE,YAAF;AAFX,MARD,EAYC,cAAC,iBAAD,CAAmB,IAAnB;AACC,MAAA,mBAAmB,EAAC,YADrB;AAEC,MAAA,KAAK,EAAGA,EAAE,CAAE,YAAF;AAFX,MAZD,EAgBC,cAAC,iBAAD,CAAmB,IAAnB;AACC,MAAA,mBAAmB,EAAC,QADrB;AAEC,MAAA,KAAK,EAAGA,EAAE,CAAE,QAAF;AAFX,MAhBD,CADD;AAuBA;;AAED,QAAMiF,2BAA2B,GAChCV,iBAAiB,KAAKrE,8BAA8B,EADrD;AAGA;AACD;AACA;AACA;;AACC,MACC,CAAEmC,SAAF,IACA,CAAEmC,qBADF,IAEAS,2BAHD,EAIE;AACD,QAAKZ,0BAAL,EAAkC;AACjC,aACC;AAAM,QAAA,SAAS,EAAC;AAAhB,SACGrE,EAAE,CAAE,oBAAF,CADL,CADD;AAKA;;AACD,WAAO,IAAP;AACA;;AACD,MAAK2D,mBAAL,EAA2B;AAC1B,WACC,cAAC,0BAAD;AACC,MAAA,mBAAmB,EAAGA;AADvB,MADD;AAKA;;AACD,SACC,cAAC,yBAAD;AACC,IAAA,QAAQ,EAAGa,qBADZ;AAEC,IAAA,SAAS,EAAGnC,SAAS,CAACM;AAFvB,IADD;AAMA,CAhGD;;AAkGA,MAAMuC,yBAAyB,GAAG,SAA+B;AAAA,MAA7B;AAAE3B,IAAAA,QAAF;AAAYV,IAAAA;AAAZ,GAA6B;AAChE,QAAMsC,cAAc,GAAGpE,SAAS,CAC7B6C,MAAF,IAAc;AACb,UAAM;AAAEwB,MAAAA;AAAF,QAAqBxB,MAAM,CAAEvD,WAAF,CAAjC;AACA,UAAMgF,WAAW,GAAGD,cAAc,CAAEvC,SAAF,CAAlC;AACA,WAAOwC,WAAW,IAAIA,WAAW,CAACC,MAAZ,GAAqB,CAA3C;AACA,GAL8B,EAM/B,CAAEzC,SAAF,CAN+B,CAAhC;AAQA,QAAMmB,gBAAgB,GAAGpC,0BAA0B,CAAE2B,QAAF,CAAnD;AACA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,cAAC,SAAD,EAAgBS,gBAAhB,CADD,EAEC,cAAC,wBAAD;AAA0B,IAAA,aAAa,EAAGT;AAA1C,IAFD,EAGG4B,cAAc,IACf,2BACC,cAAC,SAAD;AAAW,IAAA,KAAK,EAAGnF,EAAE,CAAE,QAAF;AAArB,KACC,cAAC,WAAD;AACC,IAAA,KAAK,EAAC,sBADP;AAEC,IAAA,QAAQ,EAAGuD;AAFZ,IADD,EAKGpD,eAAe,CAChB0C,SADgB,EAEhB,oBAFgB,EAGhB,IAHgB,CAAf,IAIG,cAAC,kBAAD;AAAoB,IAAA,SAAS,EAAGA;AAAhC,IATN,CADD,CAJF,EAkBC,cAAC,iBAAD,CAAmB,IAAnB,OAlBD,EAmBC,cAAC,iBAAD,CAAmB,IAAnB;AACC,IAAA,mBAAmB,EAAC,OADrB;AAEC,IAAA,KAAK,EAAG7C,EAAE,CAAE,OAAF,CAFX;AAGC,IAAA,SAAS,EAAC;AAHX,IAnBD,EAwBC,cAAC,iBAAD,CAAmB,IAAnB;AACC,IAAA,mBAAmB,EAAC,YADrB;AAEC,IAAA,KAAK,EAAGA,EAAE,CAAE,YAAF;AAFX,IAxBD,EA4BC,cAAC,iBAAD,CAAmB,IAAnB;AACC,IAAA,mBAAmB,EAAC,YADrB;AAEC,IAAA,KAAK,EAAGA,EAAE,CAAE,YAAF;AAFX,IA5BD,EAgCC,cAAC,iBAAD,CAAmB,IAAnB;AACC,IAAA,mBAAmB,EAAC,QADrB;AAEC,IAAA,KAAK,EAAGA,EAAE,CAAE,QAAF;AAFX,IAhCD,EAoCC,2BACC,cAAC,gBAAD,OADD,CApCD,EAuCC,cAAC,mBAAD;AAAqB,IAAA,GAAG,EAAC;AAAzB,IAvCD,CADD;AA2CA,CArDD;;AAuDA,MAAMuF,gBAAgB,GAAG,MAAM;AAC9B,QAAMC,IAAI,GAAGhF,OAAO,CAAEe,yBAAyB,CAACkE,QAA5B,CAApB;AACA,QAAMC,QAAQ,GAAGC,OAAO,CAAEH,IAAI,CAACI,KAAL,IAAcJ,IAAI,CAACI,KAAL,CAAWN,MAA3B,CAAxB;;AAEA,MAAK,CAAEI,QAAP,EAAkB;AACjB,WAAO,IAAP;AACA;;AAED,SACC,cAAC,SAAD;AACC,IAAA,SAAS,EAAC,wCADX;AAEC,IAAA,KAAK,EAAG1F,EAAE,CAAE,UAAF,CAFX;AAGC,IAAA,WAAW,EAAG;AAHf,KAKC,cAAC,iBAAD,CAAmB,IAAnB;AAAwB,IAAA,mBAAmB,EAAC;AAA5C,IALD,CADD;AASA,CAjBD;AAmBA;AACA;AACA;;;AACA,eAAeoE,cAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockType,\n\tgetUnregisteredTypeHandlerName,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport {\n\tPanelBody,\n\t__experimentalUseSlot as useSlot,\n\tFlexItem,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SkipToSelectedBlock from '../skip-to-selected-block';\nimport BlockCard from '../block-card';\nimport {\n\tdefault as InspectorControls,\n\tInspectorAdvancedControls,\n} from '../inspector-controls';\nimport BlockStyles from '../block-styles';\nimport MultiSelectionInspector from '../multi-selection-inspector';\nimport DefaultStylePicker from '../default-style-picker';\nimport BlockVariationTransforms from '../block-variation-transforms';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\n\nfunction useContentBlocks( blockTypes, block ) {\n\tconst contenBlocksObjectAux = useMemo( () => {\n\t\treturn blockTypes.reduce( ( result, blockType ) => {\n\t\t\tif (\n\t\t\t\tObject.entries( blockType.attributes ).some(\n\t\t\t\t\t( [ , { __experimentalRole } ] ) =>\n\t\t\t\t\t\t__experimentalRole === 'content'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tresult[ blockType.name ] = true;\n\t\t\t}\n\t\t\treturn result;\n\t\t}, {} );\n\t}, [ blockTypes ] );\n\tconst isContentBlock = useCallback(\n\t\t( blockName ) => {\n\t\t\treturn !! contenBlocksObjectAux[ blockName ];\n\t\t},\n\t\t[ blockTypes ]\n\t);\n\treturn useMemo( () => {\n\t\treturn getContentBlocks( [ block ], isContentBlock );\n\t}, [ block, isContentBlock ] );\n}\n\nfunction getContentBlocks( blocks, isContentBlock ) {\n\tconst result = [];\n\tfor ( const block of blocks ) {\n\t\tif ( isContentBlock( block.name ) ) {\n\t\t\tresult.push( block );\n\t\t}\n\t\tresult.push( ...getContentBlocks( block.innerBlocks, isContentBlock ) );\n\t}\n\treturn result;\n}\n\nfunction BlockNavigationButton( { blockTypes, block, selectedBlock } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\tconst blockType = blockTypes.find( ( { name } ) => name === block.name );\n\tconst isSelected =\n\t\tselectedBlock && selectedBlock.clientId === block.clientId;\n\treturn (\n\t\t<Button\n\t\t\tisPressed={ isSelected }\n\t\t\tonClick={ () => selectBlock( block.clientId ) }\n\t\t>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<BlockIcon icon={ blockType.icon } />\n\t\t\t\t<FlexItem>{ blockType.title }</FlexItem>\n\t\t\t</HStack>\n\t\t</Button>\n\t);\n}\n\nfunction BlockInspectorLockedBlocks( { topLevelLockedBlock } ) {\n\tconst { blockTypes, block, selectedBlock } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tblockTypes: select( blocksStore ).getBlockTypes(),\n\t\t\t\tblock: select( blockEditorStore ).getBlock(\n\t\t\t\t\ttopLevelLockedBlock\n\t\t\t\t),\n\t\t\t\tselectedBlock: select( blockEditorStore ).getSelectedBlock(),\n\t\t\t};\n\t\t},\n\t\t[ topLevelLockedBlock ]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( topLevelLockedBlock );\n\tconst contentBlocks = useContentBlocks( blockTypes, block );\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard { ...blockInformation } />\n\t\t\t<BlockVariationTransforms blockClientId={ topLevelLockedBlock } />\n\t\t\t<VStack\n\t\t\t\tspacing={ 1 }\n\t\t\t\tpadding={ 4 }\n\t\t\t\tclassName=\"block-editor-block-inspector__block-buttons-container\"\n\t\t\t>\n\t\t\t\t<h2 className=\"block-editor-block-card__title\">\n\t\t\t\t\t{ __( 'Content' ) }\n\t\t\t\t</h2>\n\t\t\t\t{ contentBlocks.map( ( contentBlock ) => (\n\t\t\t\t\t<BlockNavigationButton\n\t\t\t\t\t\tselectedBlock={ selectedBlock }\n\t\t\t\t\t\tkey={ contentBlock.clientId }\n\t\t\t\t\t\tblock={ contentBlock }\n\t\t\t\t\t\tblockTypes={ blockTypes }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nconst BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {\n\tconst {\n\t\tcount,\n\t\tselectedBlockName,\n\t\tselectedBlockClientId,\n\t\tblockType,\n\t\ttopLevelLockedBlock,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetSelectedBlockCount,\n\t\t\tgetBlockName,\n\t\t\t__unstableGetContentLockingParent,\n\t\t\tgetTemplateLock,\n\t\t} = select( blockEditorStore );\n\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst _selectedBlockName =\n\t\t\t_selectedBlockClientId && getBlockName( _selectedBlockClientId );\n\t\tconst _blockType =\n\t\t\t_selectedBlockName && getBlockType( _selectedBlockName );\n\n\t\treturn {\n\t\t\tcount: getSelectedBlockCount(),\n\t\t\tselectedBlockClientId: _selectedBlockClientId,\n\t\t\tselectedBlockName: _selectedBlockName,\n\t\t\tblockType: _blockType,\n\t\t\ttopLevelLockedBlock:\n\t\t\t\tgetTemplateLock( _selectedBlockClientId ) === 'contentOnly'\n\t\t\t\t\t? _selectedBlockClientId\n\t\t\t\t\t: __unstableGetContentLockingParent(\n\t\t\t\t\t\t\t_selectedBlockClientId\n\t\t\t\t\t ),\n\t\t};\n\t}, [] );\n\n\tif ( count > 1 ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t\t<InspectorControls.Slot />\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"color\"\n\t\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"typography\"\n\t\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"dimensions\"\n\t\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"border\"\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst isSelectedBlockUnregistered =\n\t\tselectedBlockName === getUnregisteredTypeHandlerName();\n\n\t/*\n\t * If the selected block is of an unregistered type, avoid showing it as an actual selection\n\t * because we want the user to focus on the unregistered block warning, not block settings.\n\t */\n\tif (\n\t\t! blockType ||\n\t\t! selectedBlockClientId ||\n\t\tisSelectedBlockUnregistered\n\t) {\n\t\tif ( showNoBlockSelectedMessage ) {\n\t\t\treturn (\n\t\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif ( topLevelLockedBlock ) {\n\t\treturn (\n\t\t\t<BlockInspectorLockedBlocks\n\t\t\t\ttopLevelLockedBlock={ topLevelLockedBlock }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<BlockInspectorSingleBlock\n\t\t\tclientId={ selectedBlockClientId }\n\t\t\tblockName={ blockType.name }\n\t\t/>\n\t);\n};\n\nconst BlockInspectorSingleBlock = ( { clientId, blockName } ) => {\n\tconst hasBlockStyles = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\tconst blockStyles = getBlockStyles( blockName );\n\t\t\treturn blockStyles && blockStyles.length > 0;\n\t\t},\n\t\t[ blockName ]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard { ...blockInformation } />\n\t\t\t<BlockVariationTransforms blockClientId={ clientId } />\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<div>\n\t\t\t\t\t<PanelBody title={ __( 'Styles' ) }>\n\t\t\t\t\t\t<BlockStyles\n\t\t\t\t\t\t\tscope=\"core/block-inspector\"\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ hasBlockSupport(\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\t'defaultStylePicker',\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t) && <DefaultStylePicker blockName={ blockName } /> }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<InspectorControls.Slot />\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"color\"\n\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"typography\"\n\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"dimensions\"\n\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"border\"\n\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t/>\n\t\t\t<div>\n\t\t\t\t<AdvancedControls />\n\t\t\t</div>\n\t\t\t<SkipToSelectedBlock key=\"back\" />\n\t\t</div>\n\t);\n};\n\nconst AdvancedControls = () => {\n\tconst slot = useSlot( InspectorAdvancedControls.slotName );\n\tconst hasFills = Boolean( slot.fills && slot.fills.length );\n\n\tif ( ! hasFills ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\tclassName=\"block-editor-block-inspector__advanced\"\n\t\t\ttitle={ __( 'Advanced' ) }\n\t\t\tinitialOpen={ false }\n\t\t>\n\t\t\t<InspectorControls.Slot __experimentalGroup=\"advanced\" />\n\t\t</PanelBody>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-inspector/README.md\n */\nexport default BlockInspector;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-inspector/index.js"],"names":["__","getBlockType","getUnregisteredTypeHandlerName","hasBlockSupport","store","blocksStore","PanelBody","__experimentalUseSlot","useSlot","FlexItem","__experimentalHStack","HStack","__experimentalVStack","VStack","Button","useSelect","useDispatch","useMemo","useCallback","SkipToSelectedBlock","BlockCard","default","InspectorControls","InspectorAdvancedControls","BlockStyles","MultiSelectionInspector","DefaultStylePicker","BlockVariationTransforms","useBlockDisplayInformation","blockEditorStore","BlockIcon","useContentBlocks","blockTypes","block","contenBlocksObjectAux","reduce","result","blockType","name","Object","entries","attributes","some","__experimentalRole","isContentBlock","blockName","getContentBlocks","blocks","push","innerBlocks","BlockNavigationButton","selectedBlock","selectBlock","find","isSelected","clientId","icon","title","BlockInspectorLockedBlocks","topLevelLockedBlock","select","getBlockTypes","getBlock","getSelectedBlock","blockInformation","contentBlocks","map","contentBlock","BlockInspector","showNoBlockSelectedMessage","count","selectedBlockName","selectedBlockClientId","getSelectedBlockClientId","getSelectedBlockCount","getBlockName","__unstableGetContentLockingParent","_selectedBlockClientId","_selectedBlockName","_blockType","isSelectedBlockUnregistered","BlockInspectorSingleBlock","hasBlockStyles","getBlockStyles","blockStyles","length","AdvancedControls","slot","slotName","hasFills","Boolean","fills"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockType,\n\tgetUnregisteredTypeHandlerName,\n\thasBlockSupport,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport {\n\tPanelBody,\n\t__experimentalUseSlot as useSlot,\n\tFlexItem,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport SkipToSelectedBlock from '../skip-to-selected-block';\nimport BlockCard from '../block-card';\nimport {\n\tdefault as InspectorControls,\n\tInspectorAdvancedControls,\n} from '../inspector-controls';\nimport BlockStyles from '../block-styles';\nimport MultiSelectionInspector from '../multi-selection-inspector';\nimport DefaultStylePicker from '../default-style-picker';\nimport BlockVariationTransforms from '../block-variation-transforms';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\n\nfunction useContentBlocks( blockTypes, block ) {\n\tconst contenBlocksObjectAux = useMemo( () => {\n\t\treturn blockTypes.reduce( ( result, blockType ) => {\n\t\t\tif (\n\t\t\t\tblockType.name !== 'core/list-item' &&\n\t\t\t\tObject.entries( blockType.attributes ).some(\n\t\t\t\t\t( [ , { __experimentalRole } ] ) =>\n\t\t\t\t\t\t__experimentalRole === 'content'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tresult[ blockType.name ] = true;\n\t\t\t}\n\t\t\treturn result;\n\t\t}, {} );\n\t}, [ blockTypes ] );\n\tconst isContentBlock = useCallback(\n\t\t( blockName ) => {\n\t\t\treturn !! contenBlocksObjectAux[ blockName ];\n\t\t},\n\t\t[ blockTypes ]\n\t);\n\treturn useMemo( () => {\n\t\treturn getContentBlocks( [ block ], isContentBlock );\n\t}, [ block, isContentBlock ] );\n}\n\nfunction getContentBlocks( blocks, isContentBlock ) {\n\tconst result = [];\n\tfor ( const block of blocks ) {\n\t\tif ( isContentBlock( block.name ) ) {\n\t\t\tresult.push( block );\n\t\t}\n\t\tresult.push( ...getContentBlocks( block.innerBlocks, isContentBlock ) );\n\t}\n\treturn result;\n}\n\nfunction BlockNavigationButton( { blockTypes, block, selectedBlock } ) {\n\tconst { selectBlock } = useDispatch( blockEditorStore );\n\tconst blockType = blockTypes.find( ( { name } ) => name === block.name );\n\tconst isSelected =\n\t\tselectedBlock && selectedBlock.clientId === block.clientId;\n\treturn (\n\t\t<Button\n\t\t\tisPressed={ isSelected }\n\t\t\tonClick={ () => selectBlock( block.clientId ) }\n\t\t>\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<BlockIcon icon={ blockType.icon } />\n\t\t\t\t<FlexItem>{ blockType.title }</FlexItem>\n\t\t\t</HStack>\n\t\t</Button>\n\t);\n}\n\nfunction BlockInspectorLockedBlocks( { topLevelLockedBlock } ) {\n\tconst { blockTypes, block, selectedBlock } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tblockTypes: select( blocksStore ).getBlockTypes(),\n\t\t\t\tblock: select( blockEditorStore ).getBlock(\n\t\t\t\t\ttopLevelLockedBlock\n\t\t\t\t),\n\t\t\t\tselectedBlock: select( blockEditorStore ).getSelectedBlock(),\n\t\t\t};\n\t\t},\n\t\t[ topLevelLockedBlock ]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( topLevelLockedBlock );\n\tconst contentBlocks = useContentBlocks( blockTypes, block );\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard { ...blockInformation } />\n\t\t\t<BlockVariationTransforms blockClientId={ topLevelLockedBlock } />\n\t\t\t<VStack\n\t\t\t\tspacing={ 1 }\n\t\t\t\tpadding={ 4 }\n\t\t\t\tclassName=\"block-editor-block-inspector__block-buttons-container\"\n\t\t\t>\n\t\t\t\t<h2 className=\"block-editor-block-card__title\">\n\t\t\t\t\t{ __( 'Content' ) }\n\t\t\t\t</h2>\n\t\t\t\t{ contentBlocks.map( ( contentBlock ) => (\n\t\t\t\t\t<BlockNavigationButton\n\t\t\t\t\t\tselectedBlock={ selectedBlock }\n\t\t\t\t\t\tkey={ contentBlock.clientId }\n\t\t\t\t\t\tblock={ contentBlock }\n\t\t\t\t\t\tblockTypes={ blockTypes }\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nconst BlockInspector = ( { showNoBlockSelectedMessage = true } ) => {\n\tconst {\n\t\tcount,\n\t\tselectedBlockName,\n\t\tselectedBlockClientId,\n\t\tblockType,\n\t\ttopLevelLockedBlock,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientId,\n\t\t\tgetSelectedBlockCount,\n\t\t\tgetBlockName,\n\t\t\t__unstableGetContentLockingParent,\n\t\t} = select( blockEditorStore );\n\n\t\tconst _selectedBlockClientId = getSelectedBlockClientId();\n\t\tconst _selectedBlockName =\n\t\t\t_selectedBlockClientId && getBlockName( _selectedBlockClientId );\n\t\tconst _blockType =\n\t\t\t_selectedBlockName && getBlockType( _selectedBlockName );\n\n\t\treturn {\n\t\t\tcount: getSelectedBlockCount(),\n\t\t\tselectedBlockClientId: _selectedBlockClientId,\n\t\t\tselectedBlockName: _selectedBlockName,\n\t\t\tblockType: _blockType,\n\t\t\ttopLevelLockedBlock: __unstableGetContentLockingParent(\n\t\t\t\t_selectedBlockClientId\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\tif ( count > 1 ) {\n\t\treturn (\n\t\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t\t<MultiSelectionInspector />\n\t\t\t\t<InspectorControls.Slot />\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"color\"\n\t\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"typography\"\n\t\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"dimensions\"\n\t\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t\t/>\n\t\t\t\t<InspectorControls.Slot\n\t\t\t\t\t__experimentalGroup=\"border\"\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst isSelectedBlockUnregistered =\n\t\tselectedBlockName === getUnregisteredTypeHandlerName();\n\n\t/*\n\t * If the selected block is of an unregistered type, avoid showing it as an actual selection\n\t * because we want the user to focus on the unregistered block warning, not block settings.\n\t */\n\tif (\n\t\t! blockType ||\n\t\t! selectedBlockClientId ||\n\t\tisSelectedBlockUnregistered\n\t) {\n\t\tif ( showNoBlockSelectedMessage ) {\n\t\t\treturn (\n\t\t\t\t<span className=\"block-editor-block-inspector__no-blocks\">\n\t\t\t\t\t{ __( 'No block selected.' ) }\n\t\t\t\t</span>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\tif ( topLevelLockedBlock ) {\n\t\treturn (\n\t\t\t<BlockInspectorLockedBlocks\n\t\t\t\ttopLevelLockedBlock={ topLevelLockedBlock }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<BlockInspectorSingleBlock\n\t\t\tclientId={ selectedBlockClientId }\n\t\t\tblockName={ blockType.name }\n\t\t/>\n\t);\n};\n\nconst BlockInspectorSingleBlock = ( { clientId, blockName } ) => {\n\tconst hasBlockStyles = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\tconst blockStyles = getBlockStyles( blockName );\n\t\t\treturn blockStyles && blockStyles.length > 0;\n\t\t},\n\t\t[ blockName ]\n\t);\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\treturn (\n\t\t<div className=\"block-editor-block-inspector\">\n\t\t\t<BlockCard { ...blockInformation } />\n\t\t\t<BlockVariationTransforms blockClientId={ clientId } />\n\t\t\t{ hasBlockStyles && (\n\t\t\t\t<div>\n\t\t\t\t\t<PanelBody title={ __( 'Styles' ) }>\n\t\t\t\t\t\t<BlockStyles\n\t\t\t\t\t\t\tscope=\"core/block-inspector\"\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{ hasBlockSupport(\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\t'defaultStylePicker',\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t) && <DefaultStylePicker blockName={ blockName } /> }\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<InspectorControls.Slot />\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"color\"\n\t\t\t\tlabel={ __( 'Color' ) }\n\t\t\t\tclassName=\"color-block-support-panel__inner-wrapper\"\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"typography\"\n\t\t\t\tlabel={ __( 'Typography' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"dimensions\"\n\t\t\t\tlabel={ __( 'Dimensions' ) }\n\t\t\t/>\n\t\t\t<InspectorControls.Slot\n\t\t\t\t__experimentalGroup=\"border\"\n\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t/>\n\t\t\t<div>\n\t\t\t\t<AdvancedControls />\n\t\t\t</div>\n\t\t\t<SkipToSelectedBlock key=\"back\" />\n\t\t</div>\n\t);\n};\n\nconst AdvancedControls = () => {\n\tconst slot = useSlot( InspectorAdvancedControls.slotName );\n\tconst hasFills = Boolean( slot.fills && slot.fills.length );\n\n\tif ( ! hasFills ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\tclassName=\"block-editor-block-inspector__advanced\"\n\t\t\ttitle={ __( 'Advanced' ) }\n\t\t\tinitialOpen={ false }\n\t\t>\n\t\t\t<InspectorControls.Slot __experimentalGroup=\"advanced\" />\n\t\t</PanelBody>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-inspector/README.md\n */\nexport default BlockInspector;\n"]}
@@ -262,17 +262,17 @@ const applyWithSelect = withSelect((select, _ref3) => {
262
262
  isSelected
263
263
  };
264
264
  });
265
- const applyWithDispatch = withDispatch((dispatch, ownProps, _ref4) => {
266
- let {
267
- select
268
- } = _ref4;
265
+ const applyWithDispatch = withDispatch((dispatch, ownProps, registry) => {
269
266
  const {
270
267
  updateBlockAttributes,
271
268
  insertBlocks,
272
269
  mergeBlocks,
273
270
  replaceBlocks,
274
271
  toggleSelection,
275
- __unstableMarkLastChangeAsPersistent
272
+ __unstableMarkLastChangeAsPersistent,
273
+ moveBlocksToPosition,
274
+ removeBlock,
275
+ selectBlock
276
276
  } = dispatch(blockEditorStore); // Do not add new properties here, use `useDispatch` instead to avoid
277
277
  // leaking new props to the public API (editor.BlockListBlock filter).
278
278
 
@@ -280,7 +280,7 @@ const applyWithDispatch = withDispatch((dispatch, ownProps, _ref4) => {
280
280
  setAttributes(newAttributes) {
281
281
  const {
282
282
  getMultiSelectedBlockClientIds
283
- } = select(blockEditorStore);
283
+ } = registry.select(blockEditorStore);
284
284
  const multiSelectedBlockClientIds = getMultiSelectedBlockClientIds();
285
285
  const {
286
286
  clientId
@@ -303,7 +303,7 @@ const applyWithDispatch = withDispatch((dispatch, ownProps, _ref4) => {
303
303
  } = ownProps;
304
304
  const {
305
305
  getBlockIndex
306
- } = select(blockEditorStore);
306
+ } = registry.select(blockEditorStore);
307
307
  const index = getBlockIndex(clientId);
308
308
  insertBlocks(blocks, index + 1, rootClientId);
309
309
  },
@@ -316,13 +316,52 @@ const applyWithDispatch = withDispatch((dispatch, ownProps, _ref4) => {
316
316
  const {
317
317
  getPreviousBlockClientId,
318
318
  getNextBlockClientId,
319
- getBlock
320
- } = select(blockEditorStore);
319
+ getBlock,
320
+ getBlockAttributes,
321
+ getBlockName,
322
+ getBlockOrder
323
+ } = registry.select(blockEditorStore); // For `Delete` or forward merge, we should do the exact same thing
324
+ // as `Backspace`, but from the other block.
321
325
 
322
326
  if (forward) {
327
+ if (rootClientId) {
328
+ const nextRootClientId = getNextBlockClientId(rootClientId);
329
+
330
+ if (nextRootClientId) {
331
+ // If there is a block that follows with the same parent
332
+ // block name and the same attributes, merge the inner
333
+ // blocks.
334
+ if (getBlockName(rootClientId) === getBlockName(nextRootClientId)) {
335
+ const rootAttributes = getBlockAttributes(rootClientId);
336
+ const previousRootAttributes = getBlockAttributes(nextRootClientId);
337
+
338
+ if (Object.keys(rootAttributes).every(key => rootAttributes[key] === previousRootAttributes[key])) {
339
+ registry.batch(() => {
340
+ moveBlocksToPosition(getBlockOrder(nextRootClientId), nextRootClientId, rootClientId);
341
+ removeBlock(nextRootClientId, false);
342
+ });
343
+ return;
344
+ }
345
+ } else {
346
+ mergeBlocks(rootClientId, nextRootClientId);
347
+ return;
348
+ }
349
+ }
350
+ }
351
+
323
352
  const nextBlockClientId = getNextBlockClientId(clientId);
324
353
 
325
- if (nextBlockClientId) {
354
+ if (!nextBlockClientId) {
355
+ return;
356
+ } // Check if it's possibile to "unwrap" the following block
357
+ // before trying to merge.
358
+
359
+
360
+ const replacement = switchToBlockType(getBlock(nextBlockClientId), '*');
361
+
362
+ if (replacement && replacement.length) {
363
+ replaceBlocks(nextBlockClientId, replacement);
364
+ } else {
326
365
  mergeBlocks(clientId, nextBlockClientId);
327
366
  }
328
367
  } else {
@@ -331,12 +370,31 @@ const applyWithDispatch = withDispatch((dispatch, ownProps, _ref4) => {
331
370
  if (previousBlockClientId) {
332
371
  mergeBlocks(previousBlockClientId, clientId);
333
372
  } else if (rootClientId) {
334
- // Attempt to "unwrap" the block contents when there's no
373
+ const previousRootClientId = getPreviousBlockClientId(rootClientId); // If there is a preceding block with the same parent block
374
+ // name and the same attributes, merge the inner blocks.
375
+
376
+ if (previousRootClientId && getBlockName(rootClientId) === getBlockName(previousRootClientId)) {
377
+ const rootAttributes = getBlockAttributes(rootClientId);
378
+ const previousRootAttributes = getBlockAttributes(previousRootClientId);
379
+
380
+ if (Object.keys(rootAttributes).every(key => rootAttributes[key] === previousRootAttributes[key])) {
381
+ registry.batch(() => {
382
+ moveBlocksToPosition(getBlockOrder(rootClientId), rootClientId, previousRootClientId);
383
+ removeBlock(rootClientId, false);
384
+ });
385
+ return;
386
+ }
387
+ } // Attempt to "unwrap" the block contents when there's no
335
388
  // preceding block to merge with.
389
+
390
+
336
391
  const replacement = switchToBlockType(getBlock(rootClientId), '*');
337
392
 
338
393
  if (replacement && replacement.length) {
339
- replaceBlocks(rootClientId, replacement, 0);
394
+ registry.batch(() => {
395
+ replaceBlocks(rootClientId, replacement);
396
+ selectBlock(replacement[0].clientId, 0);
397
+ });
340
398
  }
341
399
  }
342
400
  }
@@ -359,10 +417,10 @@ const applyWithDispatch = withDispatch((dispatch, ownProps, _ref4) => {
359
417
  export default compose(pure, applyWithSelect, applyWithDispatch, // Block is sometimes not mounted at the right time, causing it be undefined
360
418
  // see issue for more info
361
419
  // https://github.com/WordPress/gutenberg/issues/17013
362
- ifCondition(_ref5 => {
420
+ ifCondition(_ref4 => {
363
421
  let {
364
422
  block
365
- } = _ref5;
423
+ } = _ref4;
366
424
  return !!block;
367
425
  }), withFilters('editor.BlockListBlock'))(BlockListBlock);
368
426
  //# sourceMappingURL=block.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"names":["classnames","createContext","useMemo","useCallback","RawHTML","getBlockType","getSaveContent","isUnmodifiedDefaultBlock","serializeRawBlock","switchToBlockType","store","blocksStore","withFilters","withDispatch","withSelect","useDispatch","useSelect","compose","pure","ifCondition","safeHTML","BlockEdit","BlockInvalidWarning","BlockCrashWarning","BlockCrashBoundary","BlockHtml","useBlockProps","blockEditorStore","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","themeSupportsLayout","hasContentLockedParent","isContentBlock","isContentLocking","isTemporarilyEditingAsBlocks","select","getSettings","__unstableGetContentLockingParent","getTemplateLock","__unstableGetTemporarilyEditingAsBlocks","_hasContentLockedParent","supportsLayout","__experimentalHasContentRoleAttribute","removeBlock","onRemove","blockEdit","undefined","blockType","tabIndex","getEditWrapperProps","isAligned","saveContent","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","Object","values","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","updateBlockAttributes","insertBlocks","mergeBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","length","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","nextBlockClientId","previousBlockClientId","replacement","indexToSelect","initialPosition","selectionEnabled"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseMemo,\n\tuseCallback,\n\tRawHTML,\n} from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } 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';\n\nexport const BlockListBlockContext = createContext();\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\tif ( propsA?.className && propsB?.className ) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\tif ( propsA?.style && propsB?.style ) {\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\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tthemeSupportsLayout,\n\t\thasContentLockedParent,\n\t\tisContentBlock,\n\t\tisContentLocking,\n\t\tisTemporarilyEditingAsBlocks,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\t__unstableGetContentLockingParent,\n\t\t\t\tgetTemplateLock,\n\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst _hasContentLockedParent =\n\t\t\t\t!! __unstableGetContentLockingParent( clientId );\n\t\t\treturn {\n\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\tisContentBlock:\n\t\t\t\t\tselect( blocksStore ).__experimentalHasContentRoleAttribute(\n\t\t\t\t\t\tname\n\t\t\t\t\t),\n\t\t\t\thasContentLockedParent: _hasContentLockedParent,\n\t\t\t\tisContentLocking:\n\t\t\t\t\tgetTemplateLock( clientId ) === 'contentOnly' &&\n\t\t\t\t\t! _hasContentLockedParent,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t};\n\t\t},\n\t\t[ name, clientId ]\n\t);\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\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/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\tif ( hasContentLockedParent && ! isContentBlock ) {\n\t\twrapperProps = {\n\t\t\t...wrapperProps,\n\t\t\ttabIndex: -1,\n\t\t};\n\t}\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// 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=\"wp-block\"\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 { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName: classnames(\n\t\t\t{\n\t\t\t\t'is-content-locked': isContentLocking,\n\t\t\t\t'is-content-locked-temporarily-editing-as-blocks':\n\t\t\t\t\tisTemporarilyEditingAsBlocks,\n\t\t\t\t'is-content-block': hasContentLockedParent && isContentBlock,\n\t\t\t},\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\tclassName\n\t\t),\n\t\twrapperProps: restWrapperProps,\n\t\tisAligned,\n\t};\n\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\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</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, { select } ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\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\tselect( 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 } = 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 { getPreviousBlockClientId, getNextBlockClientId, getBlock } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tif ( forward ) {\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\tif ( nextBlockClientId ) {\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\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\t// Attempt to \"unwrap\" the block contents when there's no\n\t\t\t\t\t// preceding block to merge with.\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tgetBlock( rootClientId ),\n\t\t\t\t\t\t'*'\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\treplaceBlocks( rootClientId, replacement, 0 );\n\t\t\t\t\t}\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\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\tblocks,\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\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-list/block.js"],"names":["classnames","createContext","useMemo","useCallback","RawHTML","getBlockType","getSaveContent","isUnmodifiedDefaultBlock","serializeRawBlock","switchToBlockType","store","blocksStore","withFilters","withDispatch","withSelect","useDispatch","useSelect","compose","pure","ifCondition","safeHTML","BlockEdit","BlockInvalidWarning","BlockCrashWarning","BlockCrashBoundary","BlockHtml","useBlockProps","blockEditorStore","BlockListBlockContext","mergeWrapperProps","propsA","propsB","newProps","className","style","Block","children","isHtml","props","__unstableIsHtml","BlockListBlock","block","__unstableBlockSource","mode","isLocked","canRemove","clientId","isSelected","isSelectionEnabled","name","isValid","attributes","wrapperProps","setAttributes","onReplace","onInsertBlocksAfter","onMerge","toggleSelection","themeSupportsLayout","hasContentLockedParent","isContentBlock","isContentLocking","isTemporarilyEditingAsBlocks","select","getSettings","__unstableGetContentLockingParent","getTemplateLock","__unstableGetTemporarilyEditingAsBlocks","_hasContentLockedParent","supportsLayout","__experimentalHasContentRoleAttribute","removeBlock","onRemove","blockEdit","undefined","blockType","tabIndex","getEditWrapperProps","isAligned","saveContent","display","apiVersion","dataAlign","restWrapperProps","value","memoizedValue","Object","values","applyWithSelect","rootClientId","isBlockSelected","getBlockMode","__unstableGetBlockWithoutInnerBlocks","canRemoveBlock","canMoveBlock","templateLock","canMove","applyWithDispatch","dispatch","ownProps","registry","updateBlockAttributes","insertBlocks","mergeBlocks","replaceBlocks","__unstableMarkLastChangeAsPersistent","moveBlocksToPosition","selectBlock","newAttributes","getMultiSelectedBlockClientIds","multiSelectedBlockClientIds","clientIds","length","onInsertBlocks","blocks","index","getBlockIndex","forward","getPreviousBlockClientId","getNextBlockClientId","getBlock","getBlockAttributes","getBlockName","getBlockOrder","nextRootClientId","rootAttributes","previousRootAttributes","keys","every","key","batch","nextBlockClientId","replacement","previousBlockClientId","previousRootClientId","indexToSelect","initialPosition","selectionEnabled"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tcreateContext,\n\tuseMemo,\n\tuseCallback,\n\tRawHTML,\n} from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport {\n\twithDispatch,\n\twithSelect,\n\tuseDispatch,\n\tuseSelect,\n} from '@wordpress/data';\nimport { compose, pure, ifCondition } 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';\n\nexport const BlockListBlockContext = createContext();\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\tif ( propsA?.className && propsB?.className ) {\n\t\tnewProps.className = classnames( propsA.className, propsB.className );\n\t}\n\tif ( propsA?.style && propsB?.style ) {\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\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tthemeSupportsLayout,\n\t\thasContentLockedParent,\n\t\tisContentBlock,\n\t\tisContentLocking,\n\t\tisTemporarilyEditingAsBlocks,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\t__unstableGetContentLockingParent,\n\t\t\t\tgetTemplateLock,\n\t\t\t\t__unstableGetTemporarilyEditingAsBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst _hasContentLockedParent =\n\t\t\t\t!! __unstableGetContentLockingParent( clientId );\n\t\t\treturn {\n\t\t\t\tthemeSupportsLayout: getSettings().supportsLayout,\n\t\t\t\tisContentBlock:\n\t\t\t\t\tselect( blocksStore ).__experimentalHasContentRoleAttribute(\n\t\t\t\t\t\tname\n\t\t\t\t\t),\n\t\t\t\thasContentLockedParent: _hasContentLockedParent,\n\t\t\t\tisContentLocking:\n\t\t\t\t\tgetTemplateLock( clientId ) === 'contentOnly' &&\n\t\t\t\t\t! _hasContentLockedParent,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\t__unstableGetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t};\n\t\t},\n\t\t[ name, clientId ]\n\t);\n\tconst { removeBlock } = useDispatch( blockEditorStore );\n\tconst onRemove = useCallback( () => removeBlock( clientId ), [ clientId ] );\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/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\tif ( hasContentLockedParent && ! isContentBlock ) {\n\t\twrapperProps = {\n\t\t\t...wrapperProps,\n\t\t\ttabIndex: -1,\n\t\t};\n\t}\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// 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=\"wp-block\"\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 { ...wrapperProps }>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\n\tconst value = {\n\t\tclientId,\n\t\tclassName: classnames(\n\t\t\t{\n\t\t\t\t'is-content-locked': isContentLocking,\n\t\t\t\t'is-content-locked-temporarily-editing-as-blocks':\n\t\t\t\t\tisTemporarilyEditingAsBlocks,\n\t\t\t\t'is-content-block': hasContentLockedParent && isContentBlock,\n\t\t\t},\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\tclassName\n\t\t),\n\t\twrapperProps: restWrapperProps,\n\t\tisAligned,\n\t};\n\n\tconst memoizedValue = useMemo( () => value, Object.values( value ) );\n\n\treturn (\n\t\t<BlockListBlockContext.Provider value={ memoizedValue }>\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</BlockListBlockContext.Provider>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select, { clientId, rootClientId } ) => {\n\tconst {\n\t\tisBlockSelected,\n\t\tgetBlockMode,\n\t\tisSelectionEnabled,\n\t\tgetTemplateLock,\n\t\t__unstableGetBlockWithoutInnerBlocks,\n\t\tcanRemoveBlock,\n\t\tcanMoveBlock,\n\t} = select( blockEditorStore );\n\tconst block = __unstableGetBlockWithoutInnerBlocks( clientId );\n\tconst isSelected = isBlockSelected( clientId );\n\tconst templateLock = getTemplateLock( rootClientId );\n\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\tconst canMove = canMoveBlock( clientId, rootClientId );\n\n\t// The fallback to `{}` is a temporary fix.\n\t// This function should never be called when a block is not present in\n\t// the state. It happens now because the order in withSelect rendering\n\t// is not correct.\n\tconst { name, attributes, isValid } = block || {};\n\n\t// Do not add new properties here, use `useSelect` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tmode: getBlockMode( clientId ),\n\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\tisLocked: !! templateLock,\n\t\tcanRemove,\n\t\tcanMove,\n\t\t// Users of the editor.BlockListBlock filter used to be able to\n\t\t// access the block prop.\n\t\t// Ideally these blocks would rely on the clientId prop only.\n\t\t// This is kept for backward compatibility reasons.\n\t\tblock,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected,\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} = registry.select( blockEditorStore );\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\t// Check if it's possibile to \"unwrap\" the following block\n\t\t\t\t// before trying to merge.\n\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\tgetBlock( nextBlockClientId ),\n\t\t\t\t\t'*'\n\t\t\t\t);\n\n\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\treplaceBlocks( nextBlockClientId, replacement );\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\t// Attempt to \"unwrap\" the block contents when there's no\n\t\t\t\t\t// preceding block to merge with.\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tgetBlock( rootClientId ),\n\t\t\t\t\t\t'*'\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\treplaceBlocks( rootClientId, replacement );\n\t\t\t\t\t\t\tselectBlock( replacement[ 0 ].clientId, 0 );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\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\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\tblocks,\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\nexport default compose(\n\tpure,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\t// Block is sometimes not mounted at the right time, causing it be undefined\n\t// see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tifCondition( ( { block } ) => !! block ),\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n"]}