@wordpress/block-library 9.35.1-next.16d95556a.0 → 9.36.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 (311) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/accordion/view.js +46 -4
  3. package/build/accordion/view.js.map +2 -2
  4. package/build/accordion-heading/block.json +1 -1
  5. package/build/accordion-heading/deprecated.js +1 -1
  6. package/build/accordion-heading/deprecated.js.map +2 -2
  7. package/build/accordion-panel/block.json +1 -1
  8. package/build/audio/index.js +29 -0
  9. package/build/audio/index.js.map +3 -3
  10. package/build/breadcrumbs/edit.js +1 -1
  11. package/build/breadcrumbs/edit.js.map +2 -2
  12. package/build/button/index.js +25 -0
  13. package/build/button/index.js.map +3 -3
  14. package/build/code/index.js +15 -0
  15. package/build/code/index.js.map +3 -3
  16. package/build/cover/edit/block-controls.js +37 -3
  17. package/build/cover/edit/block-controls.js.map +3 -3
  18. package/build/cover/edit/cover-placeholder.js +0 -1
  19. package/build/cover/edit/cover-placeholder.js.map +2 -2
  20. package/build/cover/edit/embed-video-url-input.js +83 -0
  21. package/build/cover/edit/embed-video-url-input.js.map +7 -0
  22. package/build/cover/edit/index.js +60 -0
  23. package/build/cover/edit/index.js.map +2 -2
  24. package/build/cover/embed-video-utils.js +151 -0
  25. package/build/cover/embed-video-utils.js.map +7 -0
  26. package/build/cover/index.js +28 -0
  27. package/build/cover/index.js.map +3 -3
  28. package/build/cover/save.js +12 -0
  29. package/build/cover/save.js.map +2 -2
  30. package/build/cover/shared.js +3 -0
  31. package/build/cover/shared.js.map +2 -2
  32. package/build/details/index.js +15 -0
  33. package/build/details/index.js.map +3 -3
  34. package/build/file/index.js +33 -0
  35. package/build/file/index.js.map +3 -3
  36. package/build/freeform/block.json +1 -1
  37. package/build/gallery/edit.js +0 -2
  38. package/build/gallery/edit.js.map +2 -2
  39. package/build/heading/index.js +15 -0
  40. package/build/heading/index.js.map +3 -3
  41. package/build/html/modal.js +139 -148
  42. package/build/html/modal.js.map +3 -3
  43. package/build/image/edit.js +0 -1
  44. package/build/image/edit.js.map +2 -2
  45. package/build/image/image.js +0 -1
  46. package/build/image/image.js.map +2 -2
  47. package/build/image/index.js +46 -0
  48. package/build/image/index.js.map +3 -3
  49. package/build/list-item/index.js +15 -0
  50. package/build/list-item/index.js.map +3 -3
  51. package/build/math/block.json +28 -1
  52. package/build/math/edit.js +4 -1
  53. package/build/math/edit.js.map +2 -2
  54. package/build/media-text/index.js +35 -0
  55. package/build/media-text/index.js.map +3 -3
  56. package/build/media-text/media-container.js +0 -2
  57. package/build/media-text/media-container.js.map +2 -2
  58. package/build/missing/block.json +1 -1
  59. package/build/missing/edit.js +2 -2
  60. package/build/missing/edit.js.map +1 -1
  61. package/build/more/index.js +16 -0
  62. package/build/more/index.js.map +3 -3
  63. package/build/navigation/block.json +2 -2
  64. package/build/navigation-link/block.json +2 -1
  65. package/build/navigation-link/edit.js +42 -11
  66. package/build/navigation-link/edit.js.map +2 -2
  67. package/build/navigation-link/index.js +25 -0
  68. package/build/navigation-link/index.js.map +3 -3
  69. package/build/navigation-link/shared/controls.js +15 -19
  70. package/build/navigation-link/shared/controls.js.map +2 -2
  71. package/build/navigation-link/shared/index.js +4 -0
  72. package/build/navigation-link/shared/index.js.map +2 -2
  73. package/build/navigation-link/shared/use-entity-binding.js +3 -2
  74. package/build/navigation-link/shared/use-entity-binding.js.map +2 -2
  75. package/build/navigation-submenu/block.json +2 -1
  76. package/build/navigation-submenu/index.js +25 -0
  77. package/build/navigation-submenu/index.js.map +3 -3
  78. package/build/paragraph/deprecated-attributes.js +68 -0
  79. package/build/paragraph/deprecated-attributes.js.map +7 -0
  80. package/build/paragraph/edit.js +2 -0
  81. package/build/paragraph/edit.js.map +3 -3
  82. package/build/paragraph/index.js +15 -0
  83. package/build/paragraph/index.js.map +3 -3
  84. package/build/pattern/block.json +1 -1
  85. package/build/post-comments-count/edit.js +1 -2
  86. package/build/post-comments-count/edit.js.map +2 -2
  87. package/build/post-comments-link/edit.js +10 -7
  88. package/build/post-comments-link/edit.js.map +2 -2
  89. package/build/preformatted/index.js +15 -0
  90. package/build/preformatted/index.js.map +3 -3
  91. package/build/pullquote/index.js +20 -0
  92. package/build/pullquote/index.js.map +3 -3
  93. package/build/search/index.js +26 -0
  94. package/build/search/index.js.map +3 -3
  95. package/build/social-link/index.js +25 -0
  96. package/build/social-link/index.js.map +3 -3
  97. package/build/social-links/edit.js +1 -1
  98. package/build/social-links/edit.js.map +1 -1
  99. package/build/tabs/view.js +17 -4
  100. package/build/tabs/view.js.map +2 -2
  101. package/build/template-part/edit/index.js +37 -7
  102. package/build/template-part/edit/index.js.map +2 -2
  103. package/build/template-part/edit/utils/hooks.js +2 -3
  104. package/build/template-part/edit/utils/hooks.js.map +2 -2
  105. package/build/term-count/index.js +1 -0
  106. package/build/term-count/index.js.map +2 -2
  107. package/build/term-name/index.js +1 -0
  108. package/build/term-name/index.js.map +2 -2
  109. package/build/verse/index.js +15 -0
  110. package/build/verse/index.js.map +3 -3
  111. package/build/video/index.js +30 -0
  112. package/build/video/index.js.map +3 -3
  113. package/build-module/accordion/view.js +46 -4
  114. package/build-module/accordion/view.js.map +2 -2
  115. package/build-module/accordion-heading/block.json +1 -1
  116. package/build-module/accordion-heading/deprecated.js +1 -1
  117. package/build-module/accordion-heading/deprecated.js.map +2 -2
  118. package/build-module/accordion-panel/block.json +1 -1
  119. package/build-module/audio/index.js +29 -0
  120. package/build-module/audio/index.js.map +2 -2
  121. package/build-module/breadcrumbs/edit.js +1 -1
  122. package/build-module/breadcrumbs/edit.js.map +2 -2
  123. package/build-module/button/index.js +25 -0
  124. package/build-module/button/index.js.map +2 -2
  125. package/build-module/code/index.js +15 -0
  126. package/build-module/code/index.js.map +2 -2
  127. package/build-module/cover/edit/block-controls.js +27 -3
  128. package/build-module/cover/edit/block-controls.js.map +2 -2
  129. package/build-module/cover/edit/cover-placeholder.js +0 -1
  130. package/build-module/cover/edit/cover-placeholder.js.map +2 -2
  131. package/build-module/cover/edit/embed-video-url-input.js +67 -0
  132. package/build-module/cover/edit/embed-video-url-input.js.map +7 -0
  133. package/build-module/cover/edit/index.js +61 -0
  134. package/build-module/cover/edit/index.js.map +2 -2
  135. package/build-module/cover/embed-video-utils.js +122 -0
  136. package/build-module/cover/embed-video-utils.js.map +7 -0
  137. package/build-module/cover/index.js +28 -0
  138. package/build-module/cover/index.js.map +2 -2
  139. package/build-module/cover/save.js +13 -0
  140. package/build-module/cover/save.js.map +2 -2
  141. package/build-module/cover/shared.js +2 -0
  142. package/build-module/cover/shared.js.map +2 -2
  143. package/build-module/details/index.js +15 -0
  144. package/build-module/details/index.js.map +2 -2
  145. package/build-module/file/index.js +34 -1
  146. package/build-module/file/index.js.map +2 -2
  147. package/build-module/freeform/block.json +1 -1
  148. package/build-module/gallery/edit.js +0 -2
  149. package/build-module/gallery/edit.js.map +2 -2
  150. package/build-module/heading/index.js +15 -0
  151. package/build-module/heading/index.js.map +2 -2
  152. package/build-module/html/modal.js +141 -150
  153. package/build-module/html/modal.js.map +2 -2
  154. package/build-module/image/edit.js +0 -1
  155. package/build-module/image/edit.js.map +2 -2
  156. package/build-module/image/image.js +0 -1
  157. package/build-module/image/image.js.map +2 -2
  158. package/build-module/image/index.js +46 -0
  159. package/build-module/image/index.js.map +2 -2
  160. package/build-module/list-item/index.js +15 -0
  161. package/build-module/list-item/index.js.map +2 -2
  162. package/build-module/math/block.json +28 -1
  163. package/build-module/math/edit.js +4 -1
  164. package/build-module/math/edit.js.map +2 -2
  165. package/build-module/media-text/index.js +35 -0
  166. package/build-module/media-text/index.js.map +2 -2
  167. package/build-module/media-text/media-container.js +0 -2
  168. package/build-module/media-text/media-container.js.map +2 -2
  169. package/build-module/missing/block.json +1 -1
  170. package/build-module/missing/edit.js +2 -2
  171. package/build-module/missing/edit.js.map +1 -1
  172. package/build-module/more/index.js +16 -0
  173. package/build-module/more/index.js.map +2 -2
  174. package/build-module/navigation/block.json +2 -2
  175. package/build-module/navigation-link/block.json +2 -1
  176. package/build-module/navigation-link/edit.js +56 -15
  177. package/build-module/navigation-link/edit.js.map +2 -2
  178. package/build-module/navigation-link/index.js +26 -1
  179. package/build-module/navigation-link/index.js.map +2 -2
  180. package/build-module/navigation-link/shared/controls.js +12 -18
  181. package/build-module/navigation-link/shared/controls.js.map +2 -2
  182. package/build-module/navigation-link/shared/index.js +3 -1
  183. package/build-module/navigation-link/shared/index.js.map +2 -2
  184. package/build-module/navigation-link/shared/use-entity-binding.js +3 -2
  185. package/build-module/navigation-link/shared/use-entity-binding.js.map +2 -2
  186. package/build-module/navigation-submenu/block.json +2 -1
  187. package/build-module/navigation-submenu/index.js +26 -1
  188. package/build-module/navigation-submenu/index.js.map +2 -2
  189. package/build-module/paragraph/deprecated-attributes.js +37 -0
  190. package/build-module/paragraph/deprecated-attributes.js.map +7 -0
  191. package/build-module/paragraph/edit.js +2 -0
  192. package/build-module/paragraph/edit.js.map +2 -2
  193. package/build-module/paragraph/index.js +15 -0
  194. package/build-module/paragraph/index.js.map +2 -2
  195. package/build-module/pattern/block.json +1 -1
  196. package/build-module/post-comments-count/edit.js +1 -3
  197. package/build-module/post-comments-count/edit.js.map +2 -2
  198. package/build-module/post-comments-link/edit.js +10 -8
  199. package/build-module/post-comments-link/edit.js.map +2 -2
  200. package/build-module/preformatted/index.js +15 -0
  201. package/build-module/preformatted/index.js.map +2 -2
  202. package/build-module/pullquote/index.js +20 -0
  203. package/build-module/pullquote/index.js.map +2 -2
  204. package/build-module/search/index.js +26 -0
  205. package/build-module/search/index.js.map +2 -2
  206. package/build-module/social-link/index.js +25 -0
  207. package/build-module/social-link/index.js.map +2 -2
  208. package/build-module/social-links/edit.js +1 -1
  209. package/build-module/social-links/edit.js.map +1 -1
  210. package/build-module/tabs/view.js +17 -4
  211. package/build-module/tabs/view.js.map +2 -2
  212. package/build-module/template-part/edit/index.js +37 -7
  213. package/build-module/template-part/edit/index.js.map +2 -2
  214. package/build-module/template-part/edit/utils/hooks.js +2 -3
  215. package/build-module/template-part/edit/utils/hooks.js.map +2 -2
  216. package/build-module/term-count/index.js +1 -0
  217. package/build-module/term-count/index.js.map +2 -2
  218. package/build-module/term-name/index.js +1 -0
  219. package/build-module/term-name/index.js.map +2 -2
  220. package/build-module/verse/index.js +15 -0
  221. package/build-module/verse/index.js.map +2 -2
  222. package/build-module/video/index.js +30 -0
  223. package/build-module/video/index.js.map +2 -2
  224. package/build-style/accordion/style-rtl.css +3 -0
  225. package/build-style/accordion/style.css +3 -0
  226. package/build-style/accordion-heading/style-rtl.css +1 -2
  227. package/build-style/accordion-heading/style.css +1 -2
  228. package/build-style/accordion-item/style-rtl.css +0 -7
  229. package/build-style/accordion-item/style.css +0 -7
  230. package/build-style/accordion-panel/style-rtl.css +1 -4
  231. package/build-style/accordion-panel/style.css +1 -4
  232. package/build-style/cover/style-rtl.css +47 -0
  233. package/build-style/cover/style.css +47 -0
  234. package/build-style/editor-rtl.css +11 -13
  235. package/build-style/editor.css +11 -13
  236. package/build-style/html/editor-rtl.css +11 -13
  237. package/build-style/html/editor.css +11 -13
  238. package/build-style/style-rtl.css +52 -12
  239. package/build-style/style.css +52 -12
  240. package/package.json +37 -37
  241. package/src/accordion/style.scss +4 -0
  242. package/src/accordion/view.js +60 -3
  243. package/src/accordion-heading/block.json +1 -1
  244. package/src/accordion-heading/deprecated.js +1 -1
  245. package/src/accordion-heading/style.scss +1 -9
  246. package/src/accordion-item/index.php +1 -0
  247. package/src/accordion-item/style.scss +2 -9
  248. package/src/accordion-panel/block.json +1 -1
  249. package/src/accordion-panel/style.scss +1 -5
  250. package/src/audio/index.js +31 -0
  251. package/src/breadcrumbs/edit.js +4 -2
  252. package/src/breadcrumbs/index.php +171 -100
  253. package/src/button/index.js +27 -0
  254. package/src/code/index.js +17 -0
  255. package/src/cover/edit/block-controls.js +26 -2
  256. package/src/cover/edit/cover-placeholder.js +0 -1
  257. package/src/cover/edit/embed-video-url-input.js +74 -0
  258. package/src/cover/edit/index.js +81 -0
  259. package/src/cover/embed-video-utils.js +196 -0
  260. package/src/cover/index.js +30 -0
  261. package/src/cover/index.php +106 -0
  262. package/src/cover/save.js +14 -0
  263. package/src/cover/shared.js +1 -0
  264. package/src/cover/style.scss +47 -0
  265. package/src/details/index.js +17 -0
  266. package/src/file/index.js +36 -1
  267. package/src/freeform/block.json +1 -1
  268. package/src/gallery/edit.js +0 -2
  269. package/src/heading/index.js +17 -0
  270. package/src/html/editor.scss +10 -15
  271. package/src/html/modal.js +23 -38
  272. package/src/image/edit.js +0 -1
  273. package/src/image/image.js +0 -1
  274. package/src/image/index.js +48 -0
  275. package/src/image/index.php +1 -0
  276. package/src/list-item/index.js +17 -0
  277. package/src/math/block.json +28 -1
  278. package/src/math/edit.js +4 -1
  279. package/src/media-text/index.js +37 -0
  280. package/src/media-text/media-container.js +0 -2
  281. package/src/missing/block.json +1 -1
  282. package/src/missing/edit.js +2 -2
  283. package/src/more/index.js +18 -0
  284. package/src/navigation/block.json +2 -2
  285. package/src/navigation-link/block.json +2 -1
  286. package/src/navigation-link/edit.js +98 -29
  287. package/src/navigation-link/index.js +28 -1
  288. package/src/navigation-link/shared/controls.js +13 -17
  289. package/src/navigation-link/shared/index.js +1 -1
  290. package/src/navigation-link/shared/use-entity-binding.js +5 -2
  291. package/src/navigation-submenu/block.json +2 -1
  292. package/src/navigation-submenu/index.js +28 -1
  293. package/src/paragraph/deprecated-attributes.js +45 -0
  294. package/src/paragraph/edit.js +2 -0
  295. package/src/paragraph/index.js +17 -0
  296. package/src/pattern/block.json +1 -1
  297. package/src/post-comments-count/edit.js +1 -9
  298. package/src/post-comments-link/edit.js +8 -18
  299. package/src/preformatted/index.js +17 -0
  300. package/src/pullquote/index.js +22 -0
  301. package/src/search/index.js +28 -0
  302. package/src/social-link/index.js +27 -0
  303. package/src/social-links/edit.js +1 -1
  304. package/src/style.scss +1 -0
  305. package/src/tabs/view.js +19 -4
  306. package/src/template-part/edit/index.js +44 -6
  307. package/src/template-part/edit/utils/hooks.js +2 -4
  308. package/src/term-count/index.js +1 -0
  309. package/src/term-name/index.js +1 -0
  310. package/src/verse/index.js +17 -0
  311. package/src/video/index.js +32 -0
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { search as icon } from '@wordpress/icons';
6
+ import { privateApis as blocksPrivateApis } from '@wordpress/blocks';
6
7
 
7
8
  /**
8
9
  * Internal dependencies
@@ -11,6 +12,9 @@ import initBlock from '../utils/init-block';
11
12
  import metadata from './block.json';
12
13
  import edit from './edit';
13
14
  import variations from './variations';
15
+ import { unlock } from '../lock-unlock';
16
+
17
+ const { fieldsKey, formKey } = unlock( blocksPrivateApis );
14
18
 
15
19
  const { name } = metadata;
16
20
 
@@ -26,4 +30,28 @@ export const settings = {
26
30
  edit,
27
31
  };
28
32
 
33
+ if ( window.__experimentalContentOnlyPatternInsertion ) {
34
+ settings[ fieldsKey ] = [
35
+ {
36
+ id: 'label',
37
+ label: __( 'Label' ),
38
+ type: 'richtext',
39
+ shownByDefault: true,
40
+ },
41
+ {
42
+ id: 'buttonText',
43
+ label: __( 'Button text' ),
44
+ type: 'richtext',
45
+ },
46
+ {
47
+ id: 'placeholder',
48
+ label: __( 'Placeholder' ),
49
+ type: 'richtext',
50
+ },
51
+ ];
52
+ settings[ formKey ] = {
53
+ fields: [ 'label' ],
54
+ };
55
+ }
56
+
29
57
  export const init = () => initBlock( { name, metadata, settings } );
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
+ import { __ } from '@wordpress/i18n';
4
5
  import { share as icon } from '@wordpress/icons';
6
+ import { privateApis as blocksPrivateApis } from '@wordpress/blocks';
5
7
 
6
8
  /**
7
9
  * Internal dependencies
@@ -10,6 +12,9 @@ import initBlock from '../utils/init-block';
10
12
  import edit from './edit';
11
13
  import metadata from './block.json';
12
14
  import variations from './variations';
15
+ import { unlock } from '../lock-unlock';
16
+
17
+ const { fieldsKey, formKey } = unlock( blocksPrivateApis );
13
18
 
14
19
  const { name } = metadata;
15
20
 
@@ -21,4 +26,26 @@ export const settings = {
21
26
  variations,
22
27
  };
23
28
 
29
+ if ( window.__experimentalContentOnlyPatternInsertion ) {
30
+ settings[ fieldsKey ] = [
31
+ {
32
+ id: 'link',
33
+ label: __( 'Link' ),
34
+ type: 'link',
35
+ mapping: {
36
+ href: 'url',
37
+ rel: 'rel',
38
+ },
39
+ },
40
+ {
41
+ id: 'label',
42
+ label: __( 'Label' ),
43
+ type: 'richtext',
44
+ },
45
+ ];
46
+ settings[ formKey ] = {
47
+ fields: [ 'link' ],
48
+ };
49
+ }
50
+
24
51
  export const init = () => initBlock( { name, metadata, settings } );
@@ -183,7 +183,7 @@ export function SocialLinksEdit( props ) {
183
183
  <SelectControl
184
184
  __next40pxDefaultSize
185
185
  __nextHasNoMarginBottom
186
- label={ __( 'Icon Size' ) }
186
+ label={ __( 'Icon size' ) }
187
187
  onChange={ ( newSize ) => {
188
188
  setAttributes( {
189
189
  size: newSize === '' ? undefined : newSize,
package/src/style.scss CHANGED
@@ -1,3 +1,4 @@
1
+ @use "./accordion/style.scss" as *;
1
2
  @use "./accordion-item/style.scss" as *;
2
3
  @use "./accordion-heading/style.scss" as *;
3
4
  @use "./accordion-panel/style.scss" as *;
package/src/tabs/view.js CHANGED
@@ -9,8 +9,25 @@ import {
9
9
  } from '@wordpress/interactivity';
10
10
 
11
11
  function createReadOnlyProxy( obj ) {
12
+ const arrayMutationMethods = new Set( [
13
+ 'push',
14
+ 'pop',
15
+ 'shift',
16
+ 'unshift',
17
+ 'splice',
18
+ 'sort',
19
+ 'reverse',
20
+ 'copyWithin',
21
+ 'fill',
22
+ ] );
23
+
12
24
  return new Proxy( obj, {
13
25
  get( target, prop ) {
26
+ // If accessing an array mutation method, return a no-op function.
27
+ if ( Array.isArray( target ) && arrayMutationMethods.has( prop ) ) {
28
+ return () => {};
29
+ }
30
+
14
31
  const value = target[ prop ];
15
32
  if ( typeof value === 'object' && value !== null ) {
16
33
  return createReadOnlyProxy( value );
@@ -186,21 +203,19 @@ store( 'core/tabs', {
186
203
  /**
187
204
  * Gets the index of the active tab element whether it
188
205
  * is a tab label or tab panel.
189
- * Public API for third-party access.
190
206
  *
191
207
  * @type {number|null}
192
208
  */
193
209
  get tabIndex() {
194
- return createReadOnlyProxy( privateState.tabIndex );
210
+ return privateState.tabIndex;
195
211
  },
196
212
  /**
197
213
  * Whether the tab panel or tab label is the active tab.
198
- * Public API for third-party access.
199
214
  *
200
215
  * @type {boolean}
201
216
  */
202
217
  get isActiveTab() {
203
- return createReadOnlyProxy( privateState.isActiveTab );
218
+ return privateState.isActiveTab;
204
219
  },
205
220
  },
206
221
  actions: {
@@ -39,6 +39,17 @@ import {
39
39
  useAlternativeTemplateParts,
40
40
  useTemplatePartArea,
41
41
  } from './utils/hooks';
42
+ import { unlock } from '../../lock-unlock';
43
+
44
+ function getTemplatePartEditButtonTitle( clientId, editedContentOnlySection ) {
45
+ if ( ! window?.__experimentalContentOnlyPatternInsertion ) {
46
+ return __( 'Edit' );
47
+ }
48
+
49
+ return editedContentOnlySection === clientId
50
+ ? __( 'Exit section' )
51
+ : __( 'Edit section' );
52
+ }
42
53
 
43
54
  function ReplaceButton( {
44
55
  isEntityAvailable,
@@ -108,8 +119,18 @@ export default function TemplatePartEdit( {
108
119
  } ) {
109
120
  const { createSuccessNotice } = useDispatch( noticesStore );
110
121
  const { editEntityRecord } = useDispatch( coreStore );
111
- const currentTheme = useSelect(
112
- ( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,
122
+ const { editContentOnlySection, stopEditingContentOnlySection } = unlock(
123
+ useDispatch( blockEditorStore )
124
+ );
125
+ const { currentTheme, editedContentOnlySection } = useSelect(
126
+ ( select ) => {
127
+ return {
128
+ currentTheme: select( coreStore ).getCurrentTheme()?.stylesheet,
129
+ editedContentOnlySection: unlock(
130
+ select( blockEditorStore )
131
+ ).getEditedContentOnlySection(),
132
+ };
133
+ },
113
134
  []
114
135
  );
115
136
  const { slug, theme = currentTheme, tagName, layout = {} } = attributes;
@@ -240,14 +261,31 @@ export default function TemplatePartEdit( {
240
261
  canUserEdit && (
241
262
  <BlockControls group="other">
242
263
  <ToolbarButton
243
- onClick={ () =>
264
+ onClick={ () => {
265
+ if (
266
+ window?.__experimentalContentOnlyPatternInsertion
267
+ ) {
268
+ if (
269
+ editedContentOnlySection !==
270
+ clientId
271
+ ) {
272
+ editContentOnlySection( clientId );
273
+ } else {
274
+ stopEditingContentOnlySection();
275
+ }
276
+ return;
277
+ }
278
+
244
279
  onNavigateToEntityRecord( {
245
280
  postId: templatePartId,
246
281
  postType: 'wp_template_part',
247
- } )
248
- }
282
+ } );
283
+ } }
249
284
  >
250
- { __( 'Edit' ) }
285
+ { getTemplatePartEditButtonTitle(
286
+ clientId,
287
+ editedContentOnlySection
288
+ ) }
251
289
  </ToolbarButton>
252
290
  </BlockControls>
253
291
  ) }
@@ -83,10 +83,8 @@ export function useAlternativeBlockPatterns( area, clientId ) {
83
83
  const blockNameWithArea = area
84
84
  ? `core/template-part/${ area }`
85
85
  : 'core/template-part';
86
- const { getBlockRootClientId, getPatternsByBlockTypes } =
87
- select( blockEditorStore );
88
- const rootClientId = getBlockRootClientId( clientId );
89
- return getPatternsByBlockTypes( blockNameWithArea, rootClientId );
86
+ const { getPatternsByBlockTypes } = select( blockEditorStore );
87
+ return getPatternsByBlockTypes( blockNameWithArea, clientId );
90
88
  },
91
89
  [ area, clientId ]
92
90
  );
@@ -15,6 +15,7 @@ export { metadata, name };
15
15
 
16
16
  export const settings = {
17
17
  icon,
18
+ example: {},
18
19
  edit,
19
20
  };
20
21
 
@@ -15,6 +15,7 @@ export { metadata, name };
15
15
 
16
16
  export const settings = {
17
17
  icon,
18
+ example: {},
18
19
  edit,
19
20
  };
20
21
 
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { verse as icon } from '@wordpress/icons';
6
+ import { privateApis as blocksPrivateApis } from '@wordpress/blocks';
6
7
 
7
8
  /**
8
9
  * Internal dependencies
@@ -13,6 +14,9 @@ import edit from './edit';
13
14
  import metadata from './block.json';
14
15
  import save from './save';
15
16
  import transforms from './transforms';
17
+ import { unlock } from '../lock-unlock';
18
+
19
+ const { fieldsKey, formKey } = unlock( blocksPrivateApis );
16
20
 
17
21
  const { name } = metadata;
18
22
 
@@ -41,4 +45,17 @@ export const settings = {
41
45
  save,
42
46
  };
43
47
 
48
+ if ( window.__experimentalContentOnlyPatternInsertion ) {
49
+ settings[ fieldsKey ] = [
50
+ {
51
+ id: 'content',
52
+ label: __( 'Content' ),
53
+ type: 'richtext',
54
+ },
55
+ ];
56
+ settings[ formKey ] = {
57
+ fields: [ 'content' ],
58
+ };
59
+ }
60
+
44
61
  export const init = () => initBlock( { name, metadata, settings } );
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { video as icon } from '@wordpress/icons';
6
+ import { privateApis as blocksPrivateApis } from '@wordpress/blocks';
6
7
 
7
8
  /**
8
9
  * Internal dependencies
@@ -13,6 +14,9 @@ import edit from './edit';
13
14
  import metadata from './block.json';
14
15
  import save from './save';
15
16
  import transforms from './transforms';
17
+ import { unlock } from '../lock-unlock';
18
+
19
+ const { fieldsKey, formKey } = unlock( blocksPrivateApis );
16
20
 
17
21
  const { name } = metadata;
18
22
 
@@ -33,4 +37,32 @@ export const settings = {
33
37
  save,
34
38
  };
35
39
 
40
+ if ( window.__experimentalContentOnlyPatternInsertion ) {
41
+ settings[ fieldsKey ] = [
42
+ {
43
+ id: 'video',
44
+ label: __( 'Video' ),
45
+ type: 'media',
46
+ mapping: {
47
+ id: 'id',
48
+ url: 'src',
49
+ caption: 'caption',
50
+ poster: 'poster',
51
+ },
52
+ args: {
53
+ allowedTypes: [ 'video' ],
54
+ multiple: false,
55
+ },
56
+ },
57
+ {
58
+ id: 'caption',
59
+ label: __( 'Caption' ),
60
+ type: 'richtext',
61
+ },
62
+ ];
63
+ settings[ formKey ] = {
64
+ fields: [ 'video' ],
65
+ };
66
+ }
67
+
36
68
  export const init = () => initBlock( { name, metadata, settings } );