@wordpress/block-library 8.25.0 → 8.25.1-next.79a6196f.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 (250) hide show
  1. package/LICENSE.md +1 -1
  2. package/build/audio/edit.js +10 -12
  3. package/build/audio/edit.js.map +1 -1
  4. package/build/block/edit.js +81 -34
  5. package/build/block/edit.js.map +1 -1
  6. package/build/comments-title/deprecated.js +1 -1
  7. package/build/comments-title/index.js +1 -1
  8. package/build/cover/edit/inspector-controls.js +1 -1
  9. package/build/cover/edit/inspector-controls.js.map +1 -1
  10. package/build/cover/edit.native.js +1 -0
  11. package/build/cover/edit.native.js.map +1 -1
  12. package/build/embed/util.js +4 -4
  13. package/build/embed/util.js.map +1 -1
  14. package/build/file/edit.js +19 -27
  15. package/build/file/edit.js.map +1 -1
  16. package/build/gallery/edit.js +36 -17
  17. package/build/gallery/edit.js.map +1 -1
  18. package/build/gallery/gallery.js +3 -2
  19. package/build/gallery/gallery.js.map +1 -1
  20. package/build/gallery/index.js +4 -0
  21. package/build/gallery/index.js.map +1 -1
  22. package/build/gallery/transforms.js +4 -68
  23. package/build/gallery/transforms.js.map +1 -1
  24. package/build/group/index.js +5 -1
  25. package/build/group/index.js.map +1 -1
  26. package/build/image/deprecated.js +11 -0
  27. package/build/image/deprecated.js.map +1 -1
  28. package/build/image/edit.native.js +3 -0
  29. package/build/image/edit.native.js.map +1 -1
  30. package/build/image/image.js +22 -21
  31. package/build/image/image.js.map +1 -1
  32. package/build/image/view.js +7 -1
  33. package/build/image/view.js.map +1 -1
  34. package/build/list/edit.js +10 -15
  35. package/build/list/edit.js.map +1 -1
  36. package/build/list-item/edit.js +17 -2
  37. package/build/list-item/edit.js.map +1 -1
  38. package/build/list-item/hooks/use-enter.js +5 -3
  39. package/build/list-item/hooks/use-enter.js.map +1 -1
  40. package/build/list-item/hooks/use-enter.native.js +4 -3
  41. package/build/list-item/hooks/use-enter.native.js.map +1 -1
  42. package/build/list-item/hooks/use-indent-list-item.js +2 -3
  43. package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
  44. package/build/list-item/hooks/use-merge.js +1 -1
  45. package/build/list-item/hooks/use-merge.js.map +1 -1
  46. package/build/list-item/hooks/use-outdent-list-item.js +3 -17
  47. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  48. package/build/list-item/hooks/use-space.js +8 -4
  49. package/build/list-item/hooks/use-space.js.map +1 -1
  50. package/build/media-text/media-container.native.js +3 -0
  51. package/build/media-text/media-container.native.js.map +1 -1
  52. package/build/navigation/constants.js +3 -1
  53. package/build/navigation/constants.js.map +1 -1
  54. package/build/navigation/edit/index.js +4 -0
  55. package/build/navigation/edit/index.js.map +1 -1
  56. package/build/navigation/view.js +25 -1
  57. package/build/navigation/view.js.map +1 -1
  58. package/build/paragraph/index.js +0 -1
  59. package/build/paragraph/index.js.map +1 -1
  60. package/build/paragraph/transforms.js +0 -1
  61. package/build/paragraph/transforms.js.map +1 -1
  62. package/build/pattern/edit.js +24 -2
  63. package/build/pattern/edit.js.map +1 -1
  64. package/build/pattern/recursion-detector.js +147 -0
  65. package/build/pattern/recursion-detector.js.map +1 -0
  66. package/build/post-featured-image/edit.js +19 -2
  67. package/build/post-featured-image/edit.js.map +1 -1
  68. package/build/post-featured-image/index.js +4 -0
  69. package/build/post-featured-image/index.js.map +1 -1
  70. package/build/query/edit/inspector-controls/index.js +3 -1
  71. package/build/query/edit/inspector-controls/index.js.map +1 -1
  72. package/build/query-pagination-numbers/index.js +1 -1
  73. package/build/search/edit.js +3 -5
  74. package/build/search/edit.js.map +1 -1
  75. package/build/search/index.js +0 -4
  76. package/build/search/index.js.map +1 -1
  77. package/build/site-logo/edit.js +7 -6
  78. package/build/site-logo/edit.js.map +1 -1
  79. package/build/spacer/edit.native.js +2 -2
  80. package/build/spacer/edit.native.js.map +1 -1
  81. package/build/tag-cloud/edit.js +5 -9
  82. package/build/tag-cloud/edit.js.map +1 -1
  83. package/build/utils/constants.js +16 -0
  84. package/build/utils/constants.js.map +1 -0
  85. package/build/video/edit.js +11 -8
  86. package/build/video/edit.js.map +1 -1
  87. package/build-module/audio/edit.js +10 -12
  88. package/build-module/audio/edit.js.map +1 -1
  89. package/build-module/block/edit.js +85 -38
  90. package/build-module/block/edit.js.map +1 -1
  91. package/build-module/comments-title/deprecated.js +1 -1
  92. package/build-module/comments-title/index.js +1 -1
  93. package/build-module/cover/edit/inspector-controls.js +1 -1
  94. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  95. package/build-module/cover/edit.native.js +1 -0
  96. package/build-module/cover/edit.native.js.map +1 -1
  97. package/build-module/embed/util.js +4 -4
  98. package/build-module/embed/util.js.map +1 -1
  99. package/build-module/file/edit.js +19 -27
  100. package/build-module/file/edit.js.map +1 -1
  101. package/build-module/gallery/edit.js +36 -17
  102. package/build-module/gallery/edit.js.map +1 -1
  103. package/build-module/gallery/gallery.js +3 -2
  104. package/build-module/gallery/gallery.js.map +1 -1
  105. package/build-module/gallery/index.js +4 -0
  106. package/build-module/gallery/index.js.map +1 -1
  107. package/build-module/gallery/transforms.js +4 -68
  108. package/build-module/gallery/transforms.js.map +1 -1
  109. package/build-module/group/index.js +5 -1
  110. package/build-module/group/index.js.map +1 -1
  111. package/build-module/image/deprecated.js +11 -0
  112. package/build-module/image/deprecated.js.map +1 -1
  113. package/build-module/image/edit.native.js +3 -0
  114. package/build-module/image/edit.native.js.map +1 -1
  115. package/build-module/image/image.js +17 -16
  116. package/build-module/image/image.js.map +1 -1
  117. package/build-module/image/view.js +7 -1
  118. package/build-module/image/view.js.map +1 -1
  119. package/build-module/list/edit.js +10 -15
  120. package/build-module/list/edit.js.map +1 -1
  121. package/build-module/list-item/edit.js +18 -3
  122. package/build-module/list-item/edit.js.map +1 -1
  123. package/build-module/list-item/hooks/use-enter.js +5 -3
  124. package/build-module/list-item/hooks/use-enter.js.map +1 -1
  125. package/build-module/list-item/hooks/use-enter.native.js +4 -3
  126. package/build-module/list-item/hooks/use-enter.native.js.map +1 -1
  127. package/build-module/list-item/hooks/use-indent-list-item.js +2 -3
  128. package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
  129. package/build-module/list-item/hooks/use-merge.js +1 -1
  130. package/build-module/list-item/hooks/use-merge.js.map +1 -1
  131. package/build-module/list-item/hooks/use-outdent-list-item.js +3 -17
  132. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  133. package/build-module/list-item/hooks/use-space.js +8 -4
  134. package/build-module/list-item/hooks/use-space.js.map +1 -1
  135. package/build-module/media-text/media-container.native.js +3 -0
  136. package/build-module/media-text/media-container.native.js.map +1 -1
  137. package/build-module/navigation/constants.js +1 -0
  138. package/build-module/navigation/constants.js.map +1 -1
  139. package/build-module/navigation/edit/index.js +5 -1
  140. package/build-module/navigation/edit/index.js.map +1 -1
  141. package/build-module/navigation/view.js +25 -1
  142. package/build-module/navigation/view.js.map +1 -1
  143. package/build-module/paragraph/index.js +0 -1
  144. package/build-module/paragraph/index.js.map +1 -1
  145. package/build-module/paragraph/transforms.js +0 -1
  146. package/build-module/paragraph/transforms.js.map +1 -1
  147. package/build-module/pattern/edit.js +26 -4
  148. package/build-module/pattern/edit.js.map +1 -1
  149. package/build-module/pattern/recursion-detector.js +139 -0
  150. package/build-module/pattern/recursion-detector.js.map +1 -0
  151. package/build-module/post-featured-image/edit.js +19 -2
  152. package/build-module/post-featured-image/edit.js.map +1 -1
  153. package/build-module/post-featured-image/index.js +4 -0
  154. package/build-module/post-featured-image/index.js.map +1 -1
  155. package/build-module/query/edit/inspector-controls/index.js +3 -1
  156. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  157. package/build-module/query-pagination-numbers/index.js +1 -1
  158. package/build-module/search/edit.js +3 -5
  159. package/build-module/search/edit.js.map +1 -1
  160. package/build-module/search/index.js +0 -4
  161. package/build-module/search/index.js.map +1 -1
  162. package/build-module/site-logo/edit.js +7 -6
  163. package/build-module/site-logo/edit.js.map +1 -1
  164. package/build-module/spacer/edit.native.js +2 -2
  165. package/build-module/spacer/edit.native.js.map +1 -1
  166. package/build-module/tag-cloud/edit.js +6 -10
  167. package/build-module/tag-cloud/edit.js.map +1 -1
  168. package/build-module/utils/constants.js +9 -0
  169. package/build-module/utils/constants.js.map +1 -0
  170. package/build-module/video/edit.js +11 -8
  171. package/build-module/video/edit.js.map +1 -1
  172. package/build-style/button/editor-rtl.css +0 -37
  173. package/build-style/button/editor.css +0 -37
  174. package/build-style/button/style-rtl.css +6 -6
  175. package/build-style/button/style.css +6 -6
  176. package/build-style/editor-rtl.css +2 -44
  177. package/build-style/editor.css +2 -44
  178. package/build-style/navigation/editor-rtl.css +2 -4
  179. package/build-style/navigation/editor.css +2 -4
  180. package/build-style/navigation/style-rtl.css +14 -18
  181. package/build-style/navigation/style.css +14 -18
  182. package/build-style/search/style-rtl.css +26 -27
  183. package/build-style/search/style.css +26 -27
  184. package/build-style/style-rtl.css +46 -51
  185. package/build-style/style.css +46 -51
  186. package/build-style/table/editor-rtl.css +0 -3
  187. package/build-style/table/editor.css +0 -3
  188. package/package.json +32 -32
  189. package/src/audio/edit.js +19 -19
  190. package/src/audio/test/__snapshots__/edit.native.js.snap +12 -0
  191. package/src/audio/test/edit.native.js +29 -0
  192. package/src/block/edit.js +120 -66
  193. package/src/button/editor.scss +0 -43
  194. package/src/button/style.scss +6 -6
  195. package/src/buttons/test/__snapshots__/edit.native.js.snap +6 -0
  196. package/src/buttons/test/edit.native.js +49 -0
  197. package/src/comments-title/block.json +1 -1
  198. package/src/cover/edit/inspector-controls.js +1 -1
  199. package/src/cover/edit.native.js +1 -0
  200. package/src/embed/util.js +2 -2
  201. package/src/file/edit.js +17 -24
  202. package/src/gallery/block.json +4 -0
  203. package/src/gallery/edit.js +69 -42
  204. package/src/gallery/gallery.js +4 -1
  205. package/src/gallery/index.php +15 -0
  206. package/src/gallery/transforms.js +2 -55
  207. package/src/group/block.json +5 -1
  208. package/src/image/deprecated.js +8 -0
  209. package/src/image/edit.native.js +3 -0
  210. package/src/image/image.js +54 -35
  211. package/src/image/index.php +1 -6
  212. package/src/image/view.js +5 -2
  213. package/src/list/edit.js +27 -35
  214. package/src/list-item/edit.js +18 -2
  215. package/src/list-item/hooks/use-enter.js +63 -62
  216. package/src/list-item/hooks/use-enter.native.js +9 -5
  217. package/src/list-item/hooks/use-indent-list-item.js +43 -53
  218. package/src/list-item/hooks/use-merge.js +1 -1
  219. package/src/list-item/hooks/use-outdent-list-item.js +50 -69
  220. package/src/list-item/hooks/use-space.js +7 -4
  221. package/src/media-text/media-container.native.js +3 -1
  222. package/src/navigation/constants.js +2 -0
  223. package/src/navigation/edit/index.js +11 -1
  224. package/src/navigation/editor.scss +1 -1
  225. package/src/navigation/style.scss +18 -16
  226. package/src/navigation/view.js +29 -3
  227. package/src/paragraph/block.json +0 -1
  228. package/src/paragraph/test/__snapshots__/edit.native.js.snap +12 -0
  229. package/src/paragraph/test/edit.native.js +114 -0
  230. package/src/pattern/edit.js +35 -3
  231. package/src/pattern/index.php +16 -0
  232. package/src/pattern/recursion-detector.js +145 -0
  233. package/src/pattern/test/index.js +74 -0
  234. package/src/post-featured-image/block.json +4 -0
  235. package/src/post-featured-image/edit.js +32 -1
  236. package/src/post-featured-image/index.php +31 -0
  237. package/src/query/edit/inspector-controls/index.js +2 -0
  238. package/src/query-pagination-numbers/block.json +1 -1
  239. package/src/search/block.json +0 -4
  240. package/src/search/edit.js +2 -8
  241. package/src/search/index.php +3 -7
  242. package/src/search/style.scss +27 -29
  243. package/src/site-logo/edit.js +3 -4
  244. package/src/social-link/index.php +1 -1
  245. package/src/spacer/edit.native.js +4 -2
  246. package/src/table/editor.scss +0 -3
  247. package/src/tag-cloud/edit.js +7 -7
  248. package/src/template-part/index.php +6 -0
  249. package/src/utils/constants.js +8 -0
  250. package/src/video/edit.js +29 -27
@@ -1 +1 @@
1
- {"version":3,"names":["_components","require","_data","_i18n","_blockEditor","_serverSideRender","_interopRequireDefault","_coreData","MIN_TAGS","MAX_TAGS","MIN_FONT_SIZE","MAX_FONT_SIZE","TagCloudEdit","attributes","setAttributes","taxonomies","taxonomy","showTagCounts","numberOfTags","smallestFontSize","largestFontSize","availableUnits","useSettings","units","useCustomUnits","getTaxonomyOptions","selectOption","label","__","value","disabled","taxonomyOptions","filter","tax","show_cloud","map","item","slug","name","onFontSizeChange","fontSizeLabel","newValue","quantity","newUnit","parseQuantityAndUnitFromRawValue","Number","isFinite","updateObj","Object","entries","forEach","attribute","currentValue","currentQuantity","currentUnit","inspectorControls","_react","createElement","InspectorControls","PanelBody","title","SelectControl","__nextHasNoMarginBottom","options","onChange","selectedTaxonomy","ToggleControl","checked","RangeControl","__next40pxDefaultSize","min","max","required","Flex","FlexItem","isBlock","__experimentalUnitControl","Fragment","useBlockProps","Disabled","default","skipBlockSupportAttributes","block","_default","withSelect","select","coreStore","getTaxonomies","per_page","exports"],"sources":["@wordpress/block-library/src/tag-cloud/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tFlexItem,\n\tPanelBody,\n\tToggleControl,\n\tSelectControl,\n\tRangeControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\tDisabled,\n} from '@wordpress/components';\nimport { withSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSettings,\n} from '@wordpress/block-editor';\nimport ServerSideRender from '@wordpress/server-side-render';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Minimum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MIN_TAGS = 1;\n\n/**\n * Maximum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MAX_TAGS = 100;\n\nconst MIN_FONT_SIZE = 0.1;\nconst MAX_FONT_SIZE = 100;\n\nfunction TagCloudEdit( { attributes, setAttributes, taxonomies } ) {\n\tconst {\n\t\ttaxonomy,\n\t\tshowTagCounts,\n\t\tnumberOfTags,\n\t\tsmallestFontSize,\n\t\tlargestFontSize,\n\t} = attributes;\n\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [ '%', 'px', 'em', 'rem' ],\n\t} );\n\n\tconst getTaxonomyOptions = () => {\n\t\tconst selectOption = {\n\t\t\tlabel: __( '- Select -' ),\n\t\t\tvalue: '',\n\t\t\tdisabled: true,\n\t\t};\n\t\tconst taxonomyOptions = ( taxonomies ?? [] )\n\t\t\t.filter( ( tax ) => !! tax.show_cloud )\n\t\t\t.map( ( item ) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: item.slug,\n\t\t\t\t\tlabel: item.name,\n\t\t\t\t};\n\t\t\t} );\n\n\t\treturn [ selectOption, ...taxonomyOptions ];\n\t};\n\n\tconst onFontSizeChange = ( fontSizeLabel, newValue ) => {\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst [ quantity, newUnit ] =\n\t\t\tparseQuantityAndUnitFromRawValue( newValue );\n\t\tif ( ! Number.isFinite( quantity ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst updateObj = { [ fontSizeLabel ]: newValue };\n\t\t// We need to keep in sync the `unit` changes to both `smallestFontSize`\n\t\t// and `largestFontSize` attributes.\n\t\tObject.entries( {\n\t\t\tsmallestFontSize,\n\t\t\tlargestFontSize,\n\t\t} ).forEach( ( [ attribute, currentValue ] ) => {\n\t\t\tconst [ currentQuantity, currentUnit ] =\n\t\t\t\tparseQuantityAndUnitFromRawValue( currentValue );\n\t\t\t// Only add an update if the other font size attribute has a different unit.\n\t\t\tif ( attribute !== fontSizeLabel && currentUnit !== newUnit ) {\n\t\t\t\tupdateObj[ attribute ] = `${ currentQuantity }${ newUnit }`;\n\t\t\t}\n\t\t} );\n\t\tsetAttributes( updateObj );\n\t};\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Taxonomy' ) }\n\t\t\t\t\toptions={ getTaxonomyOptions() }\n\t\t\t\t\tvalue={ taxonomy }\n\t\t\t\t\tonChange={ ( selectedTaxonomy ) =>\n\t\t\t\t\t\tsetAttributes( { taxonomy: selectedTaxonomy } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Show post counts' ) }\n\t\t\t\t\tchecked={ showTagCounts }\n\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\tsetAttributes( { showTagCounts: ! showTagCounts } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<RangeControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Number of tags' ) }\n\t\t\t\t\tvalue={ numberOfTags }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { numberOfTags: value } )\n\t\t\t\t\t}\n\t\t\t\t\tmin={ MIN_TAGS }\n\t\t\t\t\tmax={ MAX_TAGS }\n\t\t\t\t\trequired\n\t\t\t\t/>\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Smallest size' ) }\n\t\t\t\t\t\t\tvalue={ smallestFontSize }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonFontSizeChange( 'smallestFontSize', value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Largest size' ) }\n\t\t\t\t\t\t\tvalue={ largestFontSize }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonFontSizeChange( 'largestFontSize', value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ inspectorControls }\n\t\t\t<div { ...useBlockProps() }>\n\t\t\t\t<Disabled>\n\t\t\t\t\t<ServerSideRender\n\t\t\t\t\t\tskipBlockSupportAttributes\n\t\t\t\t\t\tblock=\"core/tag-cloud\"\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t</Disabled>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default withSelect( ( select ) => {\n\treturn {\n\t\ttaxonomies: select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t};\n} )( TagCloudEdit );\n"],"mappings":"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"}
1
+ {"version":3,"names":["_components","require","_data","_i18n","_blockEditor","_serverSideRender","_interopRequireDefault","_coreData","MIN_TAGS","MAX_TAGS","MIN_FONT_SIZE","MAX_FONT_SIZE","TagCloudEdit","attributes","setAttributes","taxonomy","showTagCounts","numberOfTags","smallestFontSize","largestFontSize","availableUnits","useSettings","units","useCustomUnits","taxonomies","useSelect","select","coreStore","getTaxonomies","per_page","getTaxonomyOptions","selectOption","label","__","value","disabled","taxonomyOptions","filter","tax","show_cloud","map","item","slug","name","onFontSizeChange","fontSizeLabel","newValue","quantity","newUnit","parseQuantityAndUnitFromRawValue","Number","isFinite","updateObj","Object","entries","forEach","attribute","currentValue","currentQuantity","currentUnit","inspectorControls","_react","createElement","InspectorControls","PanelBody","title","SelectControl","__nextHasNoMarginBottom","options","onChange","selectedTaxonomy","ToggleControl","checked","RangeControl","__next40pxDefaultSize","min","max","required","Flex","FlexItem","isBlock","__experimentalUnitControl","Fragment","useBlockProps","Disabled","default","skipBlockSupportAttributes","block","_default","exports"],"sources":["@wordpress/block-library/src/tag-cloud/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tFlex,\n\tFlexItem,\n\tPanelBody,\n\tToggleControl,\n\tSelectControl,\n\tRangeControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\tDisabled,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSettings,\n} from '@wordpress/block-editor';\nimport ServerSideRender from '@wordpress/server-side-render';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Minimum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MIN_TAGS = 1;\n\n/**\n * Maximum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MAX_TAGS = 100;\n\nconst MIN_FONT_SIZE = 0.1;\nconst MAX_FONT_SIZE = 100;\n\nfunction TagCloudEdit( { attributes, setAttributes } ) {\n\tconst {\n\t\ttaxonomy,\n\t\tshowTagCounts,\n\t\tnumberOfTags,\n\t\tsmallestFontSize,\n\t\tlargestFontSize,\n\t} = attributes;\n\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits || [ '%', 'px', 'em', 'rem' ],\n\t} );\n\tconst taxonomies = useSelect(\n\t\t( select ) => select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t[]\n\t);\n\n\tconst getTaxonomyOptions = () => {\n\t\tconst selectOption = {\n\t\t\tlabel: __( '- Select -' ),\n\t\t\tvalue: '',\n\t\t\tdisabled: true,\n\t\t};\n\t\tconst taxonomyOptions = ( taxonomies ?? [] )\n\t\t\t.filter( ( tax ) => !! tax.show_cloud )\n\t\t\t.map( ( item ) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: item.slug,\n\t\t\t\t\tlabel: item.name,\n\t\t\t\t};\n\t\t\t} );\n\n\t\treturn [ selectOption, ...taxonomyOptions ];\n\t};\n\n\tconst onFontSizeChange = ( fontSizeLabel, newValue ) => {\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst [ quantity, newUnit ] =\n\t\t\tparseQuantityAndUnitFromRawValue( newValue );\n\t\tif ( ! Number.isFinite( quantity ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst updateObj = { [ fontSizeLabel ]: newValue };\n\t\t// We need to keep in sync the `unit` changes to both `smallestFontSize`\n\t\t// and `largestFontSize` attributes.\n\t\tObject.entries( {\n\t\t\tsmallestFontSize,\n\t\t\tlargestFontSize,\n\t\t} ).forEach( ( [ attribute, currentValue ] ) => {\n\t\t\tconst [ currentQuantity, currentUnit ] =\n\t\t\t\tparseQuantityAndUnitFromRawValue( currentValue );\n\t\t\t// Only add an update if the other font size attribute has a different unit.\n\t\t\tif ( attribute !== fontSizeLabel && currentUnit !== newUnit ) {\n\t\t\t\tupdateObj[ attribute ] = `${ currentQuantity }${ newUnit }`;\n\t\t\t}\n\t\t} );\n\t\tsetAttributes( updateObj );\n\t};\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<SelectControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Taxonomy' ) }\n\t\t\t\t\toptions={ getTaxonomyOptions() }\n\t\t\t\t\tvalue={ taxonomy }\n\t\t\t\t\tonChange={ ( selectedTaxonomy ) =>\n\t\t\t\t\t\tsetAttributes( { taxonomy: selectedTaxonomy } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Show post counts' ) }\n\t\t\t\t\tchecked={ showTagCounts }\n\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\tsetAttributes( { showTagCounts: ! showTagCounts } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<RangeControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Number of tags' ) }\n\t\t\t\t\tvalue={ numberOfTags }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { numberOfTags: value } )\n\t\t\t\t\t}\n\t\t\t\t\tmin={ MIN_TAGS }\n\t\t\t\t\tmax={ MAX_TAGS }\n\t\t\t\t\trequired\n\t\t\t\t/>\n\t\t\t\t<Flex>\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Smallest size' ) }\n\t\t\t\t\t\t\tvalue={ smallestFontSize }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonFontSizeChange( 'smallestFontSize', value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tlabel={ __( 'Largest size' ) }\n\t\t\t\t\t\t\tvalue={ largestFontSize }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonFontSizeChange( 'largestFontSize', value );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ inspectorControls }\n\t\t\t<div { ...useBlockProps() }>\n\t\t\t\t<Disabled>\n\t\t\t\t\t<ServerSideRender\n\t\t\t\t\t\tskipBlockSupportAttributes\n\t\t\t\t\t\tblock=\"core/tag-cloud\"\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t</Disabled>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport default TagCloudEdit;\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TOOLSPANEL_DROPDOWNMENU_PROPS = void 0;
7
+ // The following dropdown menu props aim to provide a consistent offset and
8
+ // placement for ToolsPanel menus for block controls to match color popovers.
9
+ const TOOLSPANEL_DROPDOWNMENU_PROPS = {
10
+ popoverProps: {
11
+ placement: 'left-start',
12
+ offset: 259 // Inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)
13
+ }
14
+ };
15
+ exports.TOOLSPANEL_DROPDOWNMENU_PROPS = TOOLSPANEL_DROPDOWNMENU_PROPS;
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TOOLSPANEL_DROPDOWNMENU_PROPS","popoverProps","placement","offset","exports"],"sources":["@wordpress/block-library/src/utils/constants.js"],"sourcesContent":["// The following dropdown menu props aim to provide a consistent offset and\n// placement for ToolsPanel menus for block controls to match color popovers.\nexport const TOOLSPANEL_DROPDOWNMENU_PROPS = {\n\tpopoverProps: {\n\t\tplacement: 'left-start',\n\t\toffset: 259, // Inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)\n\t},\n};\n"],"mappings":";;;;;;AAAA;AACA;AACO,MAAMA,6BAA6B,GAAG;EAC5CC,YAAY,EAAE;IACbC,SAAS,EAAE,YAAY;IACvBC,MAAM,EAAE,GAAG,CAAE;EACd;AACD,CAAC;AAACC,OAAA,CAAAJ,6BAAA,GAAAA,6BAAA"}
@@ -46,7 +46,7 @@ const placeholder = content => {
46
46
  const ALLOWED_MEDIA_TYPES = ['video'];
47
47
  const VIDEO_POSTER_ALLOWED_MEDIA_TYPES = ['image'];
48
48
  function VideoEdit({
49
- isSelected,
49
+ isSelected: isSingleSelected,
50
50
  attributes,
51
51
  className,
52
52
  setAttributes,
@@ -64,12 +64,14 @@ function VideoEdit({
64
64
  tracks
65
65
  } = attributes;
66
66
  const isTemporaryVideo = !id && (0, _blob.isBlobURL)(src);
67
- const mediaUpload = (0, _data.useSelect)(select => select(_blockEditor.store).getSettings().mediaUpload, []);
67
+ const {
68
+ getSettings
69
+ } = (0, _data.useSelect)(_blockEditor.store);
68
70
  (0, _element.useEffect)(() => {
69
71
  if (!id && (0, _blob.isBlobURL)(src)) {
70
72
  const file = (0, _blob.getBlobByURL)(src);
71
73
  if (file) {
72
- mediaUpload({
74
+ getSettings().mediaUpload({
73
75
  filesList: [file],
74
76
  onFileChange: ([media]) => onSelectVideo(media),
75
77
  onError: onUploadError,
@@ -170,7 +172,7 @@ function VideoEdit({
170
172
  posterImageButton.current.focus();
171
173
  }
172
174
  const videoPosterDescription = `video-block__poster-image-description-${instanceId}`;
173
- return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_blockEditor.BlockControls, null, (0, _react.createElement)(_tracksEditor.default, {
175
+ return (0, _react.createElement)(_react.Fragment, null, isSingleSelected && (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_blockEditor.BlockControls, null, (0, _react.createElement)(_tracksEditor.default, {
174
176
  tracks: tracks,
175
177
  onChange: newTracks => {
176
178
  setAttributes({
@@ -187,7 +189,7 @@ function VideoEdit({
187
189
  onSelect: onSelectVideo,
188
190
  onSelectURL: onSelectURL,
189
191
  onError: onUploadError
190
- })), (0, _react.createElement)(_blockEditor.InspectorControls, null, (0, _react.createElement)(_components.PanelBody, {
192
+ }))), (0, _react.createElement)(_blockEditor.InspectorControls, null, (0, _react.createElement)(_components.PanelBody, {
191
193
  title: (0, _i18n.__)('Settings')
192
194
  }, (0, _react.createElement)(_editCommonSettings.default, {
193
195
  setAttributes: setAttributes,
@@ -216,7 +218,7 @@ function VideoEdit({
216
218
  }, (0, _i18n.__)('Remove')))))), (0, _react.createElement)("figure", {
217
219
  ...blockProps
218
220
  }, (0, _react.createElement)(_components.Disabled, {
219
- isDisabled: !isSelected
221
+ isDisabled: !isSingleSelected
220
222
  }, (0, _react.createElement)("video", {
221
223
  controls: controls,
222
224
  poster: poster,
@@ -227,9 +229,10 @@ function VideoEdit({
227
229
  }))), isTemporaryVideo && (0, _react.createElement)(_components.Spinner, null), (0, _react.createElement)(_caption.Caption, {
228
230
  attributes: attributes,
229
231
  setAttributes: setAttributes,
230
- isSelected: isSelected,
232
+ isSelected: isSingleSelected,
231
233
  insertBlocksAfter: insertBlocksAfter,
232
- label: (0, _i18n.__)('Video caption text')
234
+ label: (0, _i18n.__)('Video caption text'),
235
+ showToolbarButton: isSingleSelected
233
236
  })));
234
237
  }
235
238
  var _default = VideoEdit;
@@ -1 +1 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_blob","_components","_blockEditor","_element","_i18n","_compose","_data","_icons","_notices","_util","_editCommonSettings","_tracksEditor","_tracks","_caption","placeholder","content","_react","createElement","Placeholder","className","withIllustration","icon","label","__","instructions","ALLOWED_MEDIA_TYPES","VIDEO_POSTER_ALLOWED_MEDIA_TYPES","VideoEdit","isSelected","attributes","setAttributes","insertBlocksAfter","onReplace","instanceId","useInstanceId","videoPlayer","useRef","posterImageButton","id","controls","poster","src","tracks","isTemporaryVideo","isBlobURL","mediaUpload","useSelect","select","blockEditorStore","getSettings","useEffect","file","getBlobByURL","filesList","onFileChange","media","onSelectVideo","onError","onUploadError","allowedTypes","current","load","url","undefined","caption","image","onSelectURL","newSrc","embedBlock","createUpgradedEmbedBlock","createErrorNotice","useDispatch","noticesStore","message","type","classes","classnames","blockProps","useBlockProps","MediaPlaceholder","BlockIcon","onSelect","accept","value","onSelectPoster","onRemovePoster","focus","videoPosterDescription","Fragment","BlockControls","default","onChange","newTracks","group","MediaReplaceFlow","mediaId","mediaURL","InspectorControls","PanelBody","title","MediaUploadCheck","BaseControl","VisualLabel","MediaUpload","render","open","Button","variant","onClick","ref","hidden","sprintf","Disabled","isDisabled","Spinner","Caption","_default","exports"],"sources":["@wordpress/block-library/src/video/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL } from '@wordpress/blob';\nimport {\n\tBaseControl,\n\tButton,\n\tDisabled,\n\tPanelBody,\n\tSpinner,\n\tPlaceholder,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadCheck,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { video as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport VideoCommonSettings from './edit-common-settings';\nimport TracksEditor from './tracks-editor';\nimport Tracks from './tracks';\nimport { Caption } from '../utils/caption';\n\n// Much of this description is duplicated from MediaPlaceholder.\nconst placeholder = ( content ) => {\n\treturn (\n\t\t<Placeholder\n\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\twithIllustration={ true }\n\t\t\ticon={ icon }\n\t\t\tlabel={ __( 'Video' ) }\n\t\t\tinstructions={ __(\n\t\t\t\t'Upload a video file, pick one from your media library, or add one with a URL.'\n\t\t\t) }\n\t\t>\n\t\t\t{ content }\n\t\t</Placeholder>\n\t);\n};\n\nconst ALLOWED_MEDIA_TYPES = [ 'video' ];\nconst VIDEO_POSTER_ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nfunction VideoEdit( {\n\tisSelected,\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tonReplace,\n} ) {\n\tconst instanceId = useInstanceId( VideoEdit );\n\tconst videoPlayer = useRef();\n\tconst posterImageButton = useRef();\n\tconst { id, controls, poster, src, tracks } = attributes;\n\tconst isTemporaryVideo = ! id && isBlobURL( src );\n\tconst mediaUpload = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().mediaUpload,\n\t\t[]\n\t);\n\n\tuseEffect( () => {\n\t\tif ( ! id && isBlobURL( src ) ) {\n\t\t\tconst file = getBlobByURL( src );\n\t\t\tif ( file ) {\n\t\t\t\tmediaUpload( {\n\t\t\t\t\tfilesList: [ file ],\n\t\t\t\t\tonFileChange: ( [ media ] ) => onSelectVideo( media ),\n\t\t\t\t\tonError: onUploadError,\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\t// Placeholder may be rendered.\n\t\tif ( videoPlayer.current ) {\n\t\t\tvideoPlayer.current.load();\n\t\t}\n\t}, [ poster ] );\n\n\tfunction onSelectVideo( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error\n\t\t\t// previous attributes should be removed\n\t\t\t// because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tsrc: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tposter: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media.\n\t\tsetAttributes( {\n\t\t\tsrc: media.url,\n\t\t\tid: media.id,\n\t\t\tposter:\n\t\t\t\tmedia.image?.src !== media.icon ? media.image?.src : undefined,\n\t\t\tcaption: media.caption,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\tif ( newSrc !== src ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url: newSrc },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock && onReplace ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( { src: newSrc, id: undefined, poster: undefined } );\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': isTemporaryVideo,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tfunction onSelectPoster( image ) {\n\t\tsetAttributes( { poster: image.url } );\n\t}\n\n\tfunction onRemovePoster() {\n\t\tsetAttributes( { poster: undefined } );\n\n\t\t// Move focus back to the Media Upload button.\n\t\tposterImageButton.current.focus();\n\t}\n\n\tconst videoPosterDescription = `video-block__poster-image-description-${ instanceId }`;\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<TracksEditor\n\t\t\t\t\ttracks={ tracks }\n\t\t\t\t\tonChange={ ( newTracks ) => {\n\t\t\t\t\t\tsetAttributes( { tracks: newTracks } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<BaseControl className=\"editor-video-poster-control\">\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Poster image' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\ttitle={ __( 'Select poster image' ) }\n\t\t\t\t\t\t\t\tonSelect={ onSelectPoster }\n\t\t\t\t\t\t\t\tallowedTypes={\n\t\t\t\t\t\t\t\t\tVIDEO_POSTER_ALLOWED_MEDIA_TYPES\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\tref={ posterImageButton }\n\t\t\t\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t\t\t\tvideoPosterDescription\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\t\t{ ! poster\n\t\t\t\t\t\t\t\t\t\t\t? __( 'Select' )\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Replace' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p id={ videoPosterDescription } hidden>\n\t\t\t\t\t\t\t\t{ poster\n\t\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: poster image URL. */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'The current poster image url is %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\tposter\n\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\t\t\t'There is no poster image currently selected'\n\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t{ !! poster && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tonClick={ onRemovePoster }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /*\n\t\t\t\t\tDisable the video tag if the block is not selected\n\t\t\t\t\tso the user clicking on it won't play the\n\t\t\t\t\tvideo when the controls are enabled.\n\t\t\t\t*/ }\n\t\t\t\t<Disabled isDisabled={ ! isSelected }>\n\t\t\t\t\t<video\n\t\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\t\tposter={ poster }\n\t\t\t\t\t\tsrc={ src }\n\t\t\t\t\t\tref={ videoPlayer }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t\t</video>\n\t\t\t\t</Disabled>\n\t\t\t\t{ isTemporaryVideo && <Spinner /> }\n\t\t\t\t<Caption\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tlabel={ __( 'Video caption text' ) }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n\nexport default VideoEdit;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_blob","_components","_blockEditor","_element","_i18n","_compose","_data","_icons","_notices","_util","_editCommonSettings","_tracksEditor","_tracks","_caption","placeholder","content","_react","createElement","Placeholder","className","withIllustration","icon","label","__","instructions","ALLOWED_MEDIA_TYPES","VIDEO_POSTER_ALLOWED_MEDIA_TYPES","VideoEdit","isSelected","isSingleSelected","attributes","setAttributes","insertBlocksAfter","onReplace","instanceId","useInstanceId","videoPlayer","useRef","posterImageButton","id","controls","poster","src","tracks","isTemporaryVideo","isBlobURL","getSettings","useSelect","blockEditorStore","useEffect","file","getBlobByURL","mediaUpload","filesList","onFileChange","media","onSelectVideo","onError","onUploadError","allowedTypes","current","load","url","undefined","caption","image","onSelectURL","newSrc","embedBlock","createUpgradedEmbedBlock","createErrorNotice","useDispatch","noticesStore","message","type","classes","classnames","blockProps","useBlockProps","MediaPlaceholder","BlockIcon","onSelect","accept","value","onSelectPoster","onRemovePoster","focus","videoPosterDescription","Fragment","BlockControls","default","onChange","newTracks","group","MediaReplaceFlow","mediaId","mediaURL","InspectorControls","PanelBody","title","MediaUploadCheck","BaseControl","VisualLabel","MediaUpload","render","open","Button","variant","onClick","ref","hidden","sprintf","Disabled","isDisabled","Spinner","Caption","showToolbarButton","_default","exports"],"sources":["@wordpress/block-library/src/video/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL } from '@wordpress/blob';\nimport {\n\tBaseControl,\n\tButton,\n\tDisabled,\n\tPanelBody,\n\tSpinner,\n\tPlaceholder,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadCheck,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { video as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport VideoCommonSettings from './edit-common-settings';\nimport TracksEditor from './tracks-editor';\nimport Tracks from './tracks';\nimport { Caption } from '../utils/caption';\n\n// Much of this description is duplicated from MediaPlaceholder.\nconst placeholder = ( content ) => {\n\treturn (\n\t\t<Placeholder\n\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\twithIllustration={ true }\n\t\t\ticon={ icon }\n\t\t\tlabel={ __( 'Video' ) }\n\t\t\tinstructions={ __(\n\t\t\t\t'Upload a video file, pick one from your media library, or add one with a URL.'\n\t\t\t) }\n\t\t>\n\t\t\t{ content }\n\t\t</Placeholder>\n\t);\n};\n\nconst ALLOWED_MEDIA_TYPES = [ 'video' ];\nconst VIDEO_POSTER_ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nfunction VideoEdit( {\n\tisSelected: isSingleSelected,\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tinsertBlocksAfter,\n\tonReplace,\n} ) {\n\tconst instanceId = useInstanceId( VideoEdit );\n\tconst videoPlayer = useRef();\n\tconst posterImageButton = useRef();\n\tconst { id, controls, poster, src, tracks } = attributes;\n\tconst isTemporaryVideo = ! id && isBlobURL( src );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( ! id && isBlobURL( src ) ) {\n\t\t\tconst file = getBlobByURL( src );\n\t\t\tif ( file ) {\n\t\t\t\tgetSettings().mediaUpload( {\n\t\t\t\t\tfilesList: [ file ],\n\t\t\t\t\tonFileChange: ( [ media ] ) => onSelectVideo( media ),\n\t\t\t\t\tonError: onUploadError,\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\t// Placeholder may be rendered.\n\t\tif ( videoPlayer.current ) {\n\t\t\tvideoPlayer.current.load();\n\t\t}\n\t}, [ poster ] );\n\n\tfunction onSelectVideo( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error\n\t\t\t// previous attributes should be removed\n\t\t\t// because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tsrc: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tposter: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media.\n\t\tsetAttributes( {\n\t\t\tsrc: media.url,\n\t\t\tid: media.id,\n\t\t\tposter:\n\t\t\t\tmedia.image?.src !== media.icon ? media.image?.src : undefined,\n\t\t\tcaption: media.caption,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\tif ( newSrc !== src ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url: newSrc },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock && onReplace ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( { src: newSrc, id: undefined, poster: undefined } );\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': isTemporaryVideo,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tfunction onSelectPoster( image ) {\n\t\tsetAttributes( { poster: image.url } );\n\t}\n\n\tfunction onRemovePoster() {\n\t\tsetAttributes( { poster: undefined } );\n\n\t\t// Move focus back to the Media Upload button.\n\t\tposterImageButton.current.focus();\n\t}\n\n\tconst videoPosterDescription = `video-block__poster-image-description-${ instanceId }`;\n\n\treturn (\n\t\t<>\n\t\t\t{ isSingleSelected && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls>\n\t\t\t\t\t\t<TracksEditor\n\t\t\t\t\t\t\ttracks={ tracks }\n\t\t\t\t\t\t\tonChange={ ( newTracks ) => {\n\t\t\t\t\t\t\t\tsetAttributes( { tracks: newTracks } );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\taccept=\"video/*\"\n\t\t\t\t\t\t\tonSelect={ onSelectVideo }\n\t\t\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t/>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<BaseControl className=\"editor-video-poster-control\">\n\t\t\t\t\t\t\t<BaseControl.VisualLabel>\n\t\t\t\t\t\t\t\t{ __( 'Poster image' ) }\n\t\t\t\t\t\t\t</BaseControl.VisualLabel>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\ttitle={ __( 'Select poster image' ) }\n\t\t\t\t\t\t\t\tonSelect={ onSelectPoster }\n\t\t\t\t\t\t\t\tallowedTypes={\n\t\t\t\t\t\t\t\t\tVIDEO_POSTER_ALLOWED_MEDIA_TYPES\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\tref={ posterImageButton }\n\t\t\t\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t\t\t\tvideoPosterDescription\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\t\t{ ! poster\n\t\t\t\t\t\t\t\t\t\t\t? __( 'Select' )\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Replace' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p id={ videoPosterDescription } hidden>\n\t\t\t\t\t\t\t\t{ poster\n\t\t\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t\t\t/* translators: %s: poster image URL. */\n\t\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t\t'The current poster image url is %s'\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\tposter\n\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\t\t\t'There is no poster image currently selected'\n\t\t\t\t\t\t\t\t\t ) }\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t{ !! poster && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tonClick={ onRemovePoster }\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</BaseControl>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /*\n\t\t\t\t\tDisable the video tag if the block is not selected\n\t\t\t\t\tso the user clicking on it won't play the\n\t\t\t\t\tvideo when the controls are enabled.\n\t\t\t\t*/ }\n\t\t\t\t<Disabled isDisabled={ ! isSingleSelected }>\n\t\t\t\t\t<video\n\t\t\t\t\t\tcontrols={ controls }\n\t\t\t\t\t\tposter={ poster }\n\t\t\t\t\t\tsrc={ src }\n\t\t\t\t\t\tref={ videoPlayer }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tracks tracks={ tracks } />\n\t\t\t\t\t</video>\n\t\t\t\t</Disabled>\n\t\t\t\t{ isTemporaryVideo && <Spinner /> }\n\t\t\t\t<Caption\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSingleSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tlabel={ __( 'Video caption text' ) }\n\t\t\t\t\tshowToolbarButton={ isSingleSelected }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n\nexport default VideoEdit;\n"],"mappings":"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"}
@@ -27,7 +27,7 @@ function AudioEdit({
27
27
  className,
28
28
  setAttributes,
29
29
  onReplace,
30
- isSelected,
30
+ isSelected: isSingleSelected,
31
31
  insertBlocksAfter
32
32
  }) {
33
33
  const {
@@ -38,17 +38,14 @@ function AudioEdit({
38
38
  src
39
39
  } = attributes;
40
40
  const isTemporaryAudio = !id && isBlobURL(src);
41
- const mediaUpload = useSelect(select => {
42
- const {
43
- getSettings
44
- } = select(blockEditorStore);
45
- return getSettings().mediaUpload;
46
- }, []);
41
+ const {
42
+ getSettings
43
+ } = useSelect(blockEditorStore);
47
44
  useEffect(() => {
48
45
  if (!id && isBlobURL(src)) {
49
46
  const file = getBlobByURL(src);
50
47
  if (file) {
51
- mediaUpload({
48
+ getSettings().mediaUpload({
52
49
  filesList: [file],
53
50
  onFileChange: ([media]) => onSelectAudio(media),
54
51
  onError: e => onUploadError(e),
@@ -135,7 +132,7 @@ function AudioEdit({
135
132
  onError: onUploadError
136
133
  }));
137
134
  }
138
- return createElement(Fragment, null, createElement(BlockControls, {
135
+ return createElement(Fragment, null, isSingleSelected && createElement(BlockControls, {
139
136
  group: "other"
140
137
  }, createElement(MediaReplaceFlow, {
141
138
  mediaId: id,
@@ -183,16 +180,17 @@ function AudioEdit({
183
180
  }))), createElement("figure", {
184
181
  ...blockProps
185
182
  }, createElement(Disabled, {
186
- isDisabled: !isSelected
183
+ isDisabled: !isSingleSelected
187
184
  }, createElement("audio", {
188
185
  controls: "controls",
189
186
  src: src
190
187
  })), isTemporaryAudio && createElement(Spinner, null), createElement(Caption, {
191
188
  attributes: attributes,
192
189
  setAttributes: setAttributes,
193
- isSelected: isSelected,
190
+ isSelected: isSingleSelected,
194
191
  insertBlocksAfter: insertBlocksAfter,
195
- label: __('Audio caption text')
192
+ label: __('Audio caption text'),
193
+ showToolbarButton: isSingleSelected
196
194
  })));
197
195
  }
198
196
  export default AudioEdit;
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","getBlobByURL","isBlobURL","Disabled","PanelBody","SelectControl","Spinner","ToggleControl","BlockControls","BlockIcon","InspectorControls","MediaPlaceholder","MediaReplaceFlow","useBlockProps","store","blockEditorStore","useEffect","__","_x","useDispatch","useSelect","audio","icon","noticesStore","createUpgradedEmbedBlock","Caption","ALLOWED_MEDIA_TYPES","AudioEdit","attributes","className","setAttributes","onReplace","isSelected","insertBlocksAfter","id","autoplay","loop","preload","src","isTemporaryAudio","mediaUpload","select","getSettings","file","filesList","onFileChange","media","onSelectAudio","onError","e","onUploadError","allowedTypes","toggleAttribute","attribute","newValue","onSelectURL","newSrc","embedBlock","url","undefined","createErrorNotice","message","type","getAutoplayHelp","checked","caption","classes","blockProps","createElement","onSelect","accept","value","Fragment","group","mediaId","mediaURL","title","__nextHasNoMarginBottom","label","onChange","help","options","isDisabled","controls"],"sources":["@wordpress/block-library/src/audio/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL } from '@wordpress/blob';\nimport {\n\tDisabled,\n\tPanelBody,\n\tSelectControl,\n\tSpinner,\n\tToggleControl,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\nimport { __, _x } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { audio as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport { Caption } from '../utils/caption';\n\nconst ALLOWED_MEDIA_TYPES = [ 'audio' ];\n\nfunction AudioEdit( {\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tonReplace,\n\tisSelected,\n\tinsertBlocksAfter,\n} ) {\n\tconst { id, autoplay, loop, preload, src } = attributes;\n\tconst isTemporaryAudio = ! id && isBlobURL( src );\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().mediaUpload;\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( ! id && isBlobURL( src ) ) {\n\t\t\tconst file = getBlobByURL( src );\n\n\t\t\tif ( file ) {\n\t\t\t\tmediaUpload( {\n\t\t\t\t\tfilesList: [ file ],\n\t\t\t\t\tonFileChange: ( [ media ] ) => onSelectAudio( media ),\n\t\t\t\t\tonError: ( e ) => onUploadError( e ),\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [] );\n\n\tfunction toggleAttribute( attribute ) {\n\t\treturn ( newValue ) => {\n\t\t\tsetAttributes( { [ attribute ]: newValue } );\n\t\t};\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\t// Set the block's src from the edit component's state, and switch off\n\t\t// the editing UI.\n\t\tif ( newSrc !== src ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url: newSrc },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock && onReplace ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( { src: newSrc, id: undefined } );\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction getAutoplayHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Autoplay may cause usability issues for some users.' )\n\t\t\t: null;\n\t}\n\n\tfunction onSelectAudio( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error and we should continue in the editing state\n\t\t\t// previous attributes should be removed because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tsrc: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media, then switches off the editing UI.\n\t\tsetAttributes( {\n\t\t\tsrc: media.url,\n\t\t\tid: media.id,\n\t\t\tcaption: media.caption,\n\t\t} );\n\t}\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': isTemporaryAudio,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectAudio }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\tonSelect={ onSelectAudio }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Autoplay' ) }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'autoplay' ) }\n\t\t\t\t\t\tchecked={ autoplay }\n\t\t\t\t\t\thelp={ getAutoplayHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Loop' ) }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'loop' ) }\n\t\t\t\t\t\tchecked={ loop }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ _x( 'Preload', 'noun; Audio block parameter' ) }\n\t\t\t\t\t\tvalue={ preload || '' }\n\t\t\t\t\t\t// `undefined` is required for the preload attribute to be unset.\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tpreload: value || undefined,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ value: '', label: __( 'Browser default' ) },\n\t\t\t\t\t\t\t{ value: 'auto', label: __( 'Auto' ) },\n\t\t\t\t\t\t\t{ value: 'metadata', label: __( 'Metadata' ) },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: 'none',\n\t\t\t\t\t\t\t\tlabel: _x( 'None', 'Preload value' ),\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</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /*\n\t\t\t\t\tDisable the audio tag if the block is not selected\n\t\t\t\t\tso the user clicking on it won't play the\n\t\t\t\t\tfile or change the position slider when the controls are enabled.\n\t\t\t\t*/ }\n\t\t\t\t<Disabled isDisabled={ ! isSelected }>\n\t\t\t\t\t<audio controls=\"controls\" src={ src } />\n\t\t\t\t</Disabled>\n\t\t\t\t{ isTemporaryAudio && <Spinner /> }\n\t\t\t\t<Caption\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tlabel={ __( 'Audio caption text' ) }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n\nexport default AudioEdit;\n"],"mappings":"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"}
1
+ {"version":3,"names":["classnames","getBlobByURL","isBlobURL","Disabled","PanelBody","SelectControl","Spinner","ToggleControl","BlockControls","BlockIcon","InspectorControls","MediaPlaceholder","MediaReplaceFlow","useBlockProps","store","blockEditorStore","useEffect","__","_x","useDispatch","useSelect","audio","icon","noticesStore","createUpgradedEmbedBlock","Caption","ALLOWED_MEDIA_TYPES","AudioEdit","attributes","className","setAttributes","onReplace","isSelected","isSingleSelected","insertBlocksAfter","id","autoplay","loop","preload","src","isTemporaryAudio","getSettings","file","mediaUpload","filesList","onFileChange","media","onSelectAudio","onError","e","onUploadError","allowedTypes","toggleAttribute","attribute","newValue","onSelectURL","newSrc","embedBlock","url","undefined","createErrorNotice","message","type","getAutoplayHelp","checked","caption","classes","blockProps","createElement","onSelect","accept","value","Fragment","group","mediaId","mediaURL","title","__nextHasNoMarginBottom","label","onChange","help","options","isDisabled","controls","showToolbarButton"],"sources":["@wordpress/block-library/src/audio/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL } from '@wordpress/blob';\nimport {\n\tDisabled,\n\tPanelBody,\n\tSelectControl,\n\tSpinner,\n\tToggleControl,\n} from '@wordpress/components';\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tMediaPlaceholder,\n\tMediaReplaceFlow,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useEffect } from '@wordpress/element';\nimport { __, _x } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { audio as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport { Caption } from '../utils/caption';\n\nconst ALLOWED_MEDIA_TYPES = [ 'audio' ];\n\nfunction AudioEdit( {\n\tattributes,\n\tclassName,\n\tsetAttributes,\n\tonReplace,\n\tisSelected: isSingleSelected,\n\tinsertBlocksAfter,\n} ) {\n\tconst { id, autoplay, loop, preload, src } = attributes;\n\tconst isTemporaryAudio = ! id && isBlobURL( src );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( ! id && isBlobURL( src ) ) {\n\t\t\tconst file = getBlobByURL( src );\n\n\t\t\tif ( file ) {\n\t\t\t\tgetSettings().mediaUpload( {\n\t\t\t\t\tfilesList: [ file ],\n\t\t\t\t\tonFileChange: ( [ media ] ) => onSelectAudio( media ),\n\t\t\t\t\tonError: ( e ) => onUploadError( e ),\n\t\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}, [] );\n\n\tfunction toggleAttribute( attribute ) {\n\t\treturn ( newValue ) => {\n\t\t\tsetAttributes( { [ attribute ]: newValue } );\n\t\t};\n\t}\n\n\tfunction onSelectURL( newSrc ) {\n\t\t// Set the block's src from the edit component's state, and switch off\n\t\t// the editing UI.\n\t\tif ( newSrc !== src ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url: newSrc },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock && onReplace ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetAttributes( { src: newSrc, id: undefined } );\n\t\t}\n\t}\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t}\n\n\tfunction getAutoplayHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Autoplay may cause usability issues for some users.' )\n\t\t\t: null;\n\t}\n\n\tfunction onSelectAudio( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\t// In this case there was an error and we should continue in the editing state\n\t\t\t// previous attributes should be removed because they may be temporary blob urls.\n\t\t\tsetAttributes( {\n\t\t\t\tsrc: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\t\t\treturn;\n\t\t}\n\t\t// Sets the block's attribute and updates the edit component from the\n\t\t// selected media, then switches off the editing UI.\n\t\tsetAttributes( {\n\t\t\tsrc: media.url,\n\t\t\tid: media.id,\n\t\t\tcaption: media.caption,\n\t\t} );\n\t}\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': isTemporaryAudio,\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classes,\n\t} );\n\n\tif ( ! src ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectAudio }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tvalue={ attributes }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ isSingleSelected && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\tmediaURL={ src }\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\taccept=\"audio/*\"\n\t\t\t\t\t\tonSelect={ onSelectAudio }\n\t\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Autoplay' ) }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'autoplay' ) }\n\t\t\t\t\t\tchecked={ autoplay }\n\t\t\t\t\t\thelp={ getAutoplayHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Loop' ) }\n\t\t\t\t\t\tonChange={ toggleAttribute( 'loop' ) }\n\t\t\t\t\t\tchecked={ loop }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ _x( 'Preload', 'noun; Audio block parameter' ) }\n\t\t\t\t\t\tvalue={ preload || '' }\n\t\t\t\t\t\t// `undefined` is required for the preload attribute to be unset.\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tpreload: value || undefined,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ value: '', label: __( 'Browser default' ) },\n\t\t\t\t\t\t\t{ value: 'auto', label: __( 'Auto' ) },\n\t\t\t\t\t\t\t{ value: 'metadata', label: __( 'Metadata' ) },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: 'none',\n\t\t\t\t\t\t\t\tlabel: _x( 'None', 'Preload value' ),\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</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t<figure { ...blockProps }>\n\t\t\t\t{ /*\n\t\t\t\t\tDisable the audio tag if the block is not selected\n\t\t\t\t\tso the user clicking on it won't play the\n\t\t\t\t\tfile or change the position slider when the controls are enabled.\n\t\t\t\t*/ }\n\t\t\t\t<Disabled isDisabled={ ! isSingleSelected }>\n\t\t\t\t\t<audio controls=\"controls\" src={ src } />\n\t\t\t\t</Disabled>\n\t\t\t\t{ isTemporaryAudio && <Spinner /> }\n\t\t\t\t<Caption\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSingleSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tlabel={ __( 'Audio caption text' ) }\n\t\t\t\t\tshowToolbarButton={ isSingleSelected }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t</>\n\t);\n}\n\nexport default AudioEdit;\n"],"mappings":"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"}
@@ -9,11 +9,11 @@ import classnames from 'classnames';
9
9
  */
10
10
  import { useRegistry, useSelect, useDispatch } from '@wordpress/data';
11
11
  import { useRef, useMemo, useEffect } from '@wordpress/element';
12
- import { useEntityProp, useEntityRecord } from '@wordpress/core-data';
13
- import { Placeholder, Spinner, TextControl, PanelBody } from '@wordpress/components';
12
+ import { useEntityRecord, store as coreStore } from '@wordpress/core-data';
13
+ import { Placeholder, Spinner, ToolbarButton, ToolbarGroup } from '@wordpress/components';
14
14
  import { __ } from '@wordpress/i18n';
15
- import { useInnerBlocksProps, __experimentalRecursionProvider as RecursionProvider, __experimentalUseHasRecursion as useHasRecursion, InnerBlocks, InspectorControls, useBlockProps, Warning, privateApis as blockEditorPrivateApis, store as blockEditorStore } from '@wordpress/block-editor';
16
- import { getBlockSupport, parse } from '@wordpress/blocks';
15
+ import { useInnerBlocksProps, __experimentalRecursionProvider as RecursionProvider, __experimentalUseHasRecursion as useHasRecursion, InnerBlocks, useBlockProps, Warning, privateApis as blockEditorPrivateApis, store as blockEditorStore, BlockControls } from '@wordpress/block-editor';
16
+ import { parse, cloneBlock } from '@wordpress/blocks';
17
17
 
18
18
  /**
19
19
  * Internal dependencies
@@ -23,10 +23,10 @@ const {
23
23
  useLayoutClasses
24
24
  } = unlock(blockEditorPrivateApis);
25
25
  function isPartiallySynced(block) {
26
- return !!getBlockSupport(block.name, '__experimentalConnections', false) && !!block.attributes.connections?.attributes && Object.values(block.attributes.connections.attributes).some(connection => connection.source === 'pattern_attributes');
26
+ return 'core/paragraph' === block.name && !!block.attributes.metadata?.bindings && Object.values(block.attributes.metadata.bindings).some(binding => binding.source.name === 'pattern_attributes');
27
27
  }
28
28
  function getPartiallySyncedAttributes(block) {
29
- return Object.entries(block.attributes.connections.attributes).filter(([, connection]) => connection.source === 'pattern_attributes').map(([attributeKey]) => attributeKey);
29
+ return Object.entries(block.attributes.metadata.bindings).filter(([, binding]) => binding.source.name === 'pattern_attributes').map(([attributeKey]) => attributeKey);
30
30
  }
31
31
  const fullAlignments = ['full', 'wide', 'left', 'right'];
32
32
  const useInferredLayout = (blocks, parentLayout) => {
@@ -66,9 +66,11 @@ function applyInitialOverrides(blocks, overrides = {}, defaultValues) {
66
66
  ...block.attributes
67
67
  };
68
68
  for (const attributeKey of attributes) {
69
- defaultValues[blockId] = block.attributes[attributeKey];
69
+ var _defaultValues$blockI;
70
+ (_defaultValues$blockI = defaultValues[blockId]) !== null && _defaultValues$blockI !== void 0 ? _defaultValues$blockI : defaultValues[blockId] = {};
71
+ defaultValues[blockId][attributeKey] = block.attributes[attributeKey];
70
72
  if (overrides[blockId]) {
71
- newAttributes[attributeKey] = overrides[blockId];
73
+ newAttributes[attributeKey] = overrides[blockId][attributeKey];
72
74
  }
73
75
  }
74
76
  return {
@@ -79,7 +81,7 @@ function applyInitialOverrides(blocks, overrides = {}, defaultValues) {
79
81
  });
80
82
  }
81
83
  function getOverridesFromBlocks(blocks, defaultValues) {
82
- /** @type {Record<string, unknown>} */
84
+ /** @type {Record<string, Record<string, unknown>>} */
83
85
  const overrides = {};
84
86
  for (const block of blocks) {
85
87
  Object.assign(overrides, getOverridesFromBlocks(block.innerBlocks, defaultValues));
@@ -87,13 +89,22 @@ function getOverridesFromBlocks(blocks, defaultValues) {
87
89
  if (!isPartiallySynced(block) || !blockId) continue;
88
90
  const attributes = getPartiallySyncedAttributes(block);
89
91
  for (const attributeKey of attributes) {
90
- if (block.attributes[attributeKey] !== defaultValues[blockId]) {
91
- overrides[blockId] = block.attributes[attributeKey];
92
+ if (block.attributes[attributeKey] !== defaultValues[blockId][attributeKey]) {
93
+ var _overrides$blockId;
94
+ (_overrides$blockId = overrides[blockId]) !== null && _overrides$blockId !== void 0 ? _overrides$blockId : overrides[blockId] = {};
95
+ overrides[blockId][attributeKey] = block.attributes[attributeKey];
92
96
  }
93
97
  }
94
98
  }
95
99
  return Object.keys(overrides).length > 0 ? overrides : undefined;
96
100
  }
101
+ function setBlockEditMode(setEditMode, blocks, mode) {
102
+ blocks.forEach(block => {
103
+ const editMode = mode || (isPartiallySynced(block) ? 'contentOnly' : 'disabled');
104
+ setEditMode(block.clientId, editMode);
105
+ setBlockEditMode(setEditMode, block.innerBlocks, mode);
106
+ });
107
+ }
97
108
  export default function ReusableBlockEdit({
98
109
  name,
99
110
  attributes: {
@@ -101,12 +112,14 @@ export default function ReusableBlockEdit({
101
112
  overrides
102
113
  },
103
114
  __unstableParentLayout: parentLayout,
104
- clientId: patternClientId
115
+ clientId: patternClientId,
116
+ setAttributes
105
117
  }) {
106
118
  const registry = useRegistry();
107
119
  const hasAlreadyRendered = useHasRecursion(ref);
108
120
  const {
109
121
  record,
122
+ editedRecord,
110
123
  hasResolved
111
124
  } = useEntityRecord('postType', 'wp_block', ref);
112
125
  const isMissing = hasResolved && !record;
@@ -118,21 +131,56 @@ export default function ReusableBlockEdit({
118
131
  setBlockEditingMode
119
132
  } = useDispatch(blockEditorStore);
120
133
  const {
121
- getBlockEditingMode
122
- } = useSelect(blockEditorStore);
134
+ syncDerivedUpdates
135
+ } = unlock(useDispatch(blockEditorStore));
136
+ const {
137
+ innerBlocks,
138
+ userCanEdit,
139
+ getBlockEditingMode,
140
+ getPostLinkProps
141
+ } = useSelect(select => {
142
+ const {
143
+ canUser
144
+ } = select(coreStore);
145
+ const {
146
+ getBlocks,
147
+ getBlockEditingMode: editingMode,
148
+ getSettings
149
+ } = select(blockEditorStore);
150
+ const blocks = getBlocks(patternClientId);
151
+ const canEdit = canUser('update', 'blocks', ref);
152
+
153
+ // For editing link to the site editor if the theme and user permissions support it.
154
+ return {
155
+ innerBlocks: blocks,
156
+ userCanEdit: canEdit,
157
+ getBlockEditingMode: editingMode,
158
+ getPostLinkProps: getSettings().getPostLinkProps
159
+ };
160
+ }, [patternClientId, ref]);
161
+ const editOriginalProps = getPostLinkProps ? getPostLinkProps({
162
+ postId: ref,
163
+ postType: 'wp_block',
164
+ canvas: 'edit'
165
+ }) : {};
166
+ useEffect(() => setBlockEditMode(setBlockEditingMode, innerBlocks), [innerBlocks, setBlockEditingMode]);
167
+
168
+ // Apply the initial overrides from the pattern block to the inner blocks.
123
169
  useEffect(() => {
124
- if (!record?.content?.raw) return;
125
- const initialBlocks = parse(record.content.raw);
170
+ var _editedRecord$blocks$;
171
+ const initialBlocks = // Clone the blocks to generate new client IDs.
172
+ (_editedRecord$blocks$ = editedRecord.blocks?.map(block => cloneBlock(block))) !== null && _editedRecord$blocks$ !== void 0 ? _editedRecord$blocks$ : editedRecord.content && typeof editedRecord.content !== 'function' ? parse(editedRecord.content) : [];
173
+ defaultValuesRef.current = {};
126
174
  const editingMode = getBlockEditingMode(patternClientId);
175
+ // Replace the contents of the blocks with the overrides.
127
176
  registry.batch(() => {
128
177
  setBlockEditingMode(patternClientId, 'default');
129
- __unstableMarkNextChangeAsNotPersistent();
130
- replaceInnerBlocks(patternClientId, applyInitialOverrides(initialBlocks, initialOverrides.current, defaultValuesRef.current));
178
+ syncDerivedUpdates(() => {
179
+ replaceInnerBlocks(patternClientId, applyInitialOverrides(initialBlocks, initialOverrides.current, defaultValuesRef.current));
180
+ });
131
181
  setBlockEditingMode(patternClientId, editingMode);
132
182
  });
133
- }, [__unstableMarkNextChangeAsNotPersistent, patternClientId, record, replaceInnerBlocks, registry, getBlockEditingMode, setBlockEditingMode]);
134
- const innerBlocks = useSelect(select => select(blockEditorStore).getBlocks(patternClientId), [patternClientId]);
135
- const [title, setTitle] = useEntityProp('postType', 'wp_block', 'title', ref);
183
+ }, [__unstableMarkNextChangeAsNotPersistent, patternClientId, editedRecord, replaceInnerBlocks, registry, getBlockEditingMode, setBlockEditingMode, syncDerivedUpdates]);
136
184
  const {
137
185
  alignment,
138
186
  layout
@@ -146,32 +194,34 @@ export default function ReusableBlockEdit({
146
194
  })
147
195
  });
148
196
  const innerBlocksProps = useInnerBlocksProps(blockProps, {
197
+ templateLock: 'all',
149
198
  layout,
150
199
  renderAppender: innerBlocks?.length ? undefined : InnerBlocks.ButtonBlockAppender
151
200
  });
152
201
 
153
- // Sync the `overrides` attribute from the updated blocks.
154
- // `syncDerivedBlockAttributes` is an action that just like `updateBlockAttributes`
155
- // but won't create an undo level.
156
- // This can be abstracted into a `useSyncDerivedAttributes` hook if needed.
202
+ // Sync the `overrides` attribute from the updated blocks to the pattern block.
203
+ // `syncDerivedUpdates` is used here to avoid creating an additional undo level.
157
204
  useEffect(() => {
158
205
  const {
159
206
  getBlocks
160
207
  } = registry.select(blockEditorStore);
161
- const {
162
- syncDerivedBlockAttributes
163
- } = unlock(registry.dispatch(blockEditorStore));
164
208
  let prevBlocks = getBlocks(patternClientId);
165
209
  return registry.subscribe(() => {
166
210
  const blocks = getBlocks(patternClientId);
167
211
  if (blocks !== prevBlocks) {
168
212
  prevBlocks = blocks;
169
- syncDerivedBlockAttributes(patternClientId, {
170
- overrides: getOverridesFromBlocks(blocks, defaultValuesRef.current)
213
+ syncDerivedUpdates(() => {
214
+ setAttributes({
215
+ overrides: getOverridesFromBlocks(blocks, defaultValuesRef.current)
216
+ });
171
217
  });
172
218
  }
173
219
  }, blockEditorStore);
174
- }, [patternClientId, registry]);
220
+ }, [syncDerivedUpdates, patternClientId, registry, setAttributes]);
221
+ const handleEditOriginal = event => {
222
+ setBlockEditMode(setBlockEditingMode, innerBlocks, 'default');
223
+ editOriginalProps.onClick(event);
224
+ };
175
225
  let children = null;
176
226
  if (hasAlreadyRendered) {
177
227
  children = createElement(Warning, null, __('Block cannot be rendered inside itself.'));
@@ -184,13 +234,10 @@ export default function ReusableBlockEdit({
184
234
  }
185
235
  return createElement(RecursionProvider, {
186
236
  uniqueId: ref
187
- }, createElement(InspectorControls, null, createElement(PanelBody, null, createElement(TextControl, {
188
- label: __('Name'),
189
- value: title,
190
- onChange: setTitle,
191
- __nextHasNoMarginBottom: true,
192
- __next40pxDefaultSize: true
193
- }))), children === null ? createElement("div", {
237
+ }, userCanEdit && editOriginalProps && createElement(BlockControls, null, createElement(ToolbarGroup, null, createElement(ToolbarButton, {
238
+ href: editOriginalProps.href,
239
+ onClick: handleEditOriginal
240
+ }, __('Edit original')))), children === null ? createElement("div", {
194
241
  ...innerBlocksProps
195
242
  }) : createElement("div", {
196
243
  ...blockProps