@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":["_initBlock","_interopRequireDefault","require","_edit","_icon","_deprecated","metadata","exports","$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","settings","icon","edit","deprecated","init","initBlock"],"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":";;;;;;;AAGA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,WAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAPA;AACA;AACA;AAFA,MAAAI,QAAA,GAAAC,OAAA,CAAAD,QAAA;EAAAE,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;AASA,MAAM;EAAEhC;AAAK,CAAC,GAAGJ,QAAQ;AAACC,OAAA,CAAAG,IAAA,GAAAA,IAAA;AAGnB,MAAMiC,QAAQ,GAAApC,OAAA,CAAAoC,QAAA,GAAG;EACvBC,IAAI,EAAJA,aAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,UAAU,EAAVA;AACD,CAAC;AAEM,MAAMC,IAAI,GAAGA,CAAA,KAAM,IAAAC,kBAAS,EAAE;EAAEtC,IAAI;EAAEJ,QAAQ;EAAEqC;AAAS,CAAE,CAAC;AAACpC,OAAA,CAAAwC,IAAA,GAAAA,IAAA"}
1
+ {"version":3,"names":["_initBlock","_interopRequireDefault","require","_edit","_icon","_deprecated","metadata","exports","$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","settings","icon","edit","deprecated","init","initBlock"],"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":";;;;;;;AAGA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,WAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAPA;AACA;AACA;AAFA,MAAAI,QAAA,GAAAC,OAAA,CAAAD,QAAA;EAAAE,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;AASA,MAAM;EAAEjC;AAAK,CAAC,GAAGJ,QAAQ;AAACC,OAAA,CAAAG,IAAA,GAAAA,IAAA;AAGnB,MAAMkC,QAAQ,GAAArC,OAAA,CAAAqC,QAAA,GAAG;EACvBC,IAAI,EAAJA,aAAI;EACJC,IAAI,EAAJA,aAAI;EACJC,UAAU,EAAVA;AACD,CAAC;AAEM,MAAMC,IAAI,GAAGA,CAAA,KAAM,IAAAC,kBAAS,EAAE;EAAEvC,IAAI;EAAEJ,QAAQ;EAAEsC;AAAS,CAAE,CAAC;AAACrC,OAAA,CAAAyC,IAAA,GAAAA,IAAA"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = TemplatePartEdit;
8
8
  var _react = require("react");
9
+ var _blocks = require("@wordpress/blocks");
9
10
  var _data = require("@wordpress/data");
10
11
  var _blockEditor = require("@wordpress/block-editor");
11
12
  var _components = require("@wordpress/components");
@@ -19,7 +20,6 @@ var _selectionModal = _interopRequireDefault(require("./selection-modal"));
19
20
  var _advancedControls = require("./advanced-controls");
20
21
  var _innerBlocks = _interopRequireDefault(require("./inner-blocks"));
21
22
  var _createTemplatePartId = require("./utils/create-template-part-id");
22
- var _mapTemplatePartToBlockPattern = require("./utils/map-template-part-to-block-pattern");
23
23
  var _hooks = require("./utils/hooks");
24
24
  /**
25
25
  * WordPress dependencies
@@ -32,16 +32,16 @@ var _hooks = require("./utils/hooks");
32
32
  function ReplaceButton({
33
33
  isEntityAvailable,
34
34
  area,
35
- clientId,
36
35
  templatePartId,
37
36
  isTemplatePartSelectionOpen,
38
37
  setIsTemplatePartSelectionOpen
39
38
  }) {
39
+ // This hook fetches patterns, so don't run it unconditionally in the main
40
+ // edit function!
40
41
  const {
41
42
  templateParts
42
43
  } = (0, _hooks.useAlternativeTemplateParts)(area, templatePartId);
43
- const blockPatterns = (0, _hooks.useAlternativeBlockPatterns)(area, clientId);
44
- const hasReplacements = !!templateParts.length || !!blockPatterns.length;
44
+ const hasReplacements = !!templateParts.length;
45
45
  const canReplace = isEntityAvailable && hasReplacements && (area === 'header' || area === 'footer');
46
46
  if (!canReplace) {
47
47
  return null;
@@ -55,19 +55,28 @@ function ReplaceButton({
55
55
  }, (0, _i18n.__)('Replace'));
56
56
  }
57
57
  function TemplatesList({
58
- availableTemplates,
58
+ area,
59
+ clientId,
60
+ isEntityAvailable,
59
61
  onSelect
60
62
  }) {
61
- const shownTemplates = (0, _compose.useAsyncList)(availableTemplates);
62
- if (!availableTemplates) {
63
+ // This hook fetches patterns, so don't run it unconditionally in the main
64
+ // edit function!
65
+ const blockPatterns = (0, _hooks.useAlternativeBlockPatterns)(area, clientId);
66
+ const canReplace = isEntityAvailable && !!blockPatterns.length && (area === 'header' || area === 'footer');
67
+ const shownTemplates = (0, _compose.useAsyncList)(blockPatterns);
68
+ if (!canReplace) {
63
69
  return null;
64
70
  }
65
- return (0, _react.createElement)(_blockEditor.__experimentalBlockPatternsList, {
71
+ return (0, _react.createElement)(_components.PanelBody, {
72
+ title: (0, _i18n.__)('Design')
73
+ }, (0, _react.createElement)(_blockEditor.__experimentalBlockPatternsList, {
66
74
  label: (0, _i18n.__)('Templates'),
67
- blockPatterns: availableTemplates,
75
+ blockPatterns: blockPatterns,
68
76
  shownPatterns: shownTemplates,
69
- onClickPattern: onSelect
70
- });
77
+ onClickPattern: onSelect,
78
+ showTitle: false
79
+ }));
71
80
  }
72
81
  function TemplatePartEdit({
73
82
  attributes,
@@ -77,6 +86,9 @@ function TemplatePartEdit({
77
86
  const {
78
87
  createSuccessNotice
79
88
  } = (0, _data.useDispatch)(_notices.store);
89
+ const {
90
+ editEntityRecord
91
+ } = (0, _data.useDispatch)(_coreData.store);
80
92
  const currentTheme = (0, _data.useSelect)(select => select(_coreData.store).getCurrentTheme()?.stylesheet, []);
81
93
  const {
82
94
  slug,
@@ -91,14 +103,17 @@ function TemplatePartEdit({
91
103
  isResolved,
92
104
  hasInnerBlocks,
93
105
  isMissing,
94
- area
106
+ area,
107
+ onNavigateToEntityRecord,
108
+ title
95
109
  } = (0, _data.useSelect)(select => {
96
110
  const {
97
111
  getEditedEntityRecord,
98
112
  hasFinishedResolution
99
113
  } = select(_coreData.store);
100
114
  const {
101
- getBlockCount
115
+ getBlockCount,
116
+ getSettings
102
117
  } = select(_blockEditor.store);
103
118
  const getEntityArgs = ['postType', 'wp_template_part', templatePartId];
104
119
  const entityRecord = templatePartId ? getEditedEntityRecord(...getEntityArgs) : null;
@@ -108,21 +123,26 @@ function TemplatePartEdit({
108
123
  hasInnerBlocks: getBlockCount(clientId) > 0,
109
124
  isResolved: hasResolvedEntity,
110
125
  isMissing: hasResolvedEntity && (!entityRecord || Object.keys(entityRecord).length === 0),
111
- area: _area
126
+ area: _area,
127
+ onNavigateToEntityRecord: getSettings().onNavigateToEntityRecord,
128
+ title: entityRecord?.title
112
129
  };
113
130
  }, [templatePartId, attributes.area, clientId]);
114
- const {
115
- templateParts
116
- } = (0, _hooks.useAlternativeTemplateParts)(area, templatePartId);
117
- const blockPatterns = (0, _hooks.useAlternativeBlockPatterns)(area, clientId);
118
- const hasReplacements = !!templateParts.length || !!blockPatterns.length;
119
131
  const areaObject = (0, _hooks.useTemplatePartArea)(area);
120
132
  const blockProps = (0, _blockEditor.useBlockProps)();
121
133
  const isPlaceholder = !slug;
122
134
  const isEntityAvailable = !isPlaceholder && !isMissing && isResolved;
123
135
  const TagName = tagName || areaObject.tagName;
124
- const canReplace = isEntityAvailable && hasReplacements && (area === 'header' || area === 'footer');
125
- const createFromBlocks = (0, _hooks.useCreateTemplatePartFromBlocks)(area, setAttributes);
136
+ const onPatternSelect = async pattern => {
137
+ await editEntityRecord('postType', 'wp_template_part', templatePartId, {
138
+ blocks: pattern.blocks,
139
+ content: (0, _blocks.serialize)(pattern.blocks)
140
+ });
141
+ createSuccessNotice((0, _i18n.sprintf)( /* translators: %s: template part title. */
142
+ (0, _i18n.__)('Template Part "%s" updated.'), title || slug), {
143
+ type: 'snackbar'
144
+ });
145
+ };
126
146
 
127
147
  // We don't want to render a missing state if we have any inner blocks.
128
148
  // A new template part is automatically created if we have any inner blocks but no entity.
@@ -137,21 +157,16 @@ function TemplatePartEdit({
137
157
  ...blockProps
138
158
  }, (0, _react.createElement)(_blockEditor.Warning, null, (0, _i18n.__)('Block cannot be rendered inside itself.')));
139
159
  }
140
- const partsAsPatterns = templateParts.map(templatePart => (0, _mapTemplatePartToBlockPattern.mapTemplatePartToBlockPattern)(templatePart));
141
- const onTemplatePartSelect = templatePart => {
142
- setAttributes({
143
- slug: templatePart.slug,
144
- theme: templatePart.theme,
145
- area: undefined
146
- });
147
- createSuccessNotice((0, _i18n.sprintf)( /* translators: %s: template part title. */
148
- (0, _i18n.__)('Template Part "%s" replaced.'), templatePart.title?.rendered || templatePart.slug), {
149
- type: 'snackbar'
150
- });
151
- };
152
160
  return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_blockEditor.RecursionProvider, {
153
161
  uniqueId: templatePartId
154
- }, (0, _react.createElement)(_blockEditor.InspectorControls, {
162
+ }, isEntityAvailable && onNavigateToEntityRecord && (0, _react.createElement)(_blockEditor.BlockControls, {
163
+ group: "other"
164
+ }, (0, _react.createElement)(_components.ToolbarButton, {
165
+ onClick: () => onNavigateToEntityRecord({
166
+ postId: templatePartId,
167
+ postType: 'wp_template_part'
168
+ })
169
+ }, (0, _i18n.__)('Edit'))), (0, _react.createElement)(_blockEditor.InspectorControls, {
155
170
  group: "advanced"
156
171
  }, (0, _react.createElement)(_advancedControls.TemplatePartAdvancedControls, {
157
172
  tagName: tagName,
@@ -184,19 +199,12 @@ function TemplatePartEdit({
184
199
  isTemplatePartSelectionOpen,
185
200
  setIsTemplatePartSelectionOpen
186
201
  });
187
- }), canReplace && (partsAsPatterns.length > 0 || blockPatterns.length > 0) && (0, _react.createElement)(_blockEditor.InspectorControls, null, (0, _react.createElement)(_components.PanelBody, {
188
- title: (0, _i18n.__)('Replace')
189
- }, (0, _react.createElement)(TemplatesList, {
190
- availableTemplates: partsAsPatterns,
191
- onSelect: pattern => {
192
- onTemplatePartSelect(pattern.templatePart);
193
- }
194
- }), (0, _react.createElement)(TemplatesList, {
195
- availableTemplates: blockPatterns,
196
- onSelect: (pattern, blocks) => {
197
- createFromBlocks(blocks, pattern.title);
198
- }
199
- }))), isEntityAvailable && (0, _react.createElement)(_innerBlocks.default, {
202
+ }), (0, _react.createElement)(_blockEditor.InspectorControls, null, (0, _react.createElement)(TemplatesList, {
203
+ area: area,
204
+ clientId: clientId,
205
+ isEntityAvailable: isEntityAvailable,
206
+ onSelect: pattern => onPatternSelect(pattern)
207
+ })), isEntityAvailable && (0, _react.createElement)(_innerBlocks.default, {
200
208
  tagName: TagName,
201
209
  blockProps: blockProps,
202
210
  postId: templatePartId,
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_blockEditor","_components","_compose","_i18n","_coreData","_element","_notices","_placeholder","_interopRequireDefault","_selectionModal","_advancedControls","_innerBlocks","_createTemplatePartId","_mapTemplatePartToBlockPattern","_hooks","ReplaceButton","isEntityAvailable","area","clientId","templatePartId","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","templateParts","useAlternativeTemplateParts","blockPatterns","useAlternativeBlockPatterns","hasReplacements","length","canReplace","_react","createElement","MenuItem","onClick","__","TemplatesList","availableTemplates","onSelect","shownTemplates","useAsyncList","__experimentalBlockPatternsList","label","shownPatterns","onClickPattern","TemplatePartEdit","attributes","setAttributes","createSuccessNotice","useDispatch","noticesStore","currentTheme","useSelect","select","coreStore","getCurrentTheme","stylesheet","slug","theme","tagName","layout","createTemplatePartId","hasAlreadyRendered","useHasRecursion","useState","isResolved","hasInnerBlocks","isMissing","getEditedEntityRecord","hasFinishedResolution","getBlockCount","blockEditorStore","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","areaObject","useTemplatePartArea","blockProps","useBlockProps","isPlaceholder","TagName","createFromBlocks","useCreateTemplatePartFromBlocks","Warning","sprintf","partsAsPatterns","map","templatePart","mapTemplatePartToBlockPattern","onTemplatePartSelect","undefined","title","rendered","type","Fragment","RecursionProvider","uniqueId","InspectorControls","group","TemplatePartAdvancedControls","defaultWrapper","default","onOpenSelectionModal","BlockSettingsMenuControls","selectedClientIds","PanelBody","pattern","blocks","postId","Spinner","Modal","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":["_blocks","require","_data","_blockEditor","_components","_compose","_i18n","_coreData","_element","_notices","_placeholder","_interopRequireDefault","_selectionModal","_advancedControls","_innerBlocks","_createTemplatePartId","_hooks","ReplaceButton","isEntityAvailable","area","templatePartId","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","templateParts","useAlternativeTemplateParts","hasReplacements","length","canReplace","_react","createElement","MenuItem","onClick","__","TemplatesList","clientId","onSelect","blockPatterns","useAlternativeBlockPatterns","shownTemplates","useAsyncList","PanelBody","title","__experimentalBlockPatternsList","label","shownPatterns","onClickPattern","showTitle","TemplatePartEdit","attributes","setAttributes","createSuccessNotice","useDispatch","noticesStore","editEntityRecord","coreStore","currentTheme","useSelect","select","getCurrentTheme","stylesheet","slug","theme","tagName","layout","createTemplatePartId","hasAlreadyRendered","useHasRecursion","useState","isResolved","hasInnerBlocks","isMissing","onNavigateToEntityRecord","getEditedEntityRecord","hasFinishedResolution","getBlockCount","getSettings","blockEditorStore","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","areaObject","useTemplatePartArea","blockProps","useBlockProps","isPlaceholder","TagName","onPatternSelect","pattern","blocks","content","serialize","sprintf","type","Warning","Fragment","RecursionProvider","uniqueId","BlockControls","group","ToolbarButton","postId","postType","InspectorControls","TemplatePartAdvancedControls","defaultWrapper","default","onOpenSelectionModal","BlockSettingsMenuControls","selectedClientIds","Spinner","Modal","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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"}
@@ -8,17 +8,26 @@ var _react = require("react");
8
8
  var _coreData = require("@wordpress/core-data");
9
9
  var _blockEditor = require("@wordpress/block-editor");
10
10
  var _data = require("@wordpress/data");
11
+ var _element = require("@wordpress/element");
12
+ var _blocks = require("@wordpress/blocks");
11
13
  /**
12
14
  * WordPress dependencies
13
15
  */
14
16
 
15
- function TemplatePartInnerBlocks({
16
- postId: id,
17
- hasInnerBlocks,
18
- layout,
19
- tagName: TagName,
20
- blockProps
21
- }) {
17
+ function useRenderAppender(hasInnerBlocks) {
18
+ const blockEditingMode = (0, _blockEditor.useBlockEditingMode)();
19
+ // Disable appending when the editing mode is 'contentOnly'. This is so that the user can't
20
+ // append into a template part when editing a page in the site editor. See
21
+ // DisableNonPageContentBlocks. Ideally instead of (mis)using editing mode there would be a
22
+ // block editor API for achieving this.
23
+ if (blockEditingMode === 'contentOnly') {
24
+ return false;
25
+ }
26
+ if (!hasInnerBlocks) {
27
+ return _blockEditor.InnerBlocks.ButtonBlockAppender;
28
+ }
29
+ }
30
+ function useLayout(layout) {
22
31
  const themeSupportsLayout = (0, _data.useSelect)(select => {
23
32
  const {
24
33
  getSettings
@@ -26,7 +35,65 @@ function TemplatePartInnerBlocks({
26
35
  return getSettings()?.supportsLayout;
27
36
  }, []);
28
37
  const [defaultLayout] = (0, _blockEditor.useSettings)('layout');
29
- const usedLayout = layout?.inherit ? defaultLayout || {} : layout;
38
+ if (themeSupportsLayout) {
39
+ return layout?.inherit ? defaultLayout || {} : layout;
40
+ }
41
+ }
42
+ function NonEditableTemplatePartPreview({
43
+ postId: id,
44
+ layout,
45
+ tagName: TagName,
46
+ blockProps
47
+ }) {
48
+ (0, _blockEditor.useBlockEditingMode)('disabled');
49
+ const {
50
+ content,
51
+ editedBlocks
52
+ } = (0, _data.useSelect)(select => {
53
+ if (!id) {
54
+ return {};
55
+ }
56
+ const {
57
+ getEditedEntityRecord
58
+ } = select(_coreData.store);
59
+ const editedRecord = getEditedEntityRecord('postType', 'wp_template_part', id, {
60
+ context: 'view'
61
+ });
62
+ return {
63
+ editedBlocks: editedRecord.blocks,
64
+ content: editedRecord.content
65
+ };
66
+ }, [id]);
67
+ const blocks = (0, _element.useMemo)(() => {
68
+ if (!id) {
69
+ return undefined;
70
+ }
71
+ if (editedBlocks) {
72
+ return editedBlocks;
73
+ }
74
+ if (!content || typeof content !== 'string') {
75
+ return [];
76
+ }
77
+ return (0, _blocks.parse)(content);
78
+ }, [id, editedBlocks, content]);
79
+ const innerBlocksProps = (0, _blockEditor.useInnerBlocksProps)(blockProps, {
80
+ value: blocks,
81
+ onInput: () => {},
82
+ onChange: () => {},
83
+ renderAppender: false,
84
+ layout: useLayout(layout)
85
+ });
86
+ return (0, _react.createElement)(TagName, {
87
+ ...innerBlocksProps
88
+ });
89
+ }
90
+ function EditableTemplatePartInnerBlocks({
91
+ postId: id,
92
+ hasInnerBlocks,
93
+ layout,
94
+ tagName: TagName,
95
+ blockProps
96
+ }) {
30
97
  const [blocks, onInput, onChange] = (0, _coreData.useEntityBlockEditor)('postType', 'wp_template_part', {
31
98
  id
32
99
  });
@@ -34,11 +101,40 @@ function TemplatePartInnerBlocks({
34
101
  value: blocks,
35
102
  onInput,
36
103
  onChange,
37
- renderAppender: hasInnerBlocks ? undefined : _blockEditor.InnerBlocks.ButtonBlockAppender,
38
- layout: themeSupportsLayout ? usedLayout : undefined
104
+ renderAppender: useRenderAppender(hasInnerBlocks),
105
+ layout: useLayout(layout)
39
106
  });
40
107
  return (0, _react.createElement)(TagName, {
41
108
  ...innerBlocksProps
42
109
  });
43
110
  }
111
+ function TemplatePartInnerBlocks({
112
+ postId: id,
113
+ hasInnerBlocks,
114
+ layout,
115
+ tagName: TagName,
116
+ blockProps
117
+ }) {
118
+ const {
119
+ canViewTemplatePart,
120
+ canEditTemplatePart
121
+ } = (0, _data.useSelect)(select => {
122
+ var _select$canUser, _select$canUser2;
123
+ return {
124
+ canViewTemplatePart: (_select$canUser = select(_coreData.store).canUser('read', 'templates')) !== null && _select$canUser !== void 0 ? _select$canUser : false,
125
+ canEditTemplatePart: (_select$canUser2 = select(_coreData.store).canUser('create', 'templates')) !== null && _select$canUser2 !== void 0 ? _select$canUser2 : false
126
+ };
127
+ }, []);
128
+ if (!canViewTemplatePart) {
129
+ return null;
130
+ }
131
+ const TemplatePartInnerBlocksComponent = canEditTemplatePart ? EditableTemplatePartInnerBlocks : NonEditableTemplatePartPreview;
132
+ return (0, _react.createElement)(TemplatePartInnerBlocksComponent, {
133
+ postId: id,
134
+ hasInnerBlocks: hasInnerBlocks,
135
+ layout: layout,
136
+ tagName: TagName,
137
+ blockProps: blockProps
138
+ });
139
+ }
44
140
  //# sourceMappingURL=inner-blocks.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_coreData","require","_blockEditor","_data","TemplatePartInnerBlocks","postId","id","hasInnerBlocks","layout","tagName","TagName","blockProps","themeSupportsLayout","useSelect","select","getSettings","blockEditorStore","supportsLayout","defaultLayout","useSettings","usedLayout","inherit","blocks","onInput","onChange","useEntityBlockEditor","innerBlocksProps","useInnerBlocksProps","value","renderAppender","undefined","InnerBlocks","ButtonBlockAppender","_react","createElement"],"sources":["@wordpress/block-library/src/template-part/edit/inner-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tuseSettings,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\nexport default function TemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings()?.supportsLayout;\n\t}, [] );\n\tconst [ defaultLayout ] = useSettings( 'layout' );\n\tconst usedLayout = layout?.inherit ? defaultLayout || {} : layout;\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t{ id }\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: hasInnerBlocks\n\t\t\t? undefined\n\t\t\t: InnerBlocks.ButtonBlockAppender,\n\t\tlayout: themeSupportsLayout ? usedLayout : undefined,\n\t} );\n\n\treturn <TagName { ...innerBlocksProps } />;\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMA,IAAAE,KAAA,GAAAF,OAAA;AAVA;AACA;AACA;;AAUe,SAASG,uBAAuBA,CAAE;EAChDC,MAAM,EAAEC,EAAE;EACVC,cAAc;EACdC,MAAM;EACNC,OAAO,EAAEC,OAAO;EAChBC;AACD,CAAC,EAAG;EACH,MAAMC,mBAAmB,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IACpD,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEE,kBAAiB,CAAC;IAClD,OAAOD,WAAW,CAAC,CAAC,EAAEE,cAAc;EACrC,CAAC,EAAE,EAAG,CAAC;EACP,MAAM,CAAEC,aAAa,CAAE,GAAG,IAAAC,wBAAW,EAAE,QAAS,CAAC;EACjD,MAAMC,UAAU,GAAGZ,MAAM,EAAEa,OAAO,GAAGH,aAAa,IAAI,CAAC,CAAC,GAAGV,MAAM;EAEjE,MAAM,CAAEc,MAAM,EAAEC,OAAO,EAAEC,QAAQ,CAAE,GAAG,IAAAC,8BAAoB,EACzD,UAAU,EACV,kBAAkB,EAClB;IAAEnB;EAAG,CACN,CAAC;EAED,MAAMoB,gBAAgB,GAAG,IAAAC,gCAAmB,EAAEhB,UAAU,EAAE;IACzDiB,KAAK,EAAEN,MAAM;IACbC,OAAO;IACPC,QAAQ;IACRK,cAAc,EAAEtB,cAAc,GAC3BuB,SAAS,GACTC,wBAAW,CAACC,mBAAmB;IAClCxB,MAAM,EAAEI,mBAAmB,GAAGQ,UAAU,GAAGU;EAC5C,CAAE,CAAC;EAEH,OAAO,IAAAG,MAAA,CAAAC,aAAA,EAACxB,OAAO;IAAA,GAAMgB;EAAgB,CAAI,CAAC;AAC3C"}
1
+ {"version":3,"names":["_coreData","require","_blockEditor","_data","_element","_blocks","useRenderAppender","hasInnerBlocks","blockEditingMode","useBlockEditingMode","InnerBlocks","ButtonBlockAppender","useLayout","layout","themeSupportsLayout","useSelect","select","getSettings","blockEditorStore","supportsLayout","defaultLayout","useSettings","inherit","NonEditableTemplatePartPreview","postId","id","tagName","TagName","blockProps","content","editedBlocks","getEditedEntityRecord","coreStore","editedRecord","context","blocks","useMemo","undefined","parse","innerBlocksProps","useInnerBlocksProps","value","onInput","onChange","renderAppender","_react","createElement","EditableTemplatePartInnerBlocks","useEntityBlockEditor","TemplatePartInnerBlocks","canViewTemplatePart","canEditTemplatePart","_select$canUser","_select$canUser2","canUser","TemplatePartInnerBlocksComponent"],"sources":["@wordpress/block-library/src/template-part/edit/inner-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor, store as coreStore } from '@wordpress/core-data';\nimport {\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tuseSettings,\n\tstore as blockEditorStore,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { parse } from '@wordpress/blocks';\n\nfunction useRenderAppender( hasInnerBlocks ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\t// Disable appending when the editing mode is 'contentOnly'. This is so that the user can't\n\t// append into a template part when editing a page in the site editor. See\n\t// DisableNonPageContentBlocks. Ideally instead of (mis)using editing mode there would be a\n\t// block editor API for achieving this.\n\tif ( blockEditingMode === 'contentOnly' ) {\n\t\treturn false;\n\t}\n\tif ( ! hasInnerBlocks ) {\n\t\treturn InnerBlocks.ButtonBlockAppender;\n\t}\n}\n\nfunction useLayout( layout ) {\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings()?.supportsLayout;\n\t}, [] );\n\tconst [ defaultLayout ] = useSettings( 'layout' );\n\tif ( themeSupportsLayout ) {\n\t\treturn layout?.inherit ? defaultLayout || {} : layout;\n\t}\n}\n\nfunction NonEditableTemplatePartPreview( {\n\tpostId: id,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tuseBlockEditingMode( 'disabled' );\n\n\tconst { content, editedBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst { getEditedEntityRecord } = select( coreStore );\n\t\t\tconst editedRecord = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\tid,\n\t\t\t\t{ context: 'view' }\n\t\t\t);\n\t\t\treturn {\n\t\t\t\teditedBlocks: editedRecord.blocks,\n\t\t\t\tcontent: editedRecord.content,\n\t\t\t};\n\t\t},\n\t\t[ id ]\n\t);\n\n\tconst blocks = useMemo( () => {\n\t\tif ( ! id ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( editedBlocks ) {\n\t\t\treturn editedBlocks;\n\t\t}\n\n\t\tif ( ! content || typeof content !== 'string' ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn parse( content );\n\t}, [ id, editedBlocks, content ] );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput: () => {},\n\t\tonChange: () => {},\n\t\trenderAppender: false,\n\t\tlayout: useLayout( layout ),\n\t} );\n\n\treturn <TagName { ...innerBlocksProps } />;\n}\n\nfunction EditableTemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t{ id }\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: useRenderAppender( hasInnerBlocks ),\n\t\tlayout: useLayout( layout ),\n\t} );\n\n\treturn <TagName { ...innerBlocksProps } />;\n}\n\nexport default function TemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst { canViewTemplatePart, canEditTemplatePart } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tcanViewTemplatePart:\n\t\t\t\t\tselect( coreStore ).canUser( 'read', 'templates' ) ?? false,\n\t\t\t\tcanEditTemplatePart:\n\t\t\t\t\tselect( coreStore ).canUser( 'create', 'templates' ) ??\n\t\t\t\t\tfalse,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif ( ! canViewTemplatePart ) {\n\t\treturn null;\n\t}\n\n\tconst TemplatePartInnerBlocksComponent = canEditTemplatePart\n\t\t? EditableTemplatePartInnerBlocks\n\t\t: NonEditableTemplatePartPreview;\n\n\treturn (\n\t\t<TemplatePartInnerBlocksComponent\n\t\t\tpostId={ id }\n\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\tlayout={ layout }\n\t\t\ttagName={ TagName }\n\t\t\tblockProps={ blockProps }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -34,6 +34,7 @@ function TemplatePartSelectionModal({
34
34
  const {
35
35
  templateParts
36
36
  } = (0, _hooks.useAlternativeTemplateParts)(area, templatePartId);
37
+
37
38
  // We can map template parts to block patters to reuse the BlockPatternsList UI
38
39
  const filteredTemplateParts = (0, _element.useMemo)(() => {
39
40
  const partsAsPatterns = templateParts.map(templatePart => (0, _mapTemplatePartToBlockPattern.mapTemplatePartToBlockPattern)(templatePart));
@@ -44,7 +45,6 @@ function TemplatePartSelectionModal({
44
45
  const filteredBlockPatterns = (0, _element.useMemo)(() => {
45
46
  return (0, _searchPatterns.searchPatterns)(blockPatterns, searchValue);
46
47
  }, [blockPatterns, searchValue]);
47
- const shownBlockPatterns = (0, _compose.useAsyncList)(filteredBlockPatterns);
48
48
  const {
49
49
  createSuccessNotice
50
50
  } = (0, _data.useDispatch)(_notices.store);
@@ -60,7 +60,6 @@ function TemplatePartSelectionModal({
60
60
  });
61
61
  onClose();
62
62
  };
63
- const createFromBlocks = (0, _hooks.useCreateTemplatePartFromBlocks)(area, setAttributes);
64
63
  const hasTemplateParts = !!filteredTemplateParts.length;
65
64
  const hasBlockPatterns = !!filteredBlockPatterns.length;
66
65
  return (0, _react.createElement)("div", {
@@ -79,13 +78,6 @@ function TemplatePartSelectionModal({
79
78
  onClickPattern: pattern => {
80
79
  onTemplatePartSelect(pattern.templatePart);
81
80
  }
82
- })), hasBlockPatterns && (0, _react.createElement)("div", null, (0, _react.createElement)("h2", null, (0, _i18n.__)('Patterns')), (0, _react.createElement)(_blockEditor.__experimentalBlockPatternsList, {
83
- blockPatterns: filteredBlockPatterns,
84
- shownPatterns: shownBlockPatterns,
85
- onClickPattern: (pattern, blocks) => {
86
- createFromBlocks(blocks, pattern.title);
87
- onClose();
88
- }
89
81
  })), !hasTemplateParts && !hasBlockPatterns && (0, _react.createElement)(_components.__experimentalHStack, {
90
82
  alignment: "center"
91
83
  }, (0, _react.createElement)("p", null, (0, _i18n.__)('No results found.'))));
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_i18n","_notices","_data","_compose","_blockEditor","_components","_hooks","_mapTemplatePartToBlockPattern","_searchPatterns","TemplatePartSelectionModal","setAttributes","onClose","templatePartId","area","clientId","searchValue","setSearchValue","useState","templateParts","useAlternativeTemplateParts","filteredTemplateParts","useMemo","partsAsPatterns","map","templatePart","mapTemplatePartToBlockPattern","searchPatterns","shownTemplateParts","useAsyncList","blockPatterns","useAlternativeBlockPatterns","filteredBlockPatterns","shownBlockPatterns","createSuccessNotice","useDispatch","noticesStore","onTemplatePartSelect","slug","theme","undefined","sprintf","__","title","rendered","type","createFromBlocks","useCreateTemplatePartFromBlocks","hasTemplateParts","length","hasBlockPatterns","_react","createElement","className","SearchControl","__nextHasNoMarginBottom","onChange","value","label","placeholder","__experimentalBlockPatternsList","shownPatterns","onClickPattern","pattern","blocks","__experimentalHStack","alignment"],"sources":["@wordpress/block-library/src/template-part/edit/selection-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\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 { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport { searchPatterns } from '../../utils/search-patterns';\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\tmapTemplatePartToBlockPattern( templatePart )\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 = ( 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\t__nextHasNoMarginBottom\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"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_i18n","_notices","_data","_compose","_blockEditor","_components","_hooks","_mapTemplatePartToBlockPattern","_searchPatterns","TemplatePartSelectionModal","setAttributes","onClose","templatePartId","area","clientId","searchValue","setSearchValue","useState","templateParts","useAlternativeTemplateParts","filteredTemplateParts","useMemo","partsAsPatterns","map","templatePart","mapTemplatePartToBlockPattern","searchPatterns","shownTemplateParts","useAsyncList","blockPatterns","useAlternativeBlockPatterns","filteredBlockPatterns","createSuccessNotice","useDispatch","noticesStore","onTemplatePartSelect","slug","theme","undefined","sprintf","__","title","rendered","type","hasTemplateParts","length","hasBlockPatterns","_react","createElement","className","SearchControl","__nextHasNoMarginBottom","onChange","value","label","placeholder","__experimentalBlockPatternsList","shownPatterns","onClickPattern","pattern","__experimentalHStack","alignment"],"sources":["@wordpress/block-library/src/template-part/edit/selection-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\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} from './utils/hooks';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\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\tmapTemplatePartToBlockPattern( templatePart )\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\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\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\" 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 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\t__nextHasNoMarginBottom\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{ ! 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"],"mappings":"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"}
@@ -27,11 +27,8 @@ var _lockUnlock = require("../lock-unlock");
27
27
  * Internal dependencies
28
28
  */
29
29
 
30
- const {
31
- PrivateRichText: RichText
32
- } = (0, _lockUnlock.unlock)(_blockEditor.privateApis);
33
30
  function Caption({
34
- key = 'caption',
31
+ attributeKey = 'caption',
35
32
  attributes,
36
33
  setAttributes,
37
34
  isSelected,
@@ -40,10 +37,18 @@ function Caption({
40
37
  label = (0, _i18n.__)('Caption text'),
41
38
  showToolbarButton = true,
42
39
  className,
43
- disableEditing
40
+ readOnly,
41
+ tagName = 'figcaption',
42
+ addLabel = (0, _i18n.__)('Add caption'),
43
+ removeLabel = (0, _i18n.__)('Remove caption'),
44
+ icon = _icons.caption,
45
+ ...props
44
46
  }) {
45
- const caption = attributes[key];
47
+ const caption = attributes[attributeKey];
46
48
  const prevCaption = (0, _compose.usePrevious)(caption);
49
+ const {
50
+ PrivateRichText: RichText
51
+ } = (0, _lockUnlock.unlock)(_blockEditor.privateApis);
47
52
  const isCaptionEmpty = RichText.isEmpty(caption);
48
53
  const isPrevCaptionEmpty = RichText.isEmpty(prevCaption);
49
54
  const [showCaption, setShowCaption] = (0, _element.useState)(!isCaptionEmpty);
@@ -74,27 +79,28 @@ function Caption({
74
79
  setShowCaption(!showCaption);
75
80
  if (showCaption && caption) {
76
81
  setAttributes({
77
- caption: undefined
82
+ [attributeKey]: undefined
78
83
  });
79
84
  }
80
85
  },
81
- icon: _icons.caption,
86
+ icon: icon,
82
87
  isPressed: showCaption,
83
- label: showCaption ? (0, _i18n.__)('Remove caption') : (0, _i18n.__)('Add caption')
88
+ label: showCaption ? removeLabel : addLabel
84
89
  })), showCaption && (!RichText.isEmpty(caption) || isSelected) && (0, _react.createElement)(RichText, {
85
- identifier: key,
86
- tagName: "figcaption",
90
+ identifier: attributeKey,
91
+ tagName: tagName,
87
92
  className: (0, _classnames.default)(className, (0, _blockEditor.__experimentalGetElementClassName)('caption')),
88
93
  ref: ref,
89
94
  "aria-label": label,
90
95
  placeholder: placeholder,
91
96
  value: caption,
92
97
  onChange: value => setAttributes({
93
- caption: value
98
+ [attributeKey]: value
94
99
  }),
95
100
  inlineToolbar: true,
96
101
  __unstableOnSplitAtEnd: () => insertBlocksAfter((0, _blocks.createBlock)((0, _blocks.getDefaultBlockName)())),
97
- disableEditing: disableEditing
102
+ readOnly: readOnly,
103
+ ...props
98
104
  }));
99
105
  }
100
106
  //# sourceMappingURL=caption.js.map