@wordpress/block-library 8.31.0 → 8.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/block/edit.js +5 -8
  3. package/build/block/edit.js.map +1 -1
  4. package/build/button/edit.native.js +1 -1
  5. package/build/button/edit.native.js.map +1 -1
  6. package/build/image/edit.js +10 -39
  7. package/build/image/edit.js.map +1 -1
  8. package/build/image/image.js +27 -6
  9. package/build/image/image.js.map +1 -1
  10. package/build/navigation/view.js +12 -2
  11. package/build/navigation/view.js.map +1 -1
  12. package/build/navigation-link/edit.js +41 -18
  13. package/build/navigation-link/edit.js.map +1 -1
  14. package/build/navigation-submenu/edit.js +27 -9
  15. package/build/navigation-submenu/edit.js.map +1 -1
  16. package/build/pattern/edit.js +3 -1
  17. package/build/pattern/edit.js.map +1 -1
  18. package/build/post-featured-image/edit.js +12 -3
  19. package/build/post-featured-image/edit.js.map +1 -1
  20. package/build/post-featured-image/index.js +8 -3
  21. package/build/post-featured-image/index.js.map +1 -1
  22. package/build/post-featured-image/overlay-controls.js +82 -0
  23. package/build/post-featured-image/overlay-controls.js.map +1 -0
  24. package/build/post-featured-image/overlay.js +5 -54
  25. package/build/post-featured-image/overlay.js.map +1 -1
  26. package/build/quote/edit.js +18 -23
  27. package/build/quote/edit.js.map +1 -1
  28. package/build/site-tagline/edit.js +13 -4
  29. package/build/site-tagline/edit.js.map +1 -1
  30. package/build/site-tagline/index.js +4 -0
  31. package/build/site-tagline/index.js.map +1 -1
  32. package/build/template-part/edit/index.js +55 -47
  33. package/build/template-part/edit/index.js.map +1 -1
  34. package/build/template-part/edit/inner-blocks.js +106 -10
  35. package/build/template-part/edit/inner-blocks.js.map +1 -1
  36. package/build/template-part/edit/selection-modal.js +1 -9
  37. package/build/template-part/edit/selection-modal.js.map +1 -1
  38. package/build/utils/caption.js +19 -13
  39. package/build/utils/caption.js.map +1 -1
  40. package/build/utils/hooks.js +1 -0
  41. package/build/utils/hooks.js.map +1 -1
  42. package/build-module/block/edit.js +5 -8
  43. package/build-module/block/edit.js.map +1 -1
  44. package/build-module/button/edit.native.js +1 -1
  45. package/build-module/button/edit.native.js.map +1 -1
  46. package/build-module/image/edit.js +11 -40
  47. package/build-module/image/edit.js.map +1 -1
  48. package/build-module/image/image.js +27 -6
  49. package/build-module/image/image.js.map +1 -1
  50. package/build-module/navigation/view.js +12 -2
  51. package/build-module/navigation/view.js.map +1 -1
  52. package/build-module/navigation-link/edit.js +43 -20
  53. package/build-module/navigation-link/edit.js.map +1 -1
  54. package/build-module/navigation-submenu/edit.js +27 -9
  55. package/build-module/navigation-submenu/edit.js.map +1 -1
  56. package/build-module/pattern/edit.js +3 -1
  57. package/build-module/pattern/edit.js.map +1 -1
  58. package/build-module/post-featured-image/edit.js +12 -3
  59. package/build-module/post-featured-image/edit.js.map +1 -1
  60. package/build-module/post-featured-image/index.js +8 -3
  61. package/build-module/post-featured-image/index.js.map +1 -1
  62. package/build-module/post-featured-image/overlay-controls.js +75 -0
  63. package/build-module/post-featured-image/overlay-controls.js.map +1 -0
  64. package/build-module/post-featured-image/overlay.js +7 -56
  65. package/build-module/post-featured-image/overlay.js.map +1 -1
  66. package/build-module/quote/edit.js +20 -25
  67. package/build-module/quote/edit.js.map +1 -1
  68. package/build-module/site-tagline/edit.js +14 -5
  69. package/build-module/site-tagline/edit.js.map +1 -1
  70. package/build-module/site-tagline/index.js +4 -0
  71. package/build-module/site-tagline/index.js.map +1 -1
  72. package/build-module/template-part/edit/index.js +58 -50
  73. package/build-module/template-part/edit/index.js.map +1 -1
  74. package/build-module/template-part/edit/inner-blocks.js +108 -12
  75. package/build-module/template-part/edit/inner-blocks.js.map +1 -1
  76. package/build-module/template-part/edit/selection-modal.js +2 -10
  77. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  78. package/build-module/utils/caption.js +19 -13
  79. package/build-module/utils/caption.js.map +1 -1
  80. package/build-module/utils/hooks.js +1 -0
  81. package/build-module/utils/hooks.js.map +1 -1
  82. package/build-style/audio/theme-rtl.css +1 -1
  83. package/build-style/audio/theme.css +1 -1
  84. package/build-style/cover/style-rtl.css +5 -2
  85. package/build-style/cover/style.css +5 -2
  86. package/build-style/editor-rtl.css +12 -8
  87. package/build-style/editor.css +12 -8
  88. package/build-style/embed/theme-rtl.css +1 -1
  89. package/build-style/embed/theme.css +1 -1
  90. package/build-style/image/theme-rtl.css +1 -1
  91. package/build-style/image/theme.css +1 -1
  92. package/build-style/pullquote/theme-rtl.css +2 -1
  93. package/build-style/pullquote/theme.css +2 -1
  94. package/build-style/quote/theme-rtl.css +6 -6
  95. package/build-style/quote/theme.css +6 -6
  96. package/build-style/search/style-rtl.css +10 -0
  97. package/build-style/search/style.css +10 -0
  98. package/build-style/social-links/editor-rtl.css +0 -4
  99. package/build-style/social-links/editor.css +0 -4
  100. package/build-style/style-rtl.css +15 -2
  101. package/build-style/style.css +15 -2
  102. package/build-style/table/theme-rtl.css +4 -3
  103. package/build-style/table/theme.css +4 -3
  104. package/build-style/template-part/editor-rtl.css +12 -4
  105. package/build-style/template-part/editor.css +12 -4
  106. package/build-style/template-part/theme-rtl.css +1 -1
  107. package/build-style/template-part/theme.css +1 -1
  108. package/build-style/theme-rtl.css +17 -15
  109. package/build-style/theme.css +17 -15
  110. package/build-style/video/theme-rtl.css +1 -1
  111. package/build-style/video/theme.css +1 -1
  112. package/package.json +34 -34
  113. package/src/audio/theme.scss +1 -1
  114. package/src/block/edit.js +5 -17
  115. package/src/button/edit.native.js +1 -1
  116. package/src/cover/style.scss +6 -2
  117. package/src/embed/theme.scss +1 -1
  118. package/src/gallery/editor.scss +1 -1
  119. package/src/gallery/index.php +1 -1
  120. package/src/image/edit.js +11 -40
  121. package/src/image/editor.scss +2 -2
  122. package/src/image/image.js +25 -7
  123. package/src/image/theme.scss +1 -1
  124. package/src/navigation/index.php +8 -0
  125. package/src/navigation/view.js +11 -2
  126. package/src/navigation-link/edit.js +53 -27
  127. package/src/navigation-submenu/edit.js +30 -10
  128. package/src/pattern/edit.js +4 -0
  129. package/src/post-featured-image/block.json +8 -3
  130. package/src/post-featured-image/edit.js +12 -1
  131. package/src/post-featured-image/editor.scss +1 -1
  132. package/src/post-featured-image/overlay-controls.js +88 -0
  133. package/src/post-featured-image/overlay.js +17 -84
  134. package/src/pullquote/theme.scss +3 -1
  135. package/src/query-no-results/index.php +2 -0
  136. package/src/query-pagination-next/index.php +2 -0
  137. package/src/query-pagination-numbers/index.php +2 -0
  138. package/src/quote/edit.js +27 -43
  139. package/src/quote/test/edit.native.js +4 -6
  140. package/src/quote/theme.scss +1 -2
  141. package/src/search/style.scss +11 -0
  142. package/src/site-logo/editor.scss +2 -2
  143. package/src/site-tagline/block.json +4 -0
  144. package/src/site-tagline/edit.js +16 -3
  145. package/src/site-tagline/index.php +9 -1
  146. package/src/social-links/editor.scss +1 -9
  147. package/src/table/theme.scss +4 -2
  148. package/src/template-part/edit/index.js +87 -79
  149. package/src/template-part/edit/inner-blocks.js +126 -13
  150. package/src/template-part/edit/selection-modal.js +1 -22
  151. package/src/template-part/editor.scss +11 -3
  152. package/src/template-part/index.php +2 -0
  153. package/src/template-part/theme.scss +1 -1
  154. package/src/utils/caption.js +19 -16
  155. package/src/utils/hooks.js +1 -0
  156. package/src/video/editor.scss +2 -2
  157. package/src/video/theme.scss +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","RangeControl","__experimentalToolsPanelItem","ToolsPanelItem","InspectorControls","withColors","__experimentalColorGradientSettingsDropdown","ColorGradientSettingsDropdown","__experimentalUseGradient","__experimentalUseMultipleOriginColorsAndGradients","useMultipleOriginColorsAndGradients","__experimentalUseBorderProps","useBorderProps","compose","__","dimRatioToClass","Overlay","clientId","attributes","setAttributes","overlayColor","setOverlayColor","dimRatio","gradientClass","gradientValue","setGradient","colorGradientSettings","borderProps","overlayStyles","backgroundColor","color","backgroundImage","style","hasColorsOrGradients","createElement","Fragment","className","class","undefined","group","__experimentalIsRenderedInSidebar","settings","colorValue","label","onColorChange","onGradientChange","isShownByDefault","resetAllFilter","customOverlayColor","gradient","customGradient","panelId","hasValue","onDeselect","__nextHasNoMarginBottom","value","onChange","newDimRatio","min","max","step","required","__next40pxDefaultSize"],"sources":["@wordpress/block-library/src/post-featured-image/overlay.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRangeControl,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport {\n\tInspectorControls,\n\twithColors,\n\t__experimentalColorGradientSettingsDropdown as ColorGradientSettingsDropdown,\n\t__experimentalUseGradient,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport { compose } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { dimRatioToClass } from './utils';\n\nconst Overlay = ( {\n\tclientId,\n\tattributes,\n\tsetAttributes,\n\toverlayColor,\n\tsetOverlayColor,\n} ) => {\n\tconst { dimRatio } = attributes;\n\tconst { gradientClass, gradientValue, setGradient } =\n\t\t__experimentalUseGradient();\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst overlayStyles = {\n\t\tbackgroundColor: overlayColor.color,\n\t\tbackgroundImage: gradientValue,\n\t\t...borderProps.style,\n\t};\n\n\tif ( ! colorGradientSettings.hasColorsOrGradients ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ !! dimRatio && (\n\t\t\t\t<span\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t'wp-block-post-featured-image__overlay',\n\t\t\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[ overlayColor.class ]: overlayColor.class,\n\t\t\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tborderProps.className\n\t\t\t\t\t) }\n\t\t\t\t\tstyle={ overlayStyles }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<InspectorControls group=\"color\">\n\t\t\t\t<ColorGradientSettingsDropdown\n\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\tsettings={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcolorValue: overlayColor.color,\n\t\t\t\t\t\t\tgradientValue,\n\t\t\t\t\t\t\tlabel: __( 'Overlay' ),\n\t\t\t\t\t\t\tonColorChange: setOverlayColor,\n\t\t\t\t\t\t\tonGradientChange: setGradient,\n\t\t\t\t\t\t\tisShownByDefault: true,\n\t\t\t\t\t\t\tresetAllFilter: () => ( {\n\t\t\t\t\t\t\t\toverlayColor: undefined,\n\t\t\t\t\t\t\t\tcustomOverlayColor: undefined,\n\t\t\t\t\t\t\t\tgradient: undefined,\n\t\t\t\t\t\t\t\tcustomGradient: undefined,\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\tpanelId={ clientId }\n\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t/>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => dimRatio !== undefined }\n\t\t\t\t\tlabel={ __( 'Overlay opacity' ) }\n\t\t\t\t\tonDeselect={ () => setAttributes( { dimRatio: 0 } ) }\n\t\t\t\t\tresetAllFilter={ () => ( {\n\t\t\t\t\t\tdimRatio: 0,\n\t\t\t\t\t} ) }\n\t\t\t\t\tisShownByDefault\n\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Overlay opacity' ) }\n\t\t\t\t\t\tvalue={ dimRatio }\n\t\t\t\t\t\tonChange={ ( newDimRatio ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tdimRatio: newDimRatio,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\tmax={ 100 }\n\t\t\t\t\t\tstep={ 10 }\n\t\t\t\t\t\trequired\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n};\n\nexport default compose( [\n\twithColors( { overlayColor: 'background-color' } ),\n] )( Overlay );\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","withColors","__experimentalUseGradient","__experimentalUseMultipleOriginColorsAndGradients","useMultipleOriginColorsAndGradients","__experimentalUseBorderProps","useBorderProps","compose","dimRatioToClass","Overlay","attributes","overlayColor","dimRatio","gradientClass","gradientValue","colorGradientSettings","borderProps","overlayStyles","backgroundColor","color","backgroundImage","style","hasColorsOrGradients","createElement","className","class","undefined"],"sources":["@wordpress/block-library/src/post-featured-image/overlay.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\twithColors,\n\t__experimentalUseGradient,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { dimRatioToClass } from './utils';\n\nconst Overlay = ( { attributes, overlayColor } ) => {\n\tconst { dimRatio } = attributes;\n\tconst { gradientClass, gradientValue } = __experimentalUseGradient();\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\n\tconst borderProps = useBorderProps( attributes );\n\tconst overlayStyles = {\n\t\tbackgroundColor: overlayColor.color,\n\t\tbackgroundImage: gradientValue,\n\t\t...borderProps.style,\n\t};\n\n\tif ( ! colorGradientSettings.hasColorsOrGradients || ! dimRatio ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<span\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName={ classnames(\n\t\t\t\t'wp-block-post-featured-image__overlay',\n\t\t\t\tdimRatioToClass( dimRatio ),\n\t\t\t\t{\n\t\t\t\t\t[ overlayColor.class ]: overlayColor.class,\n\t\t\t\t\t'has-background-dim': dimRatio !== undefined,\n\t\t\t\t\t'has-background-gradient': gradientValue,\n\t\t\t\t\t[ gradientClass ]: gradientClass,\n\t\t\t\t},\n\t\t\t\tborderProps.className\n\t\t\t) }\n\t\t\tstyle={ overlayStyles }\n\t\t/>\n\t);\n};\n\nexport default compose( [\n\twithColors( { overlayColor: 'background-color' } ),\n] )( Overlay );\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SACCC,UAAU,EACVC,yBAAyB,EACzBC,iDAAiD,IAAIC,mCAAmC,EACxFC,4BAA4B,IAAIC,cAAc,QACxC,yBAAyB;AAChC,SAASC,OAAO,QAAQ,oBAAoB;;AAE5C;AACA;AACA;AACA,SAASC,eAAe,QAAQ,SAAS;AAEzC,MAAMC,OAAO,GAAGA,CAAE;EAAEC,UAAU;EAAEC;AAAa,CAAC,KAAM;EACnD,MAAM;IAAEC;EAAS,CAAC,GAAGF,UAAU;EAC/B,MAAM;IAAEG,aAAa;IAAEC;EAAc,CAAC,GAAGZ,yBAAyB,CAAC,CAAC;EACpE,MAAMa,qBAAqB,GAAGX,mCAAmC,CAAC,CAAC;EAEnE,MAAMY,WAAW,GAAGV,cAAc,CAAEI,UAAW,CAAC;EAChD,MAAMO,aAAa,GAAG;IACrBC,eAAe,EAAEP,YAAY,CAACQ,KAAK;IACnCC,eAAe,EAAEN,aAAa;IAC9B,GAAGE,WAAW,CAACK;EAChB,CAAC;EAED,IAAK,CAAEN,qBAAqB,CAACO,oBAAoB,IAAI,CAAEV,QAAQ,EAAG;IACjE,OAAO,IAAI;EACZ;EAEA,OACCW,aAAA;IACC,eAAY,MAAM;IAClBC,SAAS,EAAGxB,UAAU,CACrB,uCAAuC,EACvCQ,eAAe,CAAEI,QAAS,CAAC,EAC3B;MACC,CAAED,YAAY,CAACc,KAAK,GAAId,YAAY,CAACc,KAAK;MAC1C,oBAAoB,EAAEb,QAAQ,KAAKc,SAAS;MAC5C,yBAAyB,EAAEZ,aAAa;MACxC,CAAED,aAAa,GAAIA;IACpB,CAAC,EACDG,WAAW,CAACQ,SACb,CAAG;IACHH,KAAK,EAAGJ;EAAe,CACvB,CAAC;AAEJ,CAAC;AAED,eAAeV,OAAO,CAAE,CACvBN,UAAU,CAAE;EAAEU,YAAY,EAAE;AAAmB,CAAE,CAAC,CACjD,CAAC,CAAEF,OAAQ,CAAC"}
@@ -8,17 +8,18 @@ import classNames from 'classnames';
8
8
  * WordPress dependencies
9
9
  */
10
10
  import { __ } from '@wordpress/i18n';
11
- import { AlignmentControl, BlockControls, RichText, useBlockProps, useInnerBlocksProps, store as blockEditorStore } from '@wordpress/block-editor';
11
+ import { AlignmentControl, BlockControls, useBlockProps, useInnerBlocksProps, store as blockEditorStore } from '@wordpress/block-editor';
12
12
  import { BlockQuotation } from '@wordpress/components';
13
- import { useDispatch, useSelect, useRegistry } from '@wordpress/data';
14
- import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
13
+ import { useDispatch, useRegistry } from '@wordpress/data';
15
14
  import { Platform, useEffect } from '@wordpress/element';
16
15
  import deprecated from '@wordpress/deprecated';
16
+ import { verse } from '@wordpress/icons';
17
17
 
18
18
  /**
19
19
  * Internal dependencies
20
20
  */
21
21
  import { migrateToQuoteV2 } from './deprecated';
22
+ import { Caption } from '../utils/caption';
22
23
  const isWebPlatform = Platform.OS === 'web';
23
24
  const TEMPLATE = [['core/paragraph', {}]];
24
25
 
@@ -61,20 +62,13 @@ export default function QuoteEdit({
61
62
  insertBlocksAfter,
62
63
  clientId,
63
64
  className,
64
- style
65
+ style,
66
+ isSelected
65
67
  }) {
66
68
  const {
67
- textAlign,
68
- citation
69
+ textAlign
69
70
  } = attributes;
70
71
  useMigrateOnLoad(attributes, clientId);
71
- const hasSelection = useSelect(select => {
72
- const {
73
- isBlockSelected,
74
- hasSelectedInnerBlock
75
- } = select(blockEditorStore);
76
- return hasSelectedInnerBlock(clientId, true) || isBlockSelected(clientId);
77
- }, [clientId]);
78
72
  const blockProps = useBlockProps({
79
73
  className: classNames(className, {
80
74
  [`has-text-align-${textAlign}`]: textAlign
@@ -86,7 +80,8 @@ export default function QuoteEdit({
86
80
  const innerBlocksProps = useInnerBlocksProps(blockProps, {
87
81
  template: TEMPLATE,
88
82
  templateInsertUpdatesSelection: true,
89
- __experimentalCaptureToolbars: true
83
+ __experimentalCaptureToolbars: true,
84
+ renderAppender: false
90
85
  });
91
86
  return createElement(Fragment, null, createElement(BlockControls, {
92
87
  group: "block"
@@ -99,26 +94,26 @@ export default function QuoteEdit({
99
94
  }
100
95
  })), createElement(BlockQuotation, {
101
96
  ...innerBlocksProps
102
- }, innerBlocksProps.children, (!RichText.isEmpty(citation) || hasSelection) && createElement(RichText, {
103
- identifier: "citation",
97
+ }, innerBlocksProps.children, createElement(Caption, {
98
+ attributeKey: "citation",
104
99
  tagName: isWebPlatform ? 'cite' : undefined,
105
- style: {
100
+ style: isWebPlatform && {
106
101
  display: 'block'
107
102
  },
108
- value: citation,
109
- onChange: nextCitation => {
110
- setAttributes({
111
- citation: nextCitation
112
- });
113
- },
103
+ isSelected: isSelected,
104
+ attributes: attributes,
105
+ setAttributes: setAttributes,
114
106
  __unstableMobileNoFocusOnMount: true,
115
- "aria-label": __('Quote citation'),
107
+ icon: verse,
108
+ label: __('Quote citation'),
116
109
  placeholder:
117
110
  // translators: placeholder text used for the
118
111
  // citation
119
112
  __('Add citation'),
113
+ addLabel: __('Add citation'),
114
+ removeLabel: __('Remove citation'),
120
115
  className: "wp-block-quote__citation",
121
- __unstableOnSplitAtEnd: () => insertBlocksAfter(createBlock(getDefaultBlockName())),
116
+ insertBlocksAfter: insertBlocksAfter,
122
117
  ...(!isWebPlatform ? {
123
118
  textAlign
124
119
  } : {})
@@ -1 +1 @@
1
- {"version":3,"names":["classNames","__","AlignmentControl","BlockControls","RichText","useBlockProps","useInnerBlocksProps","store","blockEditorStore","BlockQuotation","useDispatch","useSelect","useRegistry","createBlock","getDefaultBlockName","Platform","useEffect","deprecated","migrateToQuoteV2","isWebPlatform","OS","TEMPLATE","useMigrateOnLoad","attributes","clientId","registry","updateBlockAttributes","replaceInnerBlocks","value","newAttributes","newInnerBlocks","since","version","alternative","batch","QuoteEdit","setAttributes","insertBlocksAfter","className","style","textAlign","citation","hasSelection","select","isBlockSelected","hasSelectedInnerBlock","blockProps","innerBlocksProps","template","templateInsertUpdatesSelection","__experimentalCaptureToolbars","createElement","Fragment","group","onChange","nextAlign","children","isEmpty","identifier","tagName","undefined","display","nextCitation","__unstableMobileNoFocusOnMount","placeholder","__unstableOnSplitAtEnd"],"sources":["@wordpress/block-library/src/quote/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tRichText,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { BlockQuotation } from '@wordpress/components';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { Platform, useEffect } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport { migrateToQuoteV2 } from './deprecated';\n\nconst isWebPlatform = Platform.OS === 'web';\n\nconst TEMPLATE = [ [ 'core/paragraph', {} ] ];\n\n/**\n * At the moment, deprecations don't handle create blocks from attributes\n * (like when using CPT templates). For this reason, this hook is necessary\n * to avoid breaking templates using the old quote block format.\n *\n * @param {Object} attributes Block attributes.\n * @param {string} clientId Block client ID.\n */\nconst useMigrateOnLoad = ( attributes, clientId ) => {\n\tconst registry = useRegistry();\n\tconst { updateBlockAttributes, replaceInnerBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tuseEffect( () => {\n\t\t// As soon as the block is loaded, migrate it to the new version.\n\n\t\tif ( ! attributes.value ) {\n\t\t\t// No need to migrate if it doesn't have the value attribute.\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ newAttributes, newInnerBlocks ] =\n\t\t\tmigrateToQuoteV2( attributes );\n\n\t\tdeprecated( 'Value attribute on the quote block', {\n\t\t\tsince: '6.0',\n\t\t\tversion: '6.5',\n\t\t\talternative: 'inner blocks',\n\t\t} );\n\n\t\tregistry.batch( () => {\n\t\t\tupdateBlockAttributes( clientId, newAttributes );\n\t\t\treplaceInnerBlocks( clientId, newInnerBlocks );\n\t\t} );\n\t}, [ attributes.value ] );\n};\n\nexport default function QuoteEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tclientId,\n\tclassName,\n\tstyle,\n} ) {\n\tconst { textAlign, citation } = attributes;\n\n\tuseMigrateOnLoad( attributes, clientId );\n\n\tconst hasSelection = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn (\n\t\t\t\thasSelectedInnerBlock( clientId, true ) ||\n\t\t\t\tisBlockSelected( clientId )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classNames( className, {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t\t...( ! isWebPlatform && { style } ),\n\t} );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t\ttemplateInsertUpdatesSelection: true,\n\t\t__experimentalCaptureToolbars: true,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<BlockQuotation { ...innerBlocksProps }>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t{ ( ! RichText.isEmpty( citation ) || hasSelection ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\tidentifier=\"citation\"\n\t\t\t\t\t\ttagName={ isWebPlatform ? 'cite' : undefined }\n\t\t\t\t\t\tstyle={ { display: 'block' } }\n\t\t\t\t\t\tvalue={ citation }\n\t\t\t\t\t\tonChange={ ( nextCitation ) => {\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tcitation: nextCitation,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t__unstableMobileNoFocusOnMount\n\t\t\t\t\t\taria-label={ __( 'Quote citation' ) }\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t// translators: placeholder text used for the\n\t\t\t\t\t\t\t// citation\n\t\t\t\t\t\t\t__( 'Add citation' )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName=\"wp-block-quote__citation\"\n\t\t\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\t\t\tinsertBlocksAfter(\n\t\t\t\t\t\t\t\tcreateBlock( getDefaultBlockName() )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t{ ...( ! isWebPlatform ? { textAlign } : {} ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockQuotation>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["classNames","__","AlignmentControl","BlockControls","useBlockProps","useInnerBlocksProps","store","blockEditorStore","BlockQuotation","useDispatch","useRegistry","Platform","useEffect","deprecated","verse","migrateToQuoteV2","Caption","isWebPlatform","OS","TEMPLATE","useMigrateOnLoad","attributes","clientId","registry","updateBlockAttributes","replaceInnerBlocks","value","newAttributes","newInnerBlocks","since","version","alternative","batch","QuoteEdit","setAttributes","insertBlocksAfter","className","style","isSelected","textAlign","blockProps","innerBlocksProps","template","templateInsertUpdatesSelection","__experimentalCaptureToolbars","renderAppender","createElement","Fragment","group","onChange","nextAlign","children","attributeKey","tagName","undefined","display","__unstableMobileNoFocusOnMount","icon","label","placeholder","addLabel","removeLabel"],"sources":["@wordpress/block-library/src/quote/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { BlockQuotation } from '@wordpress/components';\nimport { useDispatch, useRegistry } from '@wordpress/data';\nimport { Platform, useEffect } from '@wordpress/element';\nimport deprecated from '@wordpress/deprecated';\nimport { verse } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { migrateToQuoteV2 } from './deprecated';\nimport { Caption } from '../utils/caption';\n\nconst isWebPlatform = Platform.OS === 'web';\n\nconst TEMPLATE = [ [ 'core/paragraph', {} ] ];\n\n/**\n * At the moment, deprecations don't handle create blocks from attributes\n * (like when using CPT templates). For this reason, this hook is necessary\n * to avoid breaking templates using the old quote block format.\n *\n * @param {Object} attributes Block attributes.\n * @param {string} clientId Block client ID.\n */\nconst useMigrateOnLoad = ( attributes, clientId ) => {\n\tconst registry = useRegistry();\n\tconst { updateBlockAttributes, replaceInnerBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\tuseEffect( () => {\n\t\t// As soon as the block is loaded, migrate it to the new version.\n\n\t\tif ( ! attributes.value ) {\n\t\t\t// No need to migrate if it doesn't have the value attribute.\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ newAttributes, newInnerBlocks ] =\n\t\t\tmigrateToQuoteV2( attributes );\n\n\t\tdeprecated( 'Value attribute on the quote block', {\n\t\t\tsince: '6.0',\n\t\t\tversion: '6.5',\n\t\t\talternative: 'inner blocks',\n\t\t} );\n\n\t\tregistry.batch( () => {\n\t\t\tupdateBlockAttributes( clientId, newAttributes );\n\t\t\treplaceInnerBlocks( clientId, newInnerBlocks );\n\t\t} );\n\t}, [ attributes.value ] );\n};\n\nexport default function QuoteEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tclientId,\n\tclassName,\n\tstyle,\n\tisSelected,\n} ) {\n\tconst { textAlign } = attributes;\n\n\tuseMigrateOnLoad( attributes, clientId );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classNames( className, {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t\t...( ! isWebPlatform && { style } ),\n\t} );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: TEMPLATE,\n\t\ttemplateInsertUpdatesSelection: true,\n\t\t__experimentalCaptureToolbars: true,\n\t\trenderAppender: false,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<BlockQuotation { ...innerBlocksProps }>\n\t\t\t\t{ innerBlocksProps.children }\n\t\t\t\t<Caption\n\t\t\t\t\tattributeKey=\"citation\"\n\t\t\t\t\ttagName={ isWebPlatform ? 'cite' : undefined }\n\t\t\t\t\tstyle={ isWebPlatform && { display: 'block' } }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t__unstableMobileNoFocusOnMount\n\t\t\t\t\ticon={ verse }\n\t\t\t\t\tlabel={ __( 'Quote citation' ) }\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t// translators: placeholder text used for the\n\t\t\t\t\t\t// citation\n\t\t\t\t\t\t__( 'Add citation' )\n\t\t\t\t\t}\n\t\t\t\t\taddLabel={ __( 'Add citation' ) }\n\t\t\t\t\tremoveLabel={ __( 'Remove citation' ) }\n\t\t\t\t\tclassName=\"wp-block-quote__citation\"\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\t{ ...( ! isWebPlatform ? { textAlign } : {} ) }\n\t\t\t\t/>\n\t\t\t</BlockQuotation>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -9,16 +9,18 @@ import classnames from 'classnames';
9
9
  */
10
10
  import { useDispatch, useSelect } from '@wordpress/data';
11
11
  import { store as coreStore } from '@wordpress/core-data';
12
- import { AlignmentControl, useBlockProps, BlockControls, RichText } from '@wordpress/block-editor';
12
+ import { AlignmentControl, useBlockProps, BlockControls, HeadingLevelDropdown, RichText } from '@wordpress/block-editor';
13
13
  import { __ } from '@wordpress/i18n';
14
14
  import { createBlock, getDefaultBlockName } from '@wordpress/blocks';
15
+ const HEADING_LEVELS = [0, 1, 2, 3, 4, 5, 6];
15
16
  export default function SiteTaglineEdit({
16
17
  attributes,
17
18
  setAttributes,
18
19
  insertBlocksAfter
19
20
  }) {
20
21
  const {
21
- textAlign
22
+ textAlign,
23
+ level
22
24
  } = attributes;
23
25
  const {
24
26
  canUserEdit,
@@ -37,6 +39,7 @@ export default function SiteTaglineEdit({
37
39
  tagline: canEdit ? settings?.description : readOnlySettings?.description
38
40
  };
39
41
  }, []);
42
+ const TagName = level === 0 ? 'p' : `h${level}`;
40
43
  const {
41
44
  editEntityRecord
42
45
  } = useDispatch(coreStore);
@@ -56,17 +59,23 @@ export default function SiteTaglineEdit({
56
59
  onChange: setTagline,
57
60
  "aria-label": __('Site tagline text'),
58
61
  placeholder: __('Write site tagline…'),
59
- tagName: "p",
62
+ tagName: TagName,
60
63
  value: tagline,
61
64
  disableLineBreaks: true,
62
65
  __unstableOnSplitAtEnd: () => insertBlocksAfter(createBlock(getDefaultBlockName())),
63
66
  ...blockProps
64
- }) : createElement("p", {
67
+ }) : createElement(TagName, {
65
68
  ...blockProps
66
69
  }, tagline || __('Site Tagline placeholder'));
67
70
  return createElement(Fragment, null, createElement(BlockControls, {
68
71
  group: "block"
69
- }, createElement(AlignmentControl, {
72
+ }, createElement(HeadingLevelDropdown, {
73
+ options: HEADING_LEVELS,
74
+ value: level,
75
+ onChange: newLevel => setAttributes({
76
+ level: newLevel
77
+ })
78
+ }), createElement(AlignmentControl, {
70
79
  onChange: newAlign => setAttributes({
71
80
  textAlign: newAlign
72
81
  }),
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useDispatch","useSelect","store","coreStore","AlignmentControl","useBlockProps","BlockControls","RichText","__","createBlock","getDefaultBlockName","SiteTaglineEdit","attributes","setAttributes","insertBlocksAfter","textAlign","canUserEdit","tagline","select","canUser","getEntityRecord","getEditedEntityRecord","canEdit","settings","readOnlySettings","description","editEntityRecord","setTagline","newTagline","undefined","blockProps","className","siteTaglineContent","createElement","allowedFormats","onChange","placeholder","tagName","value","disableLineBreaks","__unstableOnSplitAtEnd","Fragment","group","newAlign"],"sources":["@wordpress/block-library/src/site-tagline/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport {\n\tAlignmentControl,\n\tuseBlockProps,\n\tBlockControls,\n\tRichText,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\n\nexport default function SiteTaglineEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { textAlign } = attributes;\n\tconst { canUserEdit, tagline } = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEditedEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst canEdit = canUser( 'update', 'settings' );\n\t\tconst settings = canEdit ? getEditedEntityRecord( 'root', 'site' ) : {};\n\t\tconst readOnlySettings = getEntityRecord( 'root', '__unstableBase' );\n\n\t\treturn {\n\t\t\tcanUserEdit: canUser( 'update', 'settings' ),\n\t\t\ttagline: canEdit\n\t\t\t\t? settings?.description\n\t\t\t\t: readOnlySettings?.description,\n\t\t};\n\t}, [] );\n\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tfunction setTagline( newTagline ) {\n\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\tdescription: newTagline,\n\t\t} );\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t'wp-block-site-tagline__placeholder': ! canUserEdit && ! tagline,\n\t\t} ),\n\t} );\n\tconst siteTaglineContent = canUserEdit ? (\n\t\t<RichText\n\t\t\tallowedFormats={ [] }\n\t\t\tonChange={ setTagline }\n\t\t\taria-label={ __( 'Site tagline text' ) }\n\t\t\tplaceholder={ __( 'Write site tagline…' ) }\n\t\t\ttagName=\"p\"\n\t\t\tvalue={ tagline }\n\t\t\tdisableLineBreaks\n\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t}\n\t\t\t{ ...blockProps }\n\t\t/>\n\t) : (\n\t\t<p { ...blockProps }>{ tagline || __( 'Site Tagline placeholder' ) }</p>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\t\tsetAttributes( { textAlign: newAlign } )\n\t\t\t\t\t}\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ siteTaglineContent }\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,SAAS,QAAQ,sBAAsB;AACzD,SACCC,gBAAgB,EAChBC,aAAa,EACbC,aAAa,EACbC,QAAQ,QACF,yBAAyB;AAChC,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,WAAW,EAAEC,mBAAmB,QAAQ,mBAAmB;AAEpE,eAAe,SAASC,eAAeA,CAAE;EACxCC,UAAU;EACVC,aAAa;EACbC;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAU,CAAC,GAAGH,UAAU;EAChC,MAAM;IAAEI,WAAW;IAAEC;EAAQ,CAAC,GAAGhB,SAAS,CAAIiB,MAAM,IAAM;IACzD,MAAM;MAAEC,OAAO;MAAEC,eAAe;MAAEC;IAAsB,CAAC,GACxDH,MAAM,CAAEf,SAAU,CAAC;IACpB,MAAMmB,OAAO,GAAGH,OAAO,CAAE,QAAQ,EAAE,UAAW,CAAC;IAC/C,MAAMI,QAAQ,GAAGD,OAAO,GAAGD,qBAAqB,CAAE,MAAM,EAAE,MAAO,CAAC,GAAG,CAAC,CAAC;IACvE,MAAMG,gBAAgB,GAAGJ,eAAe,CAAE,MAAM,EAAE,gBAAiB,CAAC;IAEpE,OAAO;MACNJ,WAAW,EAAEG,OAAO,CAAE,QAAQ,EAAE,UAAW,CAAC;MAC5CF,OAAO,EAAEK,OAAO,GACbC,QAAQ,EAAEE,WAAW,GACrBD,gBAAgB,EAAEC;IACtB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEC;EAAiB,CAAC,GAAG1B,WAAW,CAAEG,SAAU,CAAC;EAErD,SAASwB,UAAUA,CAAEC,UAAU,EAAG;IACjCF,gBAAgB,CAAE,MAAM,EAAE,MAAM,EAAEG,SAAS,EAAE;MAC5CJ,WAAW,EAAEG;IACd,CAAE,CAAC;EACJ;EAEA,MAAME,UAAU,GAAGzB,aAAa,CAAE;IACjC0B,SAAS,EAAEhC,UAAU,CAAE;MACtB,CAAG,kBAAkBgB,SAAW,EAAC,GAAIA,SAAS;MAC9C,oCAAoC,EAAE,CAAEC,WAAW,IAAI,CAAEC;IAC1D,CAAE;EACH,CAAE,CAAC;EACH,MAAMe,kBAAkB,GAAGhB,WAAW,GACrCiB,aAAA,CAAC1B,QAAQ;IACR2B,cAAc,EAAG,EAAI;IACrBC,QAAQ,EAAGR,UAAY;IACvB,cAAanB,EAAE,CAAE,mBAAoB,CAAG;IACxC4B,WAAW,EAAG5B,EAAE,CAAE,qBAAsB,CAAG;IAC3C6B,OAAO,EAAC,GAAG;IACXC,KAAK,EAAGrB,OAAS;IACjBsB,iBAAiB;IACjBC,sBAAsB,EAAGA,CAAA,KACxB1B,iBAAiB,CAAEL,WAAW,CAAEC,mBAAmB,CAAC,CAAE,CAAE,CACxD;IAAA,GACIoB;EAAU,CACf,CAAC,GAEFG,aAAA;IAAA,GAAQH;EAAU,GAAKb,OAAO,IAAIT,EAAE,CAAE,0BAA2B,CAAM,CACvE;EACD,OACCyB,aAAA,CAAAQ,QAAA,QACCR,aAAA,CAAC3B,aAAa;IAACoC,KAAK,EAAC;EAAO,GAC3BT,aAAA,CAAC7B,gBAAgB;IAChB+B,QAAQ,EAAKQ,QAAQ,IACpB9B,aAAa,CAAE;MAAEE,SAAS,EAAE4B;IAAS,CAAE,CACvC;IACDL,KAAK,EAAGvB;EAAW,CACnB,CACa,CAAC,EACdiB,kBACD,CAAC;AAEL"}
1
+ {"version":3,"names":["classnames","useDispatch","useSelect","store","coreStore","AlignmentControl","useBlockProps","BlockControls","HeadingLevelDropdown","RichText","__","createBlock","getDefaultBlockName","HEADING_LEVELS","SiteTaglineEdit","attributes","setAttributes","insertBlocksAfter","textAlign","level","canUserEdit","tagline","select","canUser","getEntityRecord","getEditedEntityRecord","canEdit","settings","readOnlySettings","description","TagName","editEntityRecord","setTagline","newTagline","undefined","blockProps","className","siteTaglineContent","createElement","allowedFormats","onChange","placeholder","tagName","value","disableLineBreaks","__unstableOnSplitAtEnd","Fragment","group","options","newLevel","newAlign"],"sources":["@wordpress/block-library/src/site-tagline/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport {\n\tAlignmentControl,\n\tuseBlockProps,\n\tBlockControls,\n\tHeadingLevelDropdown,\n\tRichText,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\n\nconst HEADING_LEVELS = [ 0, 1, 2, 3, 4, 5, 6 ];\n\nexport default function SiteTaglineEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { textAlign, level } = attributes;\n\tconst { canUserEdit, tagline } = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEditedEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst canEdit = canUser( 'update', 'settings' );\n\t\tconst settings = canEdit ? getEditedEntityRecord( 'root', 'site' ) : {};\n\t\tconst readOnlySettings = getEntityRecord( 'root', '__unstableBase' );\n\n\t\treturn {\n\t\t\tcanUserEdit: canUser( 'update', 'settings' ),\n\t\t\ttagline: canEdit\n\t\t\t\t? settings?.description\n\t\t\t\t: readOnlySettings?.description,\n\t\t};\n\t}, [] );\n\n\tconst TagName = level === 0 ? 'p' : `h${ level }`;\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tfunction setTagline( newTagline ) {\n\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\tdescription: newTagline,\n\t\t} );\n\t}\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t'wp-block-site-tagline__placeholder': ! canUserEdit && ! tagline,\n\t\t} ),\n\t} );\n\tconst siteTaglineContent = canUserEdit ? (\n\t\t<RichText\n\t\t\tallowedFormats={ [] }\n\t\t\tonChange={ setTagline }\n\t\t\taria-label={ __( 'Site tagline text' ) }\n\t\t\tplaceholder={ __( 'Write site tagline…' ) }\n\t\t\ttagName={ TagName }\n\t\t\tvalue={ tagline }\n\t\t\tdisableLineBreaks\n\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t}\n\t\t\t{ ...blockProps }\n\t\t/>\n\t) : (\n\t\t<TagName { ...blockProps }>\n\t\t\t{ tagline || __( 'Site Tagline placeholder' ) }\n\t\t</TagName>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\toptions={ HEADING_LEVELS }\n\t\t\t\t\tvalue={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tonChange={ ( newAlign ) =>\n\t\t\t\t\t\tsetAttributes( { textAlign: newAlign } )\n\t\t\t\t\t}\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t{ siteTaglineContent }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -14,6 +14,10 @@ const metadata = {
14
14
  attributes: {
15
15
  textAlign: {
16
16
  type: "string"
17
+ },
18
+ level: {
19
+ type: "number",
20
+ "default": 0
17
21
  }
18
22
  },
19
23
  example: {},
@@ -1 +1 @@
1
- {"version":3,"names":["initBlock","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","attributes","textAlign","type","example","supports","align","html","color","gradients","__experimentalDefaultControls","background","text","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalTextTransform","__experimentalTextDecoration","__experimentalFontStyle","__experimentalFontWeight","__experimentalLetterSpacing","interactivity","clientNavigation","editorStyle","edit","icon","deprecated","settings","init"],"sources":["@wordpress/block-library/src/site-tagline/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport icon from './icon';\nimport deprecated from './deprecated';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,SAAA;MAAAC,IAAA;IAAA;EAAA;EAAAC,OAAA;EAAAC,QAAA;IAAAC,KAAA;IAAAC,IAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;MAAAL,6BAAA;QAAAI,MAAA;QAAAC,OAAA;MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,uBAAA;MAAAC,wBAAA;MAAAC,2BAAA;MAAAd,6BAAA;QAAAO,QAAA;MAAA;IAAA;IAAAQ,aAAA;MAAAC,gBAAA;IAAA;EAAA;EAAAC,WAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAEnC;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMoC,QAAQ,GAAG;EACvBF,IAAI;EACJD,IAAI;EACJE;AACD,CAAC;AAED,OAAO,MAAME,IAAI,GAAGA,CAAA,KAAMzC,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEuC;AAAS,CAAE,CAAC"}
1
+ {"version":3,"names":["initBlock","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","attributes","textAlign","type","level","example","supports","align","html","color","gradients","__experimentalDefaultControls","background","text","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalTextTransform","__experimentalTextDecoration","__experimentalFontStyle","__experimentalFontWeight","__experimentalLetterSpacing","interactivity","clientNavigation","editorStyle","edit","icon","deprecated","settings","init"],"sources":["@wordpress/block-library/src/site-tagline/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport icon from './icon';\nimport deprecated from './deprecated';\n\nconst { name } = metadata;\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,qBAAqB;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,SAAA;MAAAC,IAAA;IAAA;IAAAC,KAAA;MAAAD,IAAA;MAAA;IAAA;EAAA;EAAAE,OAAA;EAAAC,QAAA;IAAAC,KAAA;IAAAC,IAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;MAAAL,6BAAA;QAAAI,MAAA;QAAAC,OAAA;MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,uBAAA;MAAAC,wBAAA;MAAAC,2BAAA;MAAAd,6BAAA;QAAAO,QAAA;MAAA;IAAA;IAAAQ,aAAA;MAAAC,gBAAA;IAAA;EAAA;EAAAC,WAAA;AAAA;AAE5C,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,UAAU,MAAM,cAAc;AAErC,MAAM;EAAEpC;AAAK,CAAC,GAAGH,QAAQ;AACzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMqC,QAAQ,GAAG;EACvBF,IAAI;EACJD,IAAI;EACJE;AACD,CAAC;AAED,OAAO,MAAME,IAAI,GAAGA,CAAA,KAAM1C,SAAS,CAAE;EAAEI,IAAI;EAAEH,QAAQ;EAAEwC;AAAS,CAAE,CAAC"}
@@ -2,9 +2,10 @@ import { createElement, Fragment } from "react";
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
+ import { serialize } from '@wordpress/blocks';
5
6
  import { useSelect, useDispatch } from '@wordpress/data';
6
- import { BlockSettingsMenuControls, useBlockProps, Warning, store as blockEditorStore, RecursionProvider, useHasRecursion, InspectorControls, __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';
7
- import { PanelBody, Spinner, Modal, MenuItem } from '@wordpress/components';
7
+ import { BlockSettingsMenuControls, useBlockProps, Warning, store as blockEditorStore, RecursionProvider, useHasRecursion, InspectorControls, __experimentalBlockPatternsList as BlockPatternsList, BlockControls } from '@wordpress/block-editor';
8
+ import { PanelBody, Spinner, Modal, MenuItem, ToolbarButton } from '@wordpress/components';
8
9
  import { useAsyncList } from '@wordpress/compose';
9
10
  import { __, sprintf } from '@wordpress/i18n';
10
11
  import { store as coreStore } from '@wordpress/core-data';
@@ -19,21 +20,20 @@ import TemplatePartSelectionModal from './selection-modal';
19
20
  import { TemplatePartAdvancedControls } from './advanced-controls';
20
21
  import TemplatePartInnerBlocks from './inner-blocks';
21
22
  import { createTemplatePartId } from './utils/create-template-part-id';
22
- import { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';
23
- import { useAlternativeBlockPatterns, useAlternativeTemplateParts, useTemplatePartArea, useCreateTemplatePartFromBlocks } from './utils/hooks';
23
+ import { useAlternativeBlockPatterns, useAlternativeTemplateParts, useTemplatePartArea } from './utils/hooks';
24
24
  function ReplaceButton({
25
25
  isEntityAvailable,
26
26
  area,
27
- clientId,
28
27
  templatePartId,
29
28
  isTemplatePartSelectionOpen,
30
29
  setIsTemplatePartSelectionOpen
31
30
  }) {
31
+ // This hook fetches patterns, so don't run it unconditionally in the main
32
+ // edit function!
32
33
  const {
33
34
  templateParts
34
35
  } = useAlternativeTemplateParts(area, templatePartId);
35
- const blockPatterns = useAlternativeBlockPatterns(area, clientId);
36
- const hasReplacements = !!templateParts.length || !!blockPatterns.length;
36
+ const hasReplacements = !!templateParts.length;
37
37
  const canReplace = isEntityAvailable && hasReplacements && (area === 'header' || area === 'footer');
38
38
  if (!canReplace) {
39
39
  return null;
@@ -47,19 +47,28 @@ function ReplaceButton({
47
47
  }, __('Replace'));
48
48
  }
49
49
  function TemplatesList({
50
- availableTemplates,
50
+ area,
51
+ clientId,
52
+ isEntityAvailable,
51
53
  onSelect
52
54
  }) {
53
- const shownTemplates = useAsyncList(availableTemplates);
54
- if (!availableTemplates) {
55
+ // This hook fetches patterns, so don't run it unconditionally in the main
56
+ // edit function!
57
+ const blockPatterns = useAlternativeBlockPatterns(area, clientId);
58
+ const canReplace = isEntityAvailable && !!blockPatterns.length && (area === 'header' || area === 'footer');
59
+ const shownTemplates = useAsyncList(blockPatterns);
60
+ if (!canReplace) {
55
61
  return null;
56
62
  }
57
- return createElement(BlockPatternsList, {
63
+ return createElement(PanelBody, {
64
+ title: __('Design')
65
+ }, createElement(BlockPatternsList, {
58
66
  label: __('Templates'),
59
- blockPatterns: availableTemplates,
67
+ blockPatterns: blockPatterns,
60
68
  shownPatterns: shownTemplates,
61
- onClickPattern: onSelect
62
- });
69
+ onClickPattern: onSelect,
70
+ showTitle: false
71
+ }));
63
72
  }
64
73
  export default function TemplatePartEdit({
65
74
  attributes,
@@ -69,6 +78,9 @@ export default function TemplatePartEdit({
69
78
  const {
70
79
  createSuccessNotice
71
80
  } = useDispatch(noticesStore);
81
+ const {
82
+ editEntityRecord
83
+ } = useDispatch(coreStore);
72
84
  const currentTheme = useSelect(select => select(coreStore).getCurrentTheme()?.stylesheet, []);
73
85
  const {
74
86
  slug,
@@ -83,14 +95,17 @@ export default function TemplatePartEdit({
83
95
  isResolved,
84
96
  hasInnerBlocks,
85
97
  isMissing,
86
- area
98
+ area,
99
+ onNavigateToEntityRecord,
100
+ title
87
101
  } = useSelect(select => {
88
102
  const {
89
103
  getEditedEntityRecord,
90
104
  hasFinishedResolution
91
105
  } = select(coreStore);
92
106
  const {
93
- getBlockCount
107
+ getBlockCount,
108
+ getSettings
94
109
  } = select(blockEditorStore);
95
110
  const getEntityArgs = ['postType', 'wp_template_part', templatePartId];
96
111
  const entityRecord = templatePartId ? getEditedEntityRecord(...getEntityArgs) : null;
@@ -100,21 +115,26 @@ export default function TemplatePartEdit({
100
115
  hasInnerBlocks: getBlockCount(clientId) > 0,
101
116
  isResolved: hasResolvedEntity,
102
117
  isMissing: hasResolvedEntity && (!entityRecord || Object.keys(entityRecord).length === 0),
103
- area: _area
118
+ area: _area,
119
+ onNavigateToEntityRecord: getSettings().onNavigateToEntityRecord,
120
+ title: entityRecord?.title
104
121
  };
105
122
  }, [templatePartId, attributes.area, clientId]);
106
- const {
107
- templateParts
108
- } = useAlternativeTemplateParts(area, templatePartId);
109
- const blockPatterns = useAlternativeBlockPatterns(area, clientId);
110
- const hasReplacements = !!templateParts.length || !!blockPatterns.length;
111
123
  const areaObject = useTemplatePartArea(area);
112
124
  const blockProps = useBlockProps();
113
125
  const isPlaceholder = !slug;
114
126
  const isEntityAvailable = !isPlaceholder && !isMissing && isResolved;
115
127
  const TagName = tagName || areaObject.tagName;
116
- const canReplace = isEntityAvailable && hasReplacements && (area === 'header' || area === 'footer');
117
- const createFromBlocks = useCreateTemplatePartFromBlocks(area, setAttributes);
128
+ const onPatternSelect = async pattern => {
129
+ await editEntityRecord('postType', 'wp_template_part', templatePartId, {
130
+ blocks: pattern.blocks,
131
+ content: serialize(pattern.blocks)
132
+ });
133
+ createSuccessNotice(sprintf( /* translators: %s: template part title. */
134
+ __('Template Part "%s" updated.'), title || slug), {
135
+ type: 'snackbar'
136
+ });
137
+ };
118
138
 
119
139
  // We don't want to render a missing state if we have any inner blocks.
120
140
  // A new template part is automatically created if we have any inner blocks but no entity.
@@ -129,21 +149,16 @@ export default function TemplatePartEdit({
129
149
  ...blockProps
130
150
  }, createElement(Warning, null, __('Block cannot be rendered inside itself.')));
131
151
  }
132
- const partsAsPatterns = templateParts.map(templatePart => mapTemplatePartToBlockPattern(templatePart));
133
- const onTemplatePartSelect = templatePart => {
134
- setAttributes({
135
- slug: templatePart.slug,
136
- theme: templatePart.theme,
137
- area: undefined
138
- });
139
- createSuccessNotice(sprintf( /* translators: %s: template part title. */
140
- __('Template Part "%s" replaced.'), templatePart.title?.rendered || templatePart.slug), {
141
- type: 'snackbar'
142
- });
143
- };
144
152
  return createElement(Fragment, null, createElement(RecursionProvider, {
145
153
  uniqueId: templatePartId
146
- }, createElement(InspectorControls, {
154
+ }, isEntityAvailable && onNavigateToEntityRecord && createElement(BlockControls, {
155
+ group: "other"
156
+ }, createElement(ToolbarButton, {
157
+ onClick: () => onNavigateToEntityRecord({
158
+ postId: templatePartId,
159
+ postType: 'wp_template_part'
160
+ })
161
+ }, __('Edit'))), createElement(InspectorControls, {
147
162
  group: "advanced"
148
163
  }, createElement(TemplatePartAdvancedControls, {
149
164
  tagName: tagName,
@@ -176,19 +191,12 @@ export default function TemplatePartEdit({
176
191
  isTemplatePartSelectionOpen,
177
192
  setIsTemplatePartSelectionOpen
178
193
  });
179
- }), canReplace && (partsAsPatterns.length > 0 || blockPatterns.length > 0) && createElement(InspectorControls, null, createElement(PanelBody, {
180
- title: __('Replace')
181
- }, createElement(TemplatesList, {
182
- availableTemplates: partsAsPatterns,
183
- onSelect: pattern => {
184
- onTemplatePartSelect(pattern.templatePart);
185
- }
186
- }), createElement(TemplatesList, {
187
- availableTemplates: blockPatterns,
188
- onSelect: (pattern, blocks) => {
189
- createFromBlocks(blocks, pattern.title);
190
- }
191
- }))), isEntityAvailable && createElement(TemplatePartInnerBlocks, {
194
+ }), createElement(InspectorControls, null, createElement(TemplatesList, {
195
+ area: area,
196
+ clientId: clientId,
197
+ isEntityAvailable: isEntityAvailable,
198
+ onSelect: pattern => onPatternSelect(pattern)
199
+ })), isEntityAvailable && createElement(TemplatePartInnerBlocks, {
192
200
  tagName: TagName,
193
201
  blockProps: blockProps,
194
202
  postId: templatePartId,
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useDispatch","BlockSettingsMenuControls","useBlockProps","Warning","store","blockEditorStore","RecursionProvider","useHasRecursion","InspectorControls","__experimentalBlockPatternsList","BlockPatternsList","PanelBody","Spinner","Modal","MenuItem","useAsyncList","__","sprintf","coreStore","useState","noticesStore","TemplatePartPlaceholder","TemplatePartSelectionModal","TemplatePartAdvancedControls","TemplatePartInnerBlocks","createTemplatePartId","mapTemplatePartToBlockPattern","useAlternativeBlockPatterns","useAlternativeTemplateParts","useTemplatePartArea","useCreateTemplatePartFromBlocks","ReplaceButton","isEntityAvailable","area","clientId","templatePartId","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","templateParts","blockPatterns","hasReplacements","length","canReplace","createElement","onClick","TemplatesList","availableTemplates","onSelect","shownTemplates","label","shownPatterns","onClickPattern","TemplatePartEdit","attributes","setAttributes","createSuccessNotice","currentTheme","select","getCurrentTheme","stylesheet","slug","theme","tagName","layout","hasAlreadyRendered","isResolved","hasInnerBlocks","isMissing","getEditedEntityRecord","hasFinishedResolution","getBlockCount","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","areaObject","blockProps","isPlaceholder","TagName","createFromBlocks","partsAsPatterns","map","templatePart","onTemplatePartSelect","undefined","title","rendered","type","Fragment","uniqueId","group","defaultWrapper","onOpenSelectionModal","selectedClientIds","pattern","blocks","postId","overlayClassName","toLowerCase","onRequestClose","isFullScreen","onClose"],"sources":["@wordpress/block-library/src/template-part/edit/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInspectorControls,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n} from '@wordpress/block-editor';\nimport { PanelBody, Spinner, Modal, MenuItem } from '@wordpress/components';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartPlaceholder from './placeholder';\nimport TemplatePartSelectionModal from './selection-modal';\nimport { TemplatePartAdvancedControls } from './advanced-controls';\nimport TemplatePartInnerBlocks from './inner-blocks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseTemplatePartArea,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\n\nfunction ReplaceButton( {\n\tisEntityAvailable,\n\tarea,\n\tclientId,\n\ttemplatePartId,\n\tisTemplatePartSelectionOpen,\n\tsetIsTemplatePartSelectionOpen,\n} ) {\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst hasReplacements = !! templateParts.length || !! blockPatterns.length;\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tsetIsTemplatePartSelectionOpen( true );\n\t\t\t} }\n\t\t\taria-expanded={ isTemplatePartSelectionOpen }\n\t\t\taria-haspopup=\"dialog\"\n\t\t>\n\t\t\t{ __( 'Replace' ) }\n\t\t</MenuItem>\n\t);\n}\n\nfunction TemplatesList( { availableTemplates, onSelect } ) {\n\tconst shownTemplates = useAsyncList( availableTemplates );\n\n\tif ( ! availableTemplates ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tlabel={ __( 'Templates' ) }\n\t\t\tblockPatterns={ availableTemplates }\n\t\t\tshownPatterns={ shownTemplates }\n\t\t\tonClickPattern={ onSelect }\n\t\t/>\n\t);\n}\n\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst currentTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\tconst { slug, theme = currentTheme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\tconst { isResolved, hasInnerBlocks, isMissing, area } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlockCount } = select( blockEditorStore );\n\n\t\t\tconst getEntityArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\ttemplatePartId,\n\t\t\t];\n\t\t\tconst entityRecord = templatePartId\n\t\t\t\t? getEditedEntityRecord( ...getEntityArgs )\n\t\t\t\t: null;\n\t\t\tconst _area = entityRecord?.area || attributes.area;\n\t\t\tconst hasResolvedEntity = templatePartId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tgetEntityArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: getBlockCount( clientId ) > 0,\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing:\n\t\t\t\t\thasResolvedEntity &&\n\t\t\t\t\t( ! entityRecord ||\n\t\t\t\t\t\tObject.keys( entityRecord ).length === 0 ),\n\t\t\t\tarea: _area,\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, attributes.area, clientId ]\n\t);\n\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst hasReplacements = !! templateParts.length || !! blockPatterns.length;\n\tconst areaObject = useTemplatePartArea( area );\n\tconst blockProps = useBlockProps();\n\tconst isPlaceholder = ! slug;\n\tconst isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;\n\tconst TagName = tagName || areaObject.tagName;\n\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\t// We don't want to render a missing state if we have any inner blocks.\n\t// A new template part is automatically created if we have any inner blocks but no entity.\n\tif (\n\t\t! hasInnerBlocks &&\n\t\t( ( slug && ! theme ) || ( slug && isMissing ) )\n\t) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Template part slug */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Template part has been deleted or is unavailable: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslug\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tconst partsAsPatterns = templateParts.map( ( templatePart ) =>\n\t\tmapTemplatePartToBlockPattern( templatePart )\n\t);\n\n\tconst onTemplatePartSelect = ( 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\" replaced.' ),\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};\n\n\treturn (\n\t\t<>\n\t\t\t<RecursionProvider uniqueId={ templatePartId }>\n\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t<TemplatePartAdvancedControls\n\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\t\t\t\t{ isPlaceholder && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<TemplatePartPlaceholder\n\t\t\t\t\t\t\tarea={ attributes.area }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tonOpenSelectionModal={ () =>\n\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t\t// Only enable for single selection that matches the current block.\n\t\t\t\t\t\t// Ensures menu item doesn't render multiple times.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! (\n\t\t\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\t\t\tclientId === selectedClientIds[ 0 ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ReplaceButton\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\tisEntityAvailable,\n\t\t\t\t\t\t\t\t\tarea,\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\ttemplatePartId,\n\t\t\t\t\t\t\t\t\tisTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t</BlockSettingsMenuControls>\n\n\t\t\t\t{ canReplace &&\n\t\t\t\t\t( partsAsPatterns.length > 0 ||\n\t\t\t\t\t\tblockPatterns.length > 0 ) && (\n\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t<PanelBody title={ __( 'Replace' ) }>\n\t\t\t\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\t\t\t\tavailableTemplates={ partsAsPatterns }\n\t\t\t\t\t\t\t\t\tonSelect={ ( pattern ) => {\n\t\t\t\t\t\t\t\t\t\tonTemplatePartSelect(\n\t\t\t\t\t\t\t\t\t\t\tpattern.templatePart\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\t\t\t\tavailableTemplates={ blockPatterns }\n\t\t\t\t\t\t\t\t\tonSelect={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\t\t\t\tcreateFromBlocks(\n\t\t\t\t\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\t\t\t\t\tpattern.title\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t) }\n\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<TemplatePartInnerBlocks\n\t\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tpostId={ templatePartId }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isPlaceholder && ! isResolved && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t\t{ isTemplatePartSelectionOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\toverlayClassName=\"block-editor-template-part__selection-modal\"\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t\t\t__( 'Choose a %s' ),\n\t\t\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t}\n\t\t\t\t\tisFullScreen\n\t\t\t\t>\n\t\t\t\t\t<TemplatePartSelectionModal\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonClose={ () =>\n\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["serialize","useSelect","useDispatch","BlockSettingsMenuControls","useBlockProps","Warning","store","blockEditorStore","RecursionProvider","useHasRecursion","InspectorControls","__experimentalBlockPatternsList","BlockPatternsList","BlockControls","PanelBody","Spinner","Modal","MenuItem","ToolbarButton","useAsyncList","__","sprintf","coreStore","useState","noticesStore","TemplatePartPlaceholder","TemplatePartSelectionModal","TemplatePartAdvancedControls","TemplatePartInnerBlocks","createTemplatePartId","useAlternativeBlockPatterns","useAlternativeTemplateParts","useTemplatePartArea","ReplaceButton","isEntityAvailable","area","templatePartId","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","templateParts","hasReplacements","length","canReplace","createElement","onClick","TemplatesList","clientId","onSelect","blockPatterns","shownTemplates","title","label","shownPatterns","onClickPattern","showTitle","TemplatePartEdit","attributes","setAttributes","createSuccessNotice","editEntityRecord","currentTheme","select","getCurrentTheme","stylesheet","slug","theme","tagName","layout","hasAlreadyRendered","isResolved","hasInnerBlocks","isMissing","onNavigateToEntityRecord","getEditedEntityRecord","hasFinishedResolution","getBlockCount","getSettings","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","areaObject","blockProps","isPlaceholder","TagName","onPatternSelect","pattern","blocks","content","type","Fragment","uniqueId","group","postId","postType","defaultWrapper","onOpenSelectionModal","selectedClientIds","overlayClassName","toLowerCase","onRequestClose","isFullScreen","onClose"],"sources":["@wordpress/block-library/src/template-part/edit/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { serialize } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInspectorControls,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tSpinner,\n\tModal,\n\tMenuItem,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartPlaceholder from './placeholder';\nimport TemplatePartSelectionModal from './selection-modal';\nimport { TemplatePartAdvancedControls } from './advanced-controls';\nimport TemplatePartInnerBlocks from './inner-blocks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseTemplatePartArea,\n} from './utils/hooks';\n\nfunction ReplaceButton( {\n\tisEntityAvailable,\n\tarea,\n\ttemplatePartId,\n\tisTemplatePartSelectionOpen,\n\tsetIsTemplatePartSelectionOpen,\n} ) {\n\t// This hook fetches patterns, so don't run it unconditionally in the main\n\t// edit function!\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst hasReplacements = !! templateParts.length;\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tsetIsTemplatePartSelectionOpen( true );\n\t\t\t} }\n\t\t\taria-expanded={ isTemplatePartSelectionOpen }\n\t\t\taria-haspopup=\"dialog\"\n\t\t>\n\t\t\t{ __( 'Replace' ) }\n\t\t</MenuItem>\n\t);\n}\n\nfunction TemplatesList( { area, clientId, isEntityAvailable, onSelect } ) {\n\t// This hook fetches patterns, so don't run it unconditionally in the main\n\t// edit function!\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\t!! blockPatterns.length &&\n\t\t( area === 'header' || area === 'footer' );\n\tconst shownTemplates = useAsyncList( blockPatterns );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Design' ) }>\n\t\t\t<BlockPatternsList\n\t\t\t\tlabel={ __( 'Templates' ) }\n\t\t\t\tblockPatterns={ blockPatterns }\n\t\t\t\tshownPatterns={ shownTemplates }\n\t\t\t\tonClickPattern={ onSelect }\n\t\t\t\tshowTitle={ false }\n\t\t\t/>\n\t\t</PanelBody>\n\t);\n}\n\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst currentTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\tconst { slug, theme = currentTheme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\tconst {\n\t\tisResolved,\n\t\thasInnerBlocks,\n\t\tisMissing,\n\t\tarea,\n\t\tonNavigateToEntityRecord,\n\t\ttitle,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlockCount, getSettings } = select( blockEditorStore );\n\n\t\t\tconst getEntityArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\ttemplatePartId,\n\t\t\t];\n\t\t\tconst entityRecord = templatePartId\n\t\t\t\t? getEditedEntityRecord( ...getEntityArgs )\n\t\t\t\t: null;\n\t\t\tconst _area = entityRecord?.area || attributes.area;\n\t\t\tconst hasResolvedEntity = templatePartId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tgetEntityArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: getBlockCount( clientId ) > 0,\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing:\n\t\t\t\t\thasResolvedEntity &&\n\t\t\t\t\t( ! entityRecord ||\n\t\t\t\t\t\tObject.keys( entityRecord ).length === 0 ),\n\t\t\t\tarea: _area,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\ttitle: entityRecord?.title,\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, attributes.area, clientId ]\n\t);\n\n\tconst areaObject = useTemplatePartArea( area );\n\tconst blockProps = useBlockProps();\n\tconst isPlaceholder = ! slug;\n\tconst isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;\n\tconst TagName = tagName || areaObject.tagName;\n\n\tconst onPatternSelect = async ( pattern ) => {\n\t\tawait editEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template_part',\n\t\t\ttemplatePartId,\n\t\t\t{\n\t\t\t\tblocks: pattern.blocks,\n\t\t\t\tcontent: serialize( pattern.blocks ),\n\t\t\t}\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\" updated.' ),\n\t\t\t\ttitle || slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t};\n\n\t// We don't want to render a missing state if we have any inner blocks.\n\t// A new template part is automatically created if we have any inner blocks but no entity.\n\tif (\n\t\t! hasInnerBlocks &&\n\t\t( ( slug && ! theme ) || ( slug && isMissing ) )\n\t) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Template part slug */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Template part has been deleted or is unavailable: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslug\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RecursionProvider uniqueId={ templatePartId }>\n\t\t\t\t{ isEntityAvailable && onNavigateToEntityRecord && (\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\tonNavigateToEntityRecord( {\n\t\t\t\t\t\t\t\t\tpostId: templatePartId,\n\t\t\t\t\t\t\t\t\tpostType: 'wp_template_part',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t) }\n\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t<TemplatePartAdvancedControls\n\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\t\t\t\t{ isPlaceholder && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<TemplatePartPlaceholder\n\t\t\t\t\t\t\tarea={ attributes.area }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tonOpenSelectionModal={ () =>\n\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t\t// Only enable for single selection that matches the current block.\n\t\t\t\t\t\t// Ensures menu item doesn't render multiple times.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! (\n\t\t\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\t\t\tclientId === selectedClientIds[ 0 ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ReplaceButton\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\tisEntityAvailable,\n\t\t\t\t\t\t\t\t\tarea,\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\ttemplatePartId,\n\t\t\t\t\t\t\t\t\tisTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t</BlockSettingsMenuControls>\n\n\t\t\t\t<InspectorControls>\n\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\tonSelect={ ( pattern ) => onPatternSelect( pattern ) }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<TemplatePartInnerBlocks\n\t\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tpostId={ templatePartId }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isPlaceholder && ! isResolved && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t\t{ isTemplatePartSelectionOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\toverlayClassName=\"block-editor-template-part__selection-modal\"\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t\t\t__( 'Choose a %s' ),\n\t\t\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t}\n\t\t\t\t\tisFullScreen\n\t\t\t\t>\n\t\t\t\t\t<TemplatePartSelectionModal\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonClose={ () =>\n\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}