@wordpress/block-library 7.14.0 → 7.14.2

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 (104) hide show
  1. package/build/button/edit.js +8 -3
  2. package/build/button/edit.js.map +1 -1
  3. package/build/column/index.js +1 -1
  4. package/build/cover/index.js +1 -1
  5. package/build/group/edit.js +0 -17
  6. package/build/group/edit.js.map +1 -1
  7. package/build/group/index.js +1 -7
  8. package/build/group/index.js.map +1 -1
  9. package/build/group/transforms.js +4 -1
  10. package/build/group/transforms.js.map +1 -1
  11. package/build/group/variations.js +2 -1
  12. package/build/group/variations.js.map +1 -1
  13. package/build/media-text/edit.js +25 -11
  14. package/build/media-text/edit.js.map +1 -1
  15. package/build/media-text/media-container.js +4 -3
  16. package/build/media-text/media-container.js.map +1 -1
  17. package/build/navigation/edit/overlay-menu-icon.js +0 -8
  18. package/build/navigation/edit/overlay-menu-icon.js.map +1 -1
  19. package/build/navigation/edit/overlay-menu-preview.js +0 -12
  20. package/build/navigation/edit/overlay-menu-preview.js.map +1 -1
  21. package/build/navigation-link/edit.js +8 -3
  22. package/build/navigation-link/edit.js.map +1 -1
  23. package/build/navigation-submenu/edit.js +8 -3
  24. package/build/navigation-submenu/edit.js.map +1 -1
  25. package/build/post-date/edit.js +10 -6
  26. package/build/post-date/edit.js.map +1 -1
  27. package/build/query/edit/index.js +23 -211
  28. package/build/query/edit/index.js.map +1 -1
  29. package/build/query/edit/query-content.js +169 -0
  30. package/build/query/edit/query-content.js.map +1 -0
  31. package/build/query/edit/query-placeholder.js +69 -6
  32. package/build/query/edit/query-placeholder.js.map +1 -1
  33. package/build/query/utils.js +40 -0
  34. package/build/query/utils.js.map +1 -1
  35. package/build/social-link/edit.js +8 -6
  36. package/build/social-link/edit.js.map +1 -1
  37. package/build/template-part/edit/selection-modal.js +2 -13
  38. package/build/template-part/edit/selection-modal.js.map +1 -1
  39. package/build-module/button/edit.js +7 -3
  40. package/build-module/button/edit.js.map +1 -1
  41. package/build-module/column/index.js +1 -1
  42. package/build-module/cover/index.js +1 -1
  43. package/build-module/group/edit.js +1 -19
  44. package/build-module/group/edit.js.map +1 -1
  45. package/build-module/group/index.js +1 -7
  46. package/build-module/group/index.js.map +1 -1
  47. package/build-module/group/transforms.js +4 -1
  48. package/build-module/group/transforms.js.map +1 -1
  49. package/build-module/group/variations.js +2 -1
  50. package/build-module/group/variations.js.map +1 -1
  51. package/build-module/media-text/edit.js +25 -11
  52. package/build-module/media-text/edit.js.map +1 -1
  53. package/build-module/media-text/media-container.js +4 -3
  54. package/build-module/media-text/media-container.js.map +1 -1
  55. package/build-module/navigation/edit/overlay-menu-icon.js +1 -9
  56. package/build-module/navigation/edit/overlay-menu-icon.js.map +1 -1
  57. package/build-module/navigation/edit/overlay-menu-preview.js +0 -12
  58. package/build-module/navigation/edit/overlay-menu-preview.js.map +1 -1
  59. package/build-module/navigation-link/edit.js +7 -3
  60. package/build-module/navigation-link/edit.js.map +1 -1
  61. package/build-module/navigation-submenu/edit.js +7 -3
  62. package/build-module/navigation-submenu/edit.js.map +1 -1
  63. package/build-module/post-date/edit.js +11 -7
  64. package/build-module/post-date/edit.js.map +1 -1
  65. package/build-module/query/edit/index.js +27 -208
  66. package/build-module/query/edit/index.js.map +1 -1
  67. package/build-module/query/edit/query-content.js +152 -0
  68. package/build-module/query/edit/query-content.js.map +1 -0
  69. package/build-module/query/edit/query-placeholder.js +67 -5
  70. package/build-module/query/edit/query-placeholder.js.map +1 -1
  71. package/build-module/query/utils.js +37 -0
  72. package/build-module/query/utils.js.map +1 -1
  73. package/build-module/social-link/edit.js +9 -7
  74. package/build-module/social-link/edit.js.map +1 -1
  75. package/build-module/template-part/edit/selection-modal.js +3 -14
  76. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  77. package/package.json +28 -28
  78. package/src/button/edit.js +10 -2
  79. package/src/column/block.json +1 -1
  80. package/src/comments/index.php +1 -1
  81. package/src/cover/block.json +1 -1
  82. package/src/group/block.json +1 -7
  83. package/src/group/edit.js +2 -12
  84. package/src/group/transforms.js +1 -0
  85. package/src/group/variations.js +2 -1
  86. package/src/list/test/__snapshots__/edit.native.js.snap +8 -32
  87. package/src/list/test/edit.native.js +16 -68
  88. package/src/media-text/edit.js +45 -29
  89. package/src/media-text/media-container.js +3 -2
  90. package/src/navigation/edit/overlay-menu-icon.js +1 -5
  91. package/src/navigation/edit/overlay-menu-preview.js +0 -10
  92. package/src/navigation/index.php +0 -4
  93. package/src/navigation-link/edit.js +6 -2
  94. package/src/navigation-submenu/edit.js +6 -2
  95. package/src/post-comments-form/index.php +1 -1
  96. package/src/post-date/edit.js +13 -4
  97. package/src/post-featured-image/index.php +1 -1
  98. package/src/query/edit/index.js +50 -227
  99. package/src/query/edit/query-content.js +131 -0
  100. package/src/query/edit/query-placeholder.js +87 -8
  101. package/src/query/utils.js +46 -0
  102. package/src/search/index.php +1 -1
  103. package/src/social-link/edit.js +9 -9
  104. package/src/template-part/edit/selection-modal.js +2 -14
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/query/edit/query-placeholder.js"],"names":["useSelect","useDispatch","useBlockProps","__experimentalBlockVariationPicker","store","blockEditorStore","createBlocksFromInnerBlocksTemplate","blocksStore","QueryPlaceholder","clientId","name","attributes","setAttributes","icon","label","defaultVariation","scopeVariations","select","getBlockVariations","getBlockType","getDefaultBlockVariation","blockType","replaceInnerBlocks","blockProps","nextVariation","query","postType","innerBlocks"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,SAAT,EAAoBC,WAApB,QAAuC,iBAAvC;AACA,SACCC,aADD,EAECC,kCAFD,EAGCC,KAAK,IAAIC,gBAHV,QAIO,yBAJP;AAKA,SACCC,mCADD,EAECF,KAAK,IAAIG,WAFV,QAGO,mBAHP;;AAKA,SAASC,gBAAT,OAOI;AAAA,MAPuB;AAC1BC,IAAAA,QAD0B;AAE1BC,IAAAA,IAF0B;AAG1BC,IAAAA,UAH0B;AAI1BC,IAAAA,aAJ0B;AAK1BC,IAAAA,IAL0B;AAM1BC,IAAAA;AAN0B,GAOvB;AACH,QAAM;AAAEC,IAAAA,gBAAF;AAAoBC,IAAAA;AAApB,MAAwChB,SAAS,CACpDiB,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,kBADK;AAELC,MAAAA,YAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEV,WAAF,CAJV;AAMA,WAAO;AACNc,MAAAA,SAAS,EAAEF,YAAY,CAAET,IAAF,CADjB;AAENK,MAAAA,gBAAgB,EAAEK,wBAAwB,CAAEV,IAAF,EAAQ,OAAR,CAFpC;AAGNM,MAAAA,eAAe,EAAEE,kBAAkB,CAAER,IAAF,EAAQ,OAAR;AAH7B,KAAP;AAKA,GAbqD,EActD,CAAEA,IAAF,CAdsD,CAAvD;AAgBA,QAAM;AAAEY,IAAAA;AAAF,MAAyBrB,WAAW,CAAEI,gBAAF,CAA1C;AACA,QAAMkB,UAAU,GAAGrB,aAAa,EAAhC;AACA,SACC,qBAAUqB,UAAV,EACC,cAAC,kCAAD;AACC,IAAA,IAAI,EAAGV,IADR;AAEC,IAAA,KAAK,EAAGC,KAFT;AAGC,IAAA,UAAU,EAAGE,eAHd;AAIC,IAAA,QAAQ,EAAG,YAAwC;AAAA,UAAtCQ,aAAsC,uEAAtBT,gBAAsB;;AAClD,UAAKS,aAAa,CAACb,UAAnB,EAAgC;AAC/BC,QAAAA,aAAa,CAAE,EACd,GAAGY,aAAa,CAACb,UADH;AAEdc,UAAAA,KAAK,EAAE,EACN,GAAGD,aAAa,CAACb,UAAd,CAAyBc,KADtB;AAENC,YAAAA,QAAQ,EACPf,UAAU,CAACc,KAAX,CAAiBC,QAAjB,IACAF,aAAa,CAACb,UAAd,CAAyBc,KAAzB,CAA+BC;AAJ1B;AAFO,SAAF,CAAb;AASA;;AACD,UAAKF,aAAa,CAACG,WAAnB,EAAiC;AAChCL,QAAAA,kBAAkB,CACjBb,QADiB,EAEjBH,mCAAmC,CAClCkB,aAAa,CAACG,WADoB,CAFlB,EAKjB,KALiB,CAAlB;AAOA;AACD;AAzBF,IADD,CADD;AA+BA;;AAED,eAAenB,gBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseBlockProps,\n\t__experimentalBlockVariationPicker,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\nfunction QueryPlaceholder( {\n\tclientId,\n\tname,\n\tattributes,\n\tsetAttributes,\n\ticon,\n\tlabel,\n} ) {\n\tconst { defaultVariation, scopeVariations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockVariations,\n\t\t\t\tgetBlockType,\n\t\t\t\tgetDefaultBlockVariation,\n\t\t\t} = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tblockType: getBlockType( name ),\n\t\t\t\tdefaultVariation: getDefaultBlockVariation( name, 'block' ),\n\t\t\t\tscopeVariations: getBlockVariations( name, 'block' ),\n\t\t\t};\n\t\t},\n\t\t[ name ]\n\t);\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<__experimentalBlockVariationPicker\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tvariations={ scopeVariations }\n\t\t\t\tonSelect={ ( nextVariation = defaultVariation ) => {\n\t\t\t\t\tif ( nextVariation.attributes ) {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t...nextVariation.attributes,\n\t\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\t\t...nextVariation.attributes.query,\n\t\t\t\t\t\t\t\tpostType:\n\t\t\t\t\t\t\t\t\tattributes.query.postType ||\n\t\t\t\t\t\t\t\t\tnextVariation.attributes.query.postType,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\tif ( nextVariation.innerBlocks ) {\n\t\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\t\t\t\t\tnextVariation.innerBlocks\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfalse\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</div>\n\t);\n}\n\nexport default QueryPlaceholder;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/query/edit/query-placeholder.js"],"names":["useSelect","useDispatch","createBlocksFromInnerBlocksTemplate","store","blocksStore","useState","useBlockProps","blockEditorStore","__experimentalBlockVariationPicker","__experimentalGetMatchingVariation","getMatchingVariation","Button","Placeholder","__","QueryPlaceholder","attributes","clientId","name","openPatternSelectionModal","setAttributes","isStartingBlank","setIsStartingBlank","blockProps","blockType","allVariations","hasPatterns","select","getBlockVariations","getBlockType","getBlockRootClientId","__experimentalGetPatternsByBlockTypes","rootClientId","length","matchingVariation","icon","src","label","title","QueryVariationPicker","defaultVariation","scopeVariations","getDefaultBlockVariation","replaceInnerBlocks","nextVariation","query","postType","innerBlocks"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tcreateBlocksFromInnerBlocksTemplate,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useState } from '@wordpress/element';\nimport {\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalBlockVariationPicker,\n\t__experimentalGetMatchingVariation as getMatchingVariation,\n} from '@wordpress/block-editor';\nimport { Button, Placeholder } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nexport default function QueryPlaceholder( {\n\tattributes,\n\tclientId,\n\tname,\n\topenPatternSelectionModal,\n\tsetAttributes,\n} ) {\n\tconst [ isStartingBlank, setIsStartingBlank ] = useState( false );\n\tconst blockProps = useBlockProps();\n\n\tconst { blockType, allVariations, hasPatterns } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockVariations, getBlockType } = select( blocksStore );\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\t__experimentalGetPatternsByBlockTypes,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn {\n\t\t\t\tblockType: getBlockType( name ),\n\t\t\t\tallVariations: getBlockVariations( name ),\n\t\t\t\thasPatterns: !! __experimentalGetPatternsByBlockTypes(\n\t\t\t\t\tname,\n\t\t\t\t\trootClientId\n\t\t\t\t).length,\n\t\t\t};\n\t\t},\n\t\t[ name, clientId ]\n\t);\n\n\tconst matchingVariation = getMatchingVariation( attributes, allVariations );\n\tconst icon = matchingVariation?.icon || blockType?.icon?.src;\n\tconst label = matchingVariation?.title || blockType?.title;\n\tif ( isStartingBlank ) {\n\t\treturn (\n\t\t\t<QueryVariationPicker\n\t\t\t\tclientId={ clientId }\n\t\t\t\tname={ name }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<Placeholder\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tinstructions={ __(\n\t\t\t\t\t'Choose a pattern for the query loop or start blank.'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ !! hasPatterns && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tonClick={ openPatternSelectionModal }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Choose' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetIsStartingBlank( true );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Start blank' ) }\n\t\t\t\t</Button>\n\t\t\t</Placeholder>\n\t\t</div>\n\t);\n}\n\nfunction QueryVariationPicker( {\n\tclientId,\n\tname,\n\tattributes,\n\tsetAttributes,\n\ticon,\n\tlabel,\n} ) {\n\tconst { defaultVariation, scopeVariations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockVariations,\n\t\t\t\tgetBlockType,\n\t\t\t\tgetDefaultBlockVariation,\n\t\t\t} = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tblockType: getBlockType( name ),\n\t\t\t\tdefaultVariation: getDefaultBlockVariation( name, 'block' ),\n\t\t\t\tscopeVariations: getBlockVariations( name, 'block' ),\n\t\t\t};\n\t\t},\n\t\t[ name ]\n\t);\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\tconst blockProps = useBlockProps();\n\treturn (\n\t\t<div { ...blockProps }>\n\t\t\t<__experimentalBlockVariationPicker\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\tvariations={ scopeVariations }\n\t\t\t\tonSelect={ ( nextVariation = defaultVariation ) => {\n\t\t\t\t\tif ( nextVariation.attributes ) {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t...nextVariation.attributes,\n\t\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\t\t...nextVariation.attributes.query,\n\t\t\t\t\t\t\t\tpostType:\n\t\t\t\t\t\t\t\t\tattributes.query.postType ||\n\t\t\t\t\t\t\t\t\tnextVariation.attributes.query.postType,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\tif ( nextVariation.innerBlocks ) {\n\t\t\t\t\t\treplaceInnerBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlocksFromInnerBlocksTemplate(\n\t\t\t\t\t\t\t\tnextVariation.innerBlocks\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tfalse\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</div>\n\t);\n}\n"]}
@@ -9,6 +9,7 @@ import { get } from 'lodash';
9
9
  import { useSelect } from '@wordpress/data';
10
10
  import { useMemo } from '@wordpress/element';
11
11
  import { store as coreStore } from '@wordpress/core-data';
12
+ import { store as blockEditorStore } from '@wordpress/block-editor';
12
13
  import { decodeEntities } from '@wordpress/html-entities';
13
14
  import { cloneBlock, store as blocksStore } from '@wordpress/blocks';
14
15
  /**
@@ -298,4 +299,40 @@ export const getTransformedBlocksFromPattern = (blocks, queryBlockAttributes) =>
298
299
  queryClientIds
299
300
  };
300
301
  };
302
+ /**
303
+ * Helper hook that determines if there is an active variation of the block
304
+ * and if there are available specific patterns for this variation.
305
+ * If there are, these patterns are going to be the only ones suggested to
306
+ * the user in setup and replace flow, without including the default ones
307
+ * for Query Loop.
308
+ *
309
+ * If there are no such patterns, the default ones for Query Loop are going
310
+ * to be suggested.
311
+ *
312
+ * @param {string} clientId The block's client ID.
313
+ * @param {Object} attributes The block's attributes.
314
+ * @return {string} The block name to be used in the patterns suggestions.
315
+ */
316
+
317
+ export function useBlockNameForPatterns(clientId, attributes) {
318
+ const activeVariationName = useSelect(select => {
319
+ var _select$getActiveBloc2;
320
+
321
+ return (_select$getActiveBloc2 = select(blocksStore).getActiveBlockVariation(queryLoopName, attributes)) === null || _select$getActiveBloc2 === void 0 ? void 0 : _select$getActiveBloc2.name;
322
+ }, [attributes]);
323
+ const blockName = `${queryLoopName}/${activeVariationName}`;
324
+ const activeVariationPatterns = useSelect(select => {
325
+ if (!activeVariationName) {
326
+ return;
327
+ }
328
+
329
+ const {
330
+ getBlockRootClientId,
331
+ __experimentalGetPatternsByBlockTypes
332
+ } = select(blockEditorStore);
333
+ const rootClientId = getBlockRootClientId(clientId);
334
+ return __experimentalGetPatternsByBlockTypes(blockName, rootClientId);
335
+ }, [clientId, activeVariationName]);
336
+ return activeVariationPatterns !== null && activeVariationPatterns !== void 0 && activeVariationPatterns.length ? blockName : queryLoopName;
337
+ }
301
338
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/query/utils.js"],"names":["get","useSelect","useMemo","store","coreStore","decodeEntities","cloneBlock","blocksStore","getEntitiesInfo","entities","mapping","reduce","accumulator","entity","mapById","mapByName","names","id","name","push","mapToIHasNameAndId","path","map","usePostTypes","postTypes","select","getPostTypes","excludedPostTypes","filteredPostTypes","per_page","filter","viewable","slug","includes","postTypesTaxonomiesMap","length","type","taxonomies","postTypesSelectOptions","labels","label","singular_name","value","useTaxonomies","postType","getTaxonomies","filteredTaxonomies","context","useIsPostTypeHierarchical","getPostType","hierarchical","useAllowedControls","attributes","getActiveBlockVariation","queryLoopName","allowControls","isControlAllowed","allowedControls","key","getTransformedBlocksFromPattern","blocks","queryBlockAttributes","query","inherit","clonedBlocks","block","queryClientIds","blocksQueue","shift","clientId","innerBlocks","forEach","innerBlock","newBlocks"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { cloneBlock, store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { name as queryLoopName } from './block.json';\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id The entity's id.\n * @property {string} name The entity's name.\n */\n\n/**\n * The object used in Query block that contains info and helper mappings\n * from an array of IHasNameAndId objects.\n *\n * @typedef {Object} QueryEntitiesInfo\n * @property {IHasNameAndId[]} entities The array of entities.\n * @property {Object<string, IHasNameAndId>} mapById Object mapping with the id as key and the entity as value.\n * @property {Object<string, IHasNameAndId>} mapByName Object mapping with the name as key and the entity as value.\n * @property {string[]} names Array with the entities' names.\n */\n\n/**\n * Returns a helper object with mapping from Objects that implement\n * the `IHasNameAndId` interface. The returned object is used for\n * integration with `FormTokenField` component.\n *\n * @param {IHasNameAndId[]} entities The entities to extract of helper object.\n * @return {QueryEntitiesInfo} The object with the entities information.\n */\nexport const getEntitiesInfo = ( entities ) => {\n\tconst mapping = entities?.reduce(\n\t\t( accumulator, entity ) => {\n\t\t\tconst { mapById, mapByName, names } = accumulator;\n\t\t\tmapById[ entity.id ] = entity;\n\t\t\tmapByName[ entity.name ] = entity;\n\t\t\tnames.push( entity.name );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ mapById: {}, mapByName: {}, names: [] }\n\t);\n\treturn {\n\t\tentities,\n\t\t...mapping,\n\t};\n};\n\n/**\n * Helper util to map records to add a `name` prop from a\n * provided path, in order to handle all entities in the same\n * fashion(implementing`IHasNameAndId` interface).\n *\n * @param {Object[]} entities The array of entities.\n * @param {string} path The path to map a `name` property from the entity.\n * @return {IHasNameAndId[]} An array of enitities that now implement the `IHasNameAndId` interface.\n */\nexport const mapToIHasNameAndId = ( entities, path ) => {\n\treturn ( entities || [] ).map( ( entity ) => ( {\n\t\t...entity,\n\t\tname: decodeEntities( get( entity, path ) ),\n\t} ) );\n};\n\n/**\n * Returns a helper object that contains:\n * 1. An `options` object from the available post types, to be passed to a `SelectControl`.\n * 2. A helper map with available taxonomies per post type.\n *\n * @return {Object} The helper object related to post types.\n */\nexport const usePostTypes = () => {\n\tconst postTypes = useSelect( ( select ) => {\n\t\tconst { getPostTypes } = select( coreStore );\n\t\tconst excludedPostTypes = [ 'attachment' ];\n\t\tconst filteredPostTypes = getPostTypes( { per_page: -1 } )?.filter(\n\t\t\t( { viewable, slug } ) =>\n\t\t\t\tviewable && ! excludedPostTypes.includes( slug )\n\t\t);\n\t\treturn filteredPostTypes;\n\t}, [] );\n\tconst postTypesTaxonomiesMap = useMemo( () => {\n\t\tif ( ! postTypes?.length ) return;\n\t\treturn postTypes.reduce( ( accumulator, type ) => {\n\t\t\taccumulator[ type.slug ] = type.taxonomies;\n\t\t\treturn accumulator;\n\t\t}, {} );\n\t}, [ postTypes ] );\n\tconst postTypesSelectOptions = useMemo(\n\t\t() =>\n\t\t\t( postTypes || [] ).map( ( { labels, slug } ) => ( {\n\t\t\t\tlabel: labels.singular_name,\n\t\t\t\tvalue: slug,\n\t\t\t} ) ),\n\t\t[ postTypes ]\n\t);\n\treturn { postTypesTaxonomiesMap, postTypesSelectOptions };\n};\n\n/**\n * Hook that returns the taxonomies associated with a specific post type.\n *\n * @param {string} postType The post type from which to retrieve the associated taxonomies.\n * @return {Object[]} An array of the associated taxonomies.\n */\nexport const useTaxonomies = ( postType ) => {\n\tconst taxonomies = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getTaxonomies } = select( coreStore );\n\t\t\tconst filteredTaxonomies = getTaxonomies( {\n\t\t\t\ttype: postType,\n\t\t\t\tper_page: -1,\n\t\t\t\tcontext: 'view',\n\t\t\t} );\n\t\t\treturn filteredTaxonomies;\n\t\t},\n\t\t[ postType ]\n\t);\n\treturn taxonomies;\n};\n\n/**\n * Hook that returns whether a specific post type is hierarchical.\n *\n * @param {string} postType The post type to check.\n * @return {boolean} Whether a specific post type is hierarchical.\n */\nexport function useIsPostTypeHierarchical( postType ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst type = select( coreStore ).getPostType( postType );\n\t\t\treturn type?.viewable && type?.hierarchical;\n\t\t},\n\t\t[ postType ]\n\t);\n}\n\n/**\n * Hook that returns the query properties' names defined by the active\n * block variation, to determine which block's filters to show.\n *\n * @param {Object} attributes Block attributes.\n * @return {string[]} An array of the query attributes.\n */\nexport function useAllowedControls( attributes ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( blocksStore ).getActiveBlockVariation(\n\t\t\t\tqueryLoopName,\n\t\t\t\tattributes\n\t\t\t)?.allowControls,\n\n\t\t[ attributes ]\n\t);\n}\nexport function isControlAllowed( allowedControls, key ) {\n\t// Every controls is allowed if the list is not defined.\n\tif ( ! allowedControls ) {\n\t\treturn true;\n\t}\n\treturn allowedControls.includes( key );\n}\n\n/**\n * Clones a pattern's blocks and then recurses over that list of blocks,\n * transforming them to retain some `query` attribute properties.\n * For now we retain the `postType` and `inherit` properties as they are\n * fundamental for the expected functionality of the block and don't affect\n * its design and presentation.\n *\n * Returns the cloned/transformed blocks and array of existing Query Loop\n * client ids for further manipulation, in order to avoid multiple recursions.\n *\n * @param {WPBlock[]} blocks The list of blocks to look through and transform(mutate).\n * @param {Record<string,*>} queryBlockAttributes The existing Query Loop's attributes.\n * @return {{ newBlocks: WPBlock[], queryClientIds: string[] }} An object with the cloned/transformed blocks and all the Query Loop clients from these blocks.\n */\nexport const getTransformedBlocksFromPattern = (\n\tblocks,\n\tqueryBlockAttributes\n) => {\n\tconst {\n\t\tquery: { postType, inherit },\n\t} = queryBlockAttributes;\n\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\tconst queryClientIds = [];\n\tconst blocksQueue = [ ...clonedBlocks ];\n\twhile ( blocksQueue.length > 0 ) {\n\t\tconst block = blocksQueue.shift();\n\t\tif ( block.name === 'core/query' ) {\n\t\t\tblock.attributes.query = {\n\t\t\t\t...block.attributes.query,\n\t\t\t\tpostType,\n\t\t\t\tinherit,\n\t\t\t};\n\t\t\tqueryClientIds.push( block.clientId );\n\t\t}\n\t\tblock.innerBlocks?.forEach( ( innerBlock ) => {\n\t\t\tblocksQueue.push( innerBlock );\n\t\t} );\n\t}\n\treturn { newBlocks: clonedBlocks, queryClientIds };\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/query/utils.js"],"names":["get","useSelect","useMemo","store","coreStore","blockEditorStore","decodeEntities","cloneBlock","blocksStore","getEntitiesInfo","entities","mapping","reduce","accumulator","entity","mapById","mapByName","names","id","name","push","mapToIHasNameAndId","path","map","usePostTypes","postTypes","select","getPostTypes","excludedPostTypes","filteredPostTypes","per_page","filter","viewable","slug","includes","postTypesTaxonomiesMap","length","type","taxonomies","postTypesSelectOptions","labels","label","singular_name","value","useTaxonomies","postType","getTaxonomies","filteredTaxonomies","context","useIsPostTypeHierarchical","getPostType","hierarchical","useAllowedControls","attributes","getActiveBlockVariation","queryLoopName","allowControls","isControlAllowed","allowedControls","key","getTransformedBlocksFromPattern","blocks","queryBlockAttributes","query","inherit","clonedBlocks","block","queryClientIds","blocksQueue","shift","clientId","innerBlocks","forEach","innerBlock","newBlocks","useBlockNameForPatterns","activeVariationName","blockName","activeVariationPatterns","getBlockRootClientId","__experimentalGetPatternsByBlockTypes","rootClientId"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { cloneBlock, store as blocksStore } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { name as queryLoopName } from './block.json';\n\n/**\n * @typedef IHasNameAndId\n * @property {string|number} id The entity's id.\n * @property {string} name The entity's name.\n */\n\n/**\n * The object used in Query block that contains info and helper mappings\n * from an array of IHasNameAndId objects.\n *\n * @typedef {Object} QueryEntitiesInfo\n * @property {IHasNameAndId[]} entities The array of entities.\n * @property {Object<string, IHasNameAndId>} mapById Object mapping with the id as key and the entity as value.\n * @property {Object<string, IHasNameAndId>} mapByName Object mapping with the name as key and the entity as value.\n * @property {string[]} names Array with the entities' names.\n */\n\n/**\n * Returns a helper object with mapping from Objects that implement\n * the `IHasNameAndId` interface. The returned object is used for\n * integration with `FormTokenField` component.\n *\n * @param {IHasNameAndId[]} entities The entities to extract of helper object.\n * @return {QueryEntitiesInfo} The object with the entities information.\n */\nexport const getEntitiesInfo = ( entities ) => {\n\tconst mapping = entities?.reduce(\n\t\t( accumulator, entity ) => {\n\t\t\tconst { mapById, mapByName, names } = accumulator;\n\t\t\tmapById[ entity.id ] = entity;\n\t\t\tmapByName[ entity.name ] = entity;\n\t\t\tnames.push( entity.name );\n\t\t\treturn accumulator;\n\t\t},\n\t\t{ mapById: {}, mapByName: {}, names: [] }\n\t);\n\treturn {\n\t\tentities,\n\t\t...mapping,\n\t};\n};\n\n/**\n * Helper util to map records to add a `name` prop from a\n * provided path, in order to handle all entities in the same\n * fashion(implementing`IHasNameAndId` interface).\n *\n * @param {Object[]} entities The array of entities.\n * @param {string} path The path to map a `name` property from the entity.\n * @return {IHasNameAndId[]} An array of enitities that now implement the `IHasNameAndId` interface.\n */\nexport const mapToIHasNameAndId = ( entities, path ) => {\n\treturn ( entities || [] ).map( ( entity ) => ( {\n\t\t...entity,\n\t\tname: decodeEntities( get( entity, path ) ),\n\t} ) );\n};\n\n/**\n * Returns a helper object that contains:\n * 1. An `options` object from the available post types, to be passed to a `SelectControl`.\n * 2. A helper map with available taxonomies per post type.\n *\n * @return {Object} The helper object related to post types.\n */\nexport const usePostTypes = () => {\n\tconst postTypes = useSelect( ( select ) => {\n\t\tconst { getPostTypes } = select( coreStore );\n\t\tconst excludedPostTypes = [ 'attachment' ];\n\t\tconst filteredPostTypes = getPostTypes( { per_page: -1 } )?.filter(\n\t\t\t( { viewable, slug } ) =>\n\t\t\t\tviewable && ! excludedPostTypes.includes( slug )\n\t\t);\n\t\treturn filteredPostTypes;\n\t}, [] );\n\tconst postTypesTaxonomiesMap = useMemo( () => {\n\t\tif ( ! postTypes?.length ) return;\n\t\treturn postTypes.reduce( ( accumulator, type ) => {\n\t\t\taccumulator[ type.slug ] = type.taxonomies;\n\t\t\treturn accumulator;\n\t\t}, {} );\n\t}, [ postTypes ] );\n\tconst postTypesSelectOptions = useMemo(\n\t\t() =>\n\t\t\t( postTypes || [] ).map( ( { labels, slug } ) => ( {\n\t\t\t\tlabel: labels.singular_name,\n\t\t\t\tvalue: slug,\n\t\t\t} ) ),\n\t\t[ postTypes ]\n\t);\n\treturn { postTypesTaxonomiesMap, postTypesSelectOptions };\n};\n\n/**\n * Hook that returns the taxonomies associated with a specific post type.\n *\n * @param {string} postType The post type from which to retrieve the associated taxonomies.\n * @return {Object[]} An array of the associated taxonomies.\n */\nexport const useTaxonomies = ( postType ) => {\n\tconst taxonomies = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getTaxonomies } = select( coreStore );\n\t\t\tconst filteredTaxonomies = getTaxonomies( {\n\t\t\t\ttype: postType,\n\t\t\t\tper_page: -1,\n\t\t\t\tcontext: 'view',\n\t\t\t} );\n\t\t\treturn filteredTaxonomies;\n\t\t},\n\t\t[ postType ]\n\t);\n\treturn taxonomies;\n};\n\n/**\n * Hook that returns whether a specific post type is hierarchical.\n *\n * @param {string} postType The post type to check.\n * @return {boolean} Whether a specific post type is hierarchical.\n */\nexport function useIsPostTypeHierarchical( postType ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst type = select( coreStore ).getPostType( postType );\n\t\t\treturn type?.viewable && type?.hierarchical;\n\t\t},\n\t\t[ postType ]\n\t);\n}\n\n/**\n * Hook that returns the query properties' names defined by the active\n * block variation, to determine which block's filters to show.\n *\n * @param {Object} attributes Block attributes.\n * @return {string[]} An array of the query attributes.\n */\nexport function useAllowedControls( attributes ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( blocksStore ).getActiveBlockVariation(\n\t\t\t\tqueryLoopName,\n\t\t\t\tattributes\n\t\t\t)?.allowControls,\n\n\t\t[ attributes ]\n\t);\n}\nexport function isControlAllowed( allowedControls, key ) {\n\t// Every controls is allowed if the list is not defined.\n\tif ( ! allowedControls ) {\n\t\treturn true;\n\t}\n\treturn allowedControls.includes( key );\n}\n\n/**\n * Clones a pattern's blocks and then recurses over that list of blocks,\n * transforming them to retain some `query` attribute properties.\n * For now we retain the `postType` and `inherit` properties as they are\n * fundamental for the expected functionality of the block and don't affect\n * its design and presentation.\n *\n * Returns the cloned/transformed blocks and array of existing Query Loop\n * client ids for further manipulation, in order to avoid multiple recursions.\n *\n * @param {WPBlock[]} blocks The list of blocks to look through and transform(mutate).\n * @param {Record<string,*>} queryBlockAttributes The existing Query Loop's attributes.\n * @return {{ newBlocks: WPBlock[], queryClientIds: string[] }} An object with the cloned/transformed blocks and all the Query Loop clients from these blocks.\n */\nexport const getTransformedBlocksFromPattern = (\n\tblocks,\n\tqueryBlockAttributes\n) => {\n\tconst {\n\t\tquery: { postType, inherit },\n\t} = queryBlockAttributes;\n\tconst clonedBlocks = blocks.map( ( block ) => cloneBlock( block ) );\n\tconst queryClientIds = [];\n\tconst blocksQueue = [ ...clonedBlocks ];\n\twhile ( blocksQueue.length > 0 ) {\n\t\tconst block = blocksQueue.shift();\n\t\tif ( block.name === 'core/query' ) {\n\t\t\tblock.attributes.query = {\n\t\t\t\t...block.attributes.query,\n\t\t\t\tpostType,\n\t\t\t\tinherit,\n\t\t\t};\n\t\t\tqueryClientIds.push( block.clientId );\n\t\t}\n\t\tblock.innerBlocks?.forEach( ( innerBlock ) => {\n\t\t\tblocksQueue.push( innerBlock );\n\t\t} );\n\t}\n\treturn { newBlocks: clonedBlocks, queryClientIds };\n};\n\n/**\n * Helper hook that determines if there is an active variation of the block\n * and if there are available specific patterns for this variation.\n * If there are, these patterns are going to be the only ones suggested to\n * the user in setup and replace flow, without including the default ones\n * for Query Loop.\n *\n * If there are no such patterns, the default ones for Query Loop are going\n * to be suggested.\n *\n * @param {string} clientId The block's client ID.\n * @param {Object} attributes The block's attributes.\n * @return {string} The block name to be used in the patterns suggestions.\n */\nexport function useBlockNameForPatterns( clientId, attributes ) {\n\tconst activeVariationName = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blocksStore ).getActiveBlockVariation(\n\t\t\t\tqueryLoopName,\n\t\t\t\tattributes\n\t\t\t)?.name,\n\n\t\t[ attributes ]\n\t);\n\tconst blockName = `${ queryLoopName }/${ activeVariationName }`;\n\tconst activeVariationPatterns = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! activeVariationName ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\t__experimentalGetPatternsByBlockTypes,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\treturn __experimentalGetPatternsByBlockTypes(\n\t\t\t\tblockName,\n\t\t\t\trootClientId\n\t\t\t);\n\t\t},\n\t\t[ clientId, activeVariationName ]\n\t);\n\treturn activeVariationPatterns?.length ? blockName : queryLoopName;\n}\n"]}
@@ -9,7 +9,7 @@ import classNames from 'classnames';
9
9
  */
10
10
 
11
11
  import { InspectorControls, URLPopover, URLInput, useBlockProps } from '@wordpress/block-editor';
12
- import { Fragment, useState, useRef } from '@wordpress/element';
12
+ import { Fragment, useState } from '@wordpress/element';
13
13
  import { Button, PanelBody, PanelRow, TextControl } from '@wordpress/components';
14
14
  import { __, sprintf } from '@wordpress/i18n';
15
15
  import { keyboardReturn } from '@wordpress/icons';
@@ -24,10 +24,10 @@ const SocialLinkURLPopover = _ref => {
24
24
  url,
25
25
  setAttributes,
26
26
  setPopover,
27
- anchorRef
27
+ popoverAnchor
28
28
  } = _ref;
29
29
  return createElement(URLPopover, {
30
- anchorRef: anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current,
30
+ anchor: popoverAnchor,
31
31
  onClose: () => setPopover(false)
32
32
  }, createElement("form", {
33
33
  className: "block-editor-url-popover__link-editor",
@@ -71,8 +71,10 @@ const SocialLinkEdit = _ref2 => {
71
71
  const [showURLPopover, setPopover] = useState(false);
72
72
  const classes = classNames('wp-social-link', 'wp-social-link-' + service, {
73
73
  'wp-social-link__is-incomplete': !url
74
- });
75
- const ref = useRef();
74
+ }); // Use internal state instead of a ref to make sure that the component
75
+ // re-renders when the popover's anchor updates.
76
+
77
+ const [popoverAnchor, setPopoverAnchor] = useState(null);
76
78
  const IconComponent = getIconBySite(service);
77
79
  const socialLinkName = getNameBySite(service);
78
80
  const socialLinkLabel = label !== null && label !== void 0 ? label : socialLinkName;
@@ -97,7 +99,7 @@ const SocialLinkEdit = _ref2 => {
97
99
  })
98
100
  })))), createElement("li", blockProps, createElement(Button, {
99
101
  className: "wp-block-social-link-anchor",
100
- ref: ref,
102
+ ref: setPopoverAnchor,
101
103
  onClick: () => setPopover(true)
102
104
  }, createElement(IconComponent, null), createElement("span", {
103
105
  className: classNames('wp-block-social-link-label', {
@@ -107,7 +109,7 @@ const SocialLinkEdit = _ref2 => {
107
109
  url: url,
108
110
  setAttributes: setAttributes,
109
111
  setPopover: setPopover,
110
- anchorRef: ref
112
+ popoverAnchor: popoverAnchor
111
113
  }))));
112
114
  };
113
115
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/social-link/edit.js"],"names":["classNames","InspectorControls","URLPopover","URLInput","useBlockProps","Fragment","useState","useRef","Button","PanelBody","PanelRow","TextControl","__","sprintf","keyboardReturn","getIconBySite","getNameBySite","SocialLinkURLPopover","url","setAttributes","setPopover","anchorRef","current","event","preventDefault","nextURL","SocialLinkEdit","attributes","context","isSelected","service","label","showLabels","iconColorValue","iconBackgroundColorValue","showURLPopover","classes","ref","IconComponent","socialLinkName","socialLinkLabel","blockProps","className","style","color","backgroundColor","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tInspectorControls,\n\tURLPopover,\n\tURLInput,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { Fragment, useState, useRef } from '@wordpress/element';\nimport {\n\tButton,\n\tPanelBody,\n\tPanelRow,\n\tTextControl,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { keyboardReturn } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getIconBySite, getNameBySite } from './social-list';\n\nconst SocialLinkURLPopover = ( {\n\turl,\n\tsetAttributes,\n\tsetPopover,\n\tanchorRef,\n} ) => (\n\t<URLPopover\n\t\tanchorRef={ anchorRef?.current }\n\t\tonClose={ () => setPopover( false ) }\n\t>\n\t\t<form\n\t\t\tclassName=\"block-editor-url-popover__link-editor\"\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetPopover( false );\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"block-editor-url-input\">\n\t\t\t\t<URLInput\n\t\t\t\t\tvalue={ url }\n\t\t\t\t\tonChange={ ( nextURL ) =>\n\t\t\t\t\t\tsetAttributes( { url: nextURL } )\n\t\t\t\t\t}\n\t\t\t\t\tplaceholder={ __( 'Enter address' ) }\n\t\t\t\t\tdisableSuggestions={ true }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<Button\n\t\t\t\ticon={ keyboardReturn }\n\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\ttype=\"submit\"\n\t\t\t/>\n\t\t</form>\n\t</URLPopover>\n);\n\nconst SocialLinkEdit = ( {\n\tattributes,\n\tcontext,\n\tisSelected,\n\tsetAttributes,\n} ) => {\n\tconst { url, service, label } = attributes;\n\tconst { showLabels, iconColorValue, iconBackgroundColorValue } = context;\n\tconst [ showURLPopover, setPopover ] = useState( false );\n\tconst classes = classNames( 'wp-social-link', 'wp-social-link-' + service, {\n\t\t'wp-social-link__is-incomplete': ! url,\n\t} );\n\n\tconst ref = useRef();\n\tconst IconComponent = getIconBySite( service );\n\tconst socialLinkName = getNameBySite( service );\n\tconst socialLinkLabel = label ?? socialLinkName;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t\tstyle: {\n\t\t\tcolor: iconColorValue,\n\t\t\tbackgroundColor: iconBackgroundColorValue,\n\t\t},\n\t} );\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t/* translators: %s: name of the social service. */\n\t\t\t\t\t\t__( '%s label' ),\n\t\t\t\t\t\tsocialLinkName\n\t\t\t\t\t) }\n\t\t\t\t\tinitialOpen={ false }\n\t\t\t\t>\n\t\t\t\t\t<PanelRow>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tlabel={ __( 'Link label' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Briefly describe the link to help screen reader users.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { label: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<li { ...blockProps }>\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"wp-block-social-link-anchor\"\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tonClick={ () => setPopover( true ) }\n\t\t\t\t>\n\t\t\t\t\t<IconComponent />\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ classNames( 'wp-block-social-link-label', {\n\t\t\t\t\t\t\t'screen-reader-text': ! showLabels,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ socialLinkLabel }\n\t\t\t\t\t</span>\n\t\t\t\t\t{ isSelected && showURLPopover && (\n\t\t\t\t\t\t<SocialLinkURLPopover\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tsetPopover={ setPopover }\n\t\t\t\t\t\t\tanchorRef={ ref }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t</Fragment>\n\t);\n};\n\nexport default SocialLinkEdit;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/social-link/edit.js"],"names":["classNames","InspectorControls","URLPopover","URLInput","useBlockProps","Fragment","useState","Button","PanelBody","PanelRow","TextControl","__","sprintf","keyboardReturn","getIconBySite","getNameBySite","SocialLinkURLPopover","url","setAttributes","setPopover","popoverAnchor","event","preventDefault","nextURL","SocialLinkEdit","attributes","context","isSelected","service","label","showLabels","iconColorValue","iconBackgroundColorValue","showURLPopover","classes","setPopoverAnchor","IconComponent","socialLinkName","socialLinkLabel","blockProps","className","style","color","backgroundColor","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tInspectorControls,\n\tURLPopover,\n\tURLInput,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { Fragment, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tPanelBody,\n\tPanelRow,\n\tTextControl,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { keyboardReturn } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { getIconBySite, getNameBySite } from './social-list';\n\nconst SocialLinkURLPopover = ( {\n\turl,\n\tsetAttributes,\n\tsetPopover,\n\tpopoverAnchor,\n} ) => (\n\t<URLPopover anchor={ popoverAnchor } onClose={ () => setPopover( false ) }>\n\t\t<form\n\t\t\tclassName=\"block-editor-url-popover__link-editor\"\n\t\t\tonSubmit={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetPopover( false );\n\t\t\t} }\n\t\t>\n\t\t\t<div className=\"block-editor-url-input\">\n\t\t\t\t<URLInput\n\t\t\t\t\tvalue={ url }\n\t\t\t\t\tonChange={ ( nextURL ) =>\n\t\t\t\t\t\tsetAttributes( { url: nextURL } )\n\t\t\t\t\t}\n\t\t\t\t\tplaceholder={ __( 'Enter address' ) }\n\t\t\t\t\tdisableSuggestions={ true }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<Button\n\t\t\t\ticon={ keyboardReturn }\n\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\ttype=\"submit\"\n\t\t\t/>\n\t\t</form>\n\t</URLPopover>\n);\n\nconst SocialLinkEdit = ( {\n\tattributes,\n\tcontext,\n\tisSelected,\n\tsetAttributes,\n} ) => {\n\tconst { url, service, label } = attributes;\n\tconst { showLabels, iconColorValue, iconBackgroundColorValue } = context;\n\tconst [ showURLPopover, setPopover ] = useState( false );\n\tconst classes = classNames( 'wp-social-link', 'wp-social-link-' + service, {\n\t\t'wp-social-link__is-incomplete': ! url,\n\t} );\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\n\tconst IconComponent = getIconBySite( service );\n\tconst socialLinkName = getNameBySite( service );\n\tconst socialLinkLabel = label ?? socialLinkName;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t\tstyle: {\n\t\t\tcolor: iconColorValue,\n\t\t\tbackgroundColor: iconBackgroundColorValue,\n\t\t},\n\t} );\n\n\treturn (\n\t\t<Fragment>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t/* translators: %s: name of the social service. */\n\t\t\t\t\t\t__( '%s label' ),\n\t\t\t\t\t\tsocialLinkName\n\t\t\t\t\t) }\n\t\t\t\t\tinitialOpen={ false }\n\t\t\t\t>\n\t\t\t\t\t<PanelRow>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tlabel={ __( 'Link label' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Briefly describe the link to help screen reader users.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { label: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelRow>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<li { ...blockProps }>\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"wp-block-social-link-anchor\"\n\t\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\t\tonClick={ () => setPopover( true ) }\n\t\t\t\t>\n\t\t\t\t\t<IconComponent />\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ classNames( 'wp-block-social-link-label', {\n\t\t\t\t\t\t\t'screen-reader-text': ! showLabels,\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ socialLinkLabel }\n\t\t\t\t\t</span>\n\t\t\t\t\t{ isSelected && showURLPopover && (\n\t\t\t\t\t\t<SocialLinkURLPopover\n\t\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tsetPopover={ setPopover }\n\t\t\t\t\t\t\tpopoverAnchor={ popoverAnchor }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Button>\n\t\t\t</li>\n\t\t</Fragment>\n\t);\n};\n\nexport default SocialLinkEdit;\n"]}
@@ -9,7 +9,7 @@ import { store as noticesStore } from '@wordpress/notices';
9
9
  import { useDispatch } from '@wordpress/data';
10
10
  import { parse } from '@wordpress/blocks';
11
11
  import { useAsyncList } from '@wordpress/compose';
12
- import { __experimentalBlockPatternsList as BlockPatternsList, store as blockEditorStore } from '@wordpress/block-editor';
12
+ import { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
13
13
  import { SearchControl, __experimentalHStack as HStack } from '@wordpress/components';
14
14
  /**
15
15
  * Internal dependencies
@@ -26,10 +26,7 @@ export default function TemplatePartSelectionModal(_ref) {
26
26
  area,
27
27
  clientId
28
28
  } = _ref;
29
- const [searchValue, setSearchValue] = useState(''); // When the templatePartId is undefined,
30
- // it means the user is creating a new one from the placeholder.
31
-
32
- const isReplacingTemplatePartContent = !!templatePartId;
29
+ const [searchValue, setSearchValue] = useState('');
33
30
  const {
34
31
  templateParts
35
32
  } = useAlternativeTemplateParts(area, templatePartId); // We can map template parts to block patters to reuse the BlockPatternsList UI
@@ -52,9 +49,6 @@ export default function TemplatePartSelectionModal(_ref) {
52
49
  const {
53
50
  createSuccessNotice
54
51
  } = useDispatch(noticesStore);
55
- const {
56
- replaceInnerBlocks
57
- } = useDispatch(blockEditorStore);
58
52
  const onTemplatePartSelect = useCallback(templatePart => {
59
53
  var _templatePart$title;
60
54
 
@@ -92,12 +86,7 @@ export default function TemplatePartSelectionModal(_ref) {
92
86
  blockPatterns: filteredBlockPatterns,
93
87
  shownPatterns: shownBlockPatterns,
94
88
  onClickPattern: (pattern, blocks) => {
95
- if (isReplacingTemplatePartContent) {
96
- replaceInnerBlocks(clientId, blocks);
97
- } else {
98
- createFromBlocks(blocks, pattern.title);
99
- }
100
-
89
+ createFromBlocks(blocks, pattern.title);
101
90
  onClose();
102
91
  }
103
92
  })), !hasTemplateParts && !hasBlockPatterns && createElement(HStack, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/template-part/edit/selection-modal.js"],"names":["useCallback","useMemo","useState","__","sprintf","store","noticesStore","useDispatch","parse","useAsyncList","__experimentalBlockPatternsList","BlockPatternsList","blockEditorStore","SearchControl","__experimentalHStack","HStack","useAlternativeBlockPatterns","useAlternativeTemplateParts","useCreateTemplatePartFromBlocks","createTemplatePartId","searchPatterns","TemplatePartSelectionModal","setAttributes","onClose","templatePartId","area","clientId","searchValue","setSearchValue","isReplacingTemplatePartContent","templateParts","filteredTemplateParts","partsAsPatterns","map","templatePart","name","theme","slug","title","rendered","blocks","content","raw","shownTemplateParts","blockPatterns","filteredBlockPatterns","shownBlockPatterns","createSuccessNotice","replaceInnerBlocks","onTemplatePartSelect","undefined","type","createFromBlocks","hasTemplateParts","length","hasBlockPatterns","pattern"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { parse } from '@wordpress/blocks';\nimport { useAsyncList } from '@wordpress/compose';\nimport {\n\t__experimentalBlockPatternsList as BlockPatternsList,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport { searchPatterns } from './utils/search';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\t// When the templatePartId is undefined,\n\t// it means the user is creating a new one from the placeholder.\n\tconst isReplacingTemplatePartContent = !! templatePartId;\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\t// We can map template parts to block patters to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) => ( {\n\t\t\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\t\t\ttitle: templatePart.title.rendered,\n\t\t\tblocks: parse( templatePart.content.raw ),\n\t\t\ttemplatePart,\n\t\t} ) );\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst shownTemplateParts = useAsyncList( filteredTemplateParts );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\tconst shownBlockPatterns = useAsyncList( filteredBlockPatterns );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { replaceInnerBlocks } = useDispatch( blockEditorStore );\n\n\tconst onTemplatePartSelect = useCallback( ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t}, [] );\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search for replacements' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tshownPatterns={ shownTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ hasBlockPatterns && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Patterns' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\t\t\t\tonClickPattern={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\tif ( isReplacingTemplatePartContent ) {\n\t\t\t\t\t\t\t\treplaceInnerBlocks( clientId, blocks );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcreateFromBlocks( blocks, pattern.title );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/template-part/edit/selection-modal.js"],"names":["useCallback","useMemo","useState","__","sprintf","store","noticesStore","useDispatch","parse","useAsyncList","__experimentalBlockPatternsList","BlockPatternsList","SearchControl","__experimentalHStack","HStack","useAlternativeBlockPatterns","useAlternativeTemplateParts","useCreateTemplatePartFromBlocks","createTemplatePartId","searchPatterns","TemplatePartSelectionModal","setAttributes","onClose","templatePartId","area","clientId","searchValue","setSearchValue","templateParts","filteredTemplateParts","partsAsPatterns","map","templatePart","name","theme","slug","title","rendered","blocks","content","raw","shownTemplateParts","blockPatterns","filteredBlockPatterns","shownBlockPatterns","createSuccessNotice","onTemplatePartSelect","undefined","type","createFromBlocks","hasTemplateParts","length","hasBlockPatterns","pattern"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { parse } from '@wordpress/blocks';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport { searchPatterns } from './utils/search';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\t// We can map template parts to block patters to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) => ( {\n\t\t\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\t\t\ttitle: templatePart.title.rendered,\n\t\t\tblocks: parse( templatePart.content.raw ),\n\t\t\ttemplatePart,\n\t\t} ) );\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst shownTemplateParts = useAsyncList( filteredTemplateParts );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\tconst shownBlockPatterns = useAsyncList( filteredBlockPatterns );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst onTemplatePartSelect = useCallback( ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t}, [] );\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search for replacements' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tshownPatterns={ shownTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ hasBlockPatterns && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Patterns' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\t\t\t\tonClickPattern={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\tcreateFromBlocks( blocks, pattern.title );\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-library",
3
- "version": "7.14.0",
3
+ "version": "7.14.2",
4
4
  "description": "Block library for the WordPress editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -31,32 +31,32 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.16.0",
34
- "@wordpress/a11y": "^3.17.0",
35
- "@wordpress/api-fetch": "^6.14.0",
36
- "@wordpress/autop": "^3.17.0",
37
- "@wordpress/blob": "^3.17.0",
38
- "@wordpress/block-editor": "^10.0.0",
39
- "@wordpress/blocks": "^11.16.0",
40
- "@wordpress/components": "^21.0.0",
41
- "@wordpress/compose": "^5.15.0",
42
- "@wordpress/core-data": "^5.0.0",
43
- "@wordpress/data": "^7.1.0",
44
- "@wordpress/date": "^4.17.0",
45
- "@wordpress/deprecated": "^3.17.0",
46
- "@wordpress/dom": "^3.17.0",
47
- "@wordpress/element": "^4.15.0",
48
- "@wordpress/hooks": "^3.17.0",
49
- "@wordpress/html-entities": "^3.17.0",
50
- "@wordpress/i18n": "^4.17.0",
51
- "@wordpress/icons": "^9.8.0",
52
- "@wordpress/keycodes": "^3.17.0",
53
- "@wordpress/notices": "^3.17.0",
54
- "@wordpress/primitives": "^3.15.0",
55
- "@wordpress/reusable-blocks": "^3.15.0",
56
- "@wordpress/rich-text": "^5.15.0",
57
- "@wordpress/server-side-render": "^3.15.0",
58
- "@wordpress/url": "^3.18.0",
59
- "@wordpress/viewport": "^4.15.0",
34
+ "@wordpress/a11y": "^3.17.1",
35
+ "@wordpress/api-fetch": "^6.14.1",
36
+ "@wordpress/autop": "^3.17.1",
37
+ "@wordpress/blob": "^3.17.1",
38
+ "@wordpress/block-editor": "^10.0.2",
39
+ "@wordpress/blocks": "^11.16.2",
40
+ "@wordpress/components": "^21.0.2",
41
+ "@wordpress/compose": "^5.15.2",
42
+ "@wordpress/core-data": "^5.0.2",
43
+ "@wordpress/data": "^7.1.2",
44
+ "@wordpress/date": "^4.17.1",
45
+ "@wordpress/deprecated": "^3.17.1",
46
+ "@wordpress/dom": "^3.17.2",
47
+ "@wordpress/element": "^4.15.1",
48
+ "@wordpress/hooks": "^3.17.1",
49
+ "@wordpress/html-entities": "^3.17.1",
50
+ "@wordpress/i18n": "^4.17.1",
51
+ "@wordpress/icons": "^9.8.1",
52
+ "@wordpress/keycodes": "^3.17.1",
53
+ "@wordpress/notices": "^3.17.2",
54
+ "@wordpress/primitives": "^3.15.1",
55
+ "@wordpress/reusable-blocks": "^3.15.2",
56
+ "@wordpress/rich-text": "^5.15.2",
57
+ "@wordpress/server-side-render": "^3.15.2",
58
+ "@wordpress/url": "^3.18.1",
59
+ "@wordpress/viewport": "^4.15.2",
60
60
  "change-case": "^4.1.2",
61
61
  "classnames": "^2.3.1",
62
62
  "colord": "^2.7.0",
@@ -73,5 +73,5 @@
73
73
  "publishConfig": {
74
74
  "access": "public"
75
75
  },
76
- "gitHead": "0d732d4b184adcb28cc83087603e81b764390d4b"
76
+ "gitHead": "f6021282457317c7e12dcc3a3f02c9ac28e16a30"
77
77
  }
@@ -30,6 +30,7 @@ import {
30
30
  import { displayShortcut, isKeyboardEvent } from '@wordpress/keycodes';
31
31
  import { link, linkOff } from '@wordpress/icons';
32
32
  import { createBlock } from '@wordpress/blocks';
33
+ import { useMergeRefs } from '@wordpress/compose';
33
34
 
34
35
  const NEW_TAB_REL = 'noreferrer noopener';
35
36
 
@@ -114,12 +115,19 @@ function ButtonEdit( props ) {
114
115
  }
115
116
  }
116
117
 
118
+ // Use internal state instead of a ref to make sure that the component
119
+ // re-renders when the popover's anchor updates.
120
+ const [ popoverAnchor, setPopoverAnchor ] = useState( null );
121
+
117
122
  const borderProps = useBorderProps( attributes );
118
123
  const colorProps = useColorProps( attributes );
119
124
  const spacingProps = useSpacingProps( attributes );
120
125
  const ref = useRef();
121
126
  const richTextRef = useRef();
122
- const blockProps = useBlockProps( { ref, onKeyDown } );
127
+ const blockProps = useBlockProps( {
128
+ ref: useMergeRefs( [ setPopoverAnchor, ref ] ),
129
+ onKeyDown,
130
+ } );
123
131
 
124
132
  const [ isEditingURL, setIsEditingURL ] = useState( false );
125
133
  const isURLSet = !! url;
@@ -218,7 +226,7 @@ function ButtonEdit( props ) {
218
226
  setIsEditingURL( false );
219
227
  richTextRef.current?.focus();
220
228
  } }
221
- anchorRef={ ref?.current }
229
+ anchor={ popoverAnchor }
222
230
  focusOnMount={ isEditingURL ? 'firstElement' : false }
223
231
  __unstableSlotName={ '__unstable-block-tools-after' }
224
232
  shift
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "templateLock": {
21
21
  "type": [ "string", "boolean" ],
22
- "enum": [ "all", "insert", "noContent", false ]
22
+ "enum": [ "all", "insert", "contentOnly", false ]
23
23
  }
24
24
  },
25
25
  "supports": {
@@ -109,7 +109,7 @@ add_action( 'init', 'register_block_core_comments' );
109
109
  */
110
110
  function comments_block_form_defaults( $fields ) {
111
111
  if ( wp_is_block_theme() ) {
112
- $fields['submit_button'] = '<input name="%1$s" type="submit" id="%2$s" class="%3$s wp-block-button__link ' . wp_theme_element_class_name( 'button' ) . '" value="%4$s" />';
112
+ $fields['submit_button'] = '<input name="%1$s" type="submit" id="%2$s" class="%3$s wp-block-button__link ' . wp_theme_get_element_class_name( 'button' ) . '" value="%4$s" />';
113
113
  $fields['submit_field'] = '<p class="form-submit wp-block-button">%1$s %2$s</p>';
114
114
  }
115
115
 
@@ -73,7 +73,7 @@
73
73
  },
74
74
  "templateLock": {
75
75
  "type": [ "string", "boolean" ],
76
- "enum": [ "all", "insert", "noContent", false ]
76
+ "enum": [ "all", "insert", "contentOnly", false ]
77
77
  }
78
78
  },
79
79
  "usesContext": [ "postId", "postType" ],
@@ -14,13 +14,7 @@
14
14
  },
15
15
  "templateLock": {
16
16
  "type": [ "string", "boolean" ],
17
- "enum": [ "all", "insert", "noContent", false ]
18
- },
19
- "layout": {
20
- "type": "object",
21
- "default": {
22
- "type": "constrained"
23
- }
17
+ "enum": [ "all", "insert", "contentOnly", false ]
24
18
  }
25
19
  },
26
20
  "supports": {
package/src/group/edit.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useSelect, useDispatch } from '@wordpress/data';
5
- import { useEffect } from '@wordpress/element';
4
+ import { useSelect } from '@wordpress/data';
5
+
6
6
  import {
7
7
  InnerBlocks,
8
8
  useBlockProps,
@@ -70,16 +70,6 @@ function GroupEdit( { attributes, setAttributes, clientId } ) {
70
70
  }
71
71
  );
72
72
 
73
- const { __unstableMarkNextChangeAsNotPersistent } =
74
- useDispatch( blockEditorStore );
75
- const { type: layoutType = null } = layout;
76
- useEffect( () => {
77
- if ( layoutType ) {
78
- __unstableMarkNextChangeAsNotPersistent();
79
- setAttributes( { layout: { ...layout, type: layoutType } } );
80
- }
81
- }, [ layoutType ] );
82
-
83
73
  return (
84
74
  <>
85
75
  <InspectorControls __experimentalGroup="advanced">
@@ -41,6 +41,7 @@ const transforms = {
41
41
  'core/group',
42
42
  {
43
43
  align: widestAlignment,
44
+ layout: { type: 'constrained' },
44
45
  },
45
46
  groupInnerBlocks
46
47
  );
@@ -10,7 +10,8 @@ const variations = [
10
10
  title: __( 'Group' ),
11
11
  description: __( 'Gather blocks in a container.' ),
12
12
  attributes: { layout: { type: 'constrained' } },
13
- scope: [ 'transform' ],
13
+ isDefault: true,
14
+ scope: [ 'inserter', 'transform' ],
14
15
  isActive: ( blockAttributes ) =>
15
16
  ! blockAttributes.layout ||
16
17
  ! blockAttributes.layout?.type ||