@wordpress/block-library 8.28.5 → 8.30.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 (289) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/audio/edit.js +7 -17
  3. package/build/audio/edit.js.map +1 -1
  4. package/build/audio/edit.native.js.map +1 -1
  5. package/build/avatar/edit.js.map +1 -1
  6. package/build/button/edit.js +1 -1
  7. package/build/button/edit.js.map +1 -1
  8. package/build/buttons/edit.js +1 -6
  9. package/build/buttons/edit.js.map +1 -1
  10. package/build/buttons/edit.native.js +1 -7
  11. package/build/buttons/edit.native.js.map +1 -1
  12. package/build/columns/edit.js +8 -2
  13. package/build/columns/edit.js.map +1 -1
  14. package/build/comment-author-avatar/edit.js +1 -1
  15. package/build/comment-author-avatar/edit.js.map +1 -1
  16. package/build/cover/edit/index.js.map +1 -1
  17. package/build/cover/edit/inspector-controls.js.map +1 -1
  18. package/build/cover/edit/resizable-cover-popover.js +0 -6
  19. package/build/cover/edit/resizable-cover-popover.js.map +1 -1
  20. package/build/cover/edit.native.js.map +1 -1
  21. package/build/details/index.js +1 -0
  22. package/build/details/index.js.map +1 -1
  23. package/build/file/deprecated.js.map +1 -1
  24. package/build/file/edit.js +6 -13
  25. package/build/file/edit.js.map +1 -1
  26. package/build/file/edit.native.js.map +1 -1
  27. package/build/file/save.js.map +1 -1
  28. package/build/form-input/edit.js +1 -1
  29. package/build/form-input/edit.js.map +1 -1
  30. package/build/gallery/edit.js +5 -5
  31. package/build/gallery/edit.js.map +1 -1
  32. package/build/gallery/gallery.native.js.map +1 -1
  33. package/build/gallery/v1/edit.js.map +1 -1
  34. package/build/gallery/v1/gallery.native.js.map +1 -1
  35. package/build/group/variations.js +12 -15
  36. package/build/group/variations.js.map +1 -1
  37. package/build/image/edit.js.map +1 -1
  38. package/build/image/edit.native.js.map +1 -1
  39. package/build/image/image.js.map +1 -1
  40. package/build/latest-posts/edit.native.js.map +1 -1
  41. package/build/list/edit.js +5 -0
  42. package/build/list/edit.js.map +1 -1
  43. package/build/list/ordered-list-settings.js +1 -1
  44. package/build/list/ordered-list-settings.js.map +1 -1
  45. package/build/list-item/edit.native.js.map +1 -1
  46. package/build/list-item/hooks/use-indent-list-item.js +1 -0
  47. package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
  48. package/build/list-item/hooks/use-outdent-list-item.js +1 -0
  49. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  50. package/build/list-item/hooks/use-space.js +16 -7
  51. package/build/list-item/hooks/use-space.js.map +1 -1
  52. package/build/media-text/media-container.native.js +1 -1
  53. package/build/media-text/media-container.native.js.map +1 -1
  54. package/build/navigation/edit/index.js.map +1 -1
  55. package/build/navigation-link/link-ui.js.map +1 -1
  56. package/build/paragraph/edit.native.js.map +1 -1
  57. package/build/pattern/edit.js +23 -9
  58. package/build/pattern/edit.js.map +1 -1
  59. package/build/post-excerpt/edit.js.map +1 -1
  60. package/build/post-featured-image/dimension-controls.js.map +1 -1
  61. package/build/post-featured-image/edit.js.map +1 -1
  62. package/build/post-navigation-link/edit.js.map +1 -1
  63. package/build/query/edit/pattern-selection-modal.js.map +1 -1
  64. package/build/query/utils.js +7 -5
  65. package/build/query/utils.js.map +1 -1
  66. package/build/query-pagination-next/edit.js.map +1 -1
  67. package/build/query-pagination-previous/edit.js.map +1 -1
  68. package/build/quote/deprecated.js +111 -12
  69. package/build/quote/deprecated.js.map +1 -1
  70. package/build/quote/edit.js +5 -5
  71. package/build/quote/edit.js.map +1 -1
  72. package/build/quote/index.js +1 -1
  73. package/build/quote/index.js.map +1 -1
  74. package/build/quote/save.js +2 -2
  75. package/build/quote/save.js.map +1 -1
  76. package/build/read-more/edit.js.map +1 -1
  77. package/build/search/edit.js +1 -1
  78. package/build/search/edit.js.map +1 -1
  79. package/build/search/edit.native.js.map +1 -1
  80. package/build/site-logo/edit.js.map +1 -1
  81. package/build/site-title/{edit/index.js → edit.js} +1 -1
  82. package/build/site-title/edit.js.map +1 -0
  83. package/build/social-link/edit.js.map +1 -1
  84. package/build/social-links/edit.native.js.map +1 -1
  85. package/build/spacer/edit.js.map +1 -1
  86. package/build/table-of-contents/edit.js.map +1 -1
  87. package/build/template-part/edit/index.js +53 -1
  88. package/build/template-part/edit/index.js.map +1 -1
  89. package/build/template-part/edit/selection-modal.js +2 -8
  90. package/build/template-part/edit/selection-modal.js.map +1 -1
  91. package/build/template-part/edit/utils/map-template-part-to-block-pattern.js +30 -0
  92. package/build/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
  93. package/build/utils/hooks.js +55 -4
  94. package/build/utils/hooks.js.map +1 -1
  95. package/build/video/edit-common-settings.js.map +1 -1
  96. package/build/video/edit.js +7 -16
  97. package/build/video/edit.js.map +1 -1
  98. package/build/video/edit.native.js +2 -7
  99. package/build/video/edit.native.js.map +1 -1
  100. package/build-module/audio/edit.js +10 -20
  101. package/build-module/audio/edit.js.map +1 -1
  102. package/build-module/audio/edit.native.js.map +1 -1
  103. package/build-module/avatar/edit.js.map +1 -1
  104. package/build-module/button/edit.js +1 -1
  105. package/build-module/button/edit.js.map +1 -1
  106. package/build-module/buttons/edit.js +2 -7
  107. package/build-module/buttons/edit.js.map +1 -1
  108. package/build-module/buttons/edit.native.js +1 -7
  109. package/build-module/buttons/edit.native.js.map +1 -1
  110. package/build-module/columns/edit.js +8 -2
  111. package/build-module/columns/edit.js.map +1 -1
  112. package/build-module/comment-author-avatar/edit.js +1 -1
  113. package/build-module/comment-author-avatar/edit.js.map +1 -1
  114. package/build-module/cover/edit/index.js.map +1 -1
  115. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  116. package/build-module/cover/edit/resizable-cover-popover.js +1 -7
  117. package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
  118. package/build-module/cover/edit.native.js.map +1 -1
  119. package/build-module/details/index.js +1 -0
  120. package/build-module/details/index.js.map +1 -1
  121. package/build-module/file/deprecated.js.map +1 -1
  122. package/build-module/file/edit.js +7 -14
  123. package/build-module/file/edit.js.map +1 -1
  124. package/build-module/file/edit.native.js.map +1 -1
  125. package/build-module/file/save.js.map +1 -1
  126. package/build-module/form-input/edit.js +1 -1
  127. package/build-module/form-input/edit.js.map +1 -1
  128. package/build-module/gallery/edit.js +5 -5
  129. package/build-module/gallery/edit.js.map +1 -1
  130. package/build-module/gallery/gallery.native.js.map +1 -1
  131. package/build-module/gallery/v1/edit.js.map +1 -1
  132. package/build-module/gallery/v1/gallery.native.js.map +1 -1
  133. package/build-module/group/variations.js +12 -15
  134. package/build-module/group/variations.js.map +1 -1
  135. package/build-module/image/edit.js.map +1 -1
  136. package/build-module/image/edit.native.js.map +1 -1
  137. package/build-module/image/image.js.map +1 -1
  138. package/build-module/latest-posts/edit.native.js.map +1 -1
  139. package/build-module/list/edit.js +5 -0
  140. package/build-module/list/edit.js.map +1 -1
  141. package/build-module/list/ordered-list-settings.js +1 -1
  142. package/build-module/list/ordered-list-settings.js.map +1 -1
  143. package/build-module/list-item/edit.native.js.map +1 -1
  144. package/build-module/list-item/hooks/use-indent-list-item.js +1 -0
  145. package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
  146. package/build-module/list-item/hooks/use-outdent-list-item.js +1 -0
  147. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  148. package/build-module/list-item/hooks/use-space.js +17 -8
  149. package/build-module/list-item/hooks/use-space.js.map +1 -1
  150. package/build-module/media-text/media-container.native.js +1 -1
  151. package/build-module/media-text/media-container.native.js.map +1 -1
  152. package/build-module/navigation/edit/index.js.map +1 -1
  153. package/build-module/navigation-link/link-ui.js.map +1 -1
  154. package/build-module/paragraph/edit.native.js.map +1 -1
  155. package/build-module/pattern/edit.js +24 -10
  156. package/build-module/pattern/edit.js.map +1 -1
  157. package/build-module/post-excerpt/edit.js.map +1 -1
  158. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  159. package/build-module/post-featured-image/edit.js.map +1 -1
  160. package/build-module/post-navigation-link/edit.js.map +1 -1
  161. package/build-module/query/edit/pattern-selection-modal.js.map +1 -1
  162. package/build-module/query/utils.js +7 -5
  163. package/build-module/query/utils.js.map +1 -1
  164. package/build-module/query-pagination-next/edit.js.map +1 -1
  165. package/build-module/query-pagination-previous/edit.js.map +1 -1
  166. package/build-module/quote/deprecated.js +112 -13
  167. package/build-module/quote/deprecated.js.map +1 -1
  168. package/build-module/quote/edit.js +5 -5
  169. package/build-module/quote/edit.js.map +1 -1
  170. package/build-module/quote/index.js +1 -1
  171. package/build-module/quote/index.js.map +1 -1
  172. package/build-module/quote/save.js +2 -2
  173. package/build-module/quote/save.js.map +1 -1
  174. package/build-module/read-more/edit.js.map +1 -1
  175. package/build-module/search/edit.js +1 -1
  176. package/build-module/search/edit.js.map +1 -1
  177. package/build-module/search/edit.native.js.map +1 -1
  178. package/build-module/site-logo/edit.js.map +1 -1
  179. package/build-module/site-title/{edit/index.js → edit.js} +1 -1
  180. package/build-module/site-title/edit.js.map +1 -0
  181. package/build-module/social-link/edit.js.map +1 -1
  182. package/build-module/social-links/edit.native.js.map +1 -1
  183. package/build-module/spacer/edit.js.map +1 -1
  184. package/build-module/table-of-contents/edit.js.map +1 -1
  185. package/build-module/template-part/edit/index.js +57 -5
  186. package/build-module/template-part/edit/index.js.map +1 -1
  187. package/build-module/template-part/edit/selection-modal.js +2 -8
  188. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  189. package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js +24 -0
  190. package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
  191. package/build-module/utils/hooks.js +54 -3
  192. package/build-module/utils/hooks.js.map +1 -1
  193. package/build-module/video/edit-common-settings.js.map +1 -1
  194. package/build-module/video/edit.js +10 -19
  195. package/build-module/video/edit.js.map +1 -1
  196. package/build-module/video/edit.native.js +2 -7
  197. package/build-module/video/edit.native.js.map +1 -1
  198. package/build-style/editor-rtl.css +4 -1
  199. package/build-style/editor.css +4 -1
  200. package/build-style/group/editor-rtl.css +1 -1
  201. package/build-style/group/editor.css +1 -1
  202. package/build-style/image/editor-rtl.css +3 -0
  203. package/build-style/image/editor.css +3 -0
  204. package/package.json +34 -34
  205. package/src/audio/edit.js +9 -19
  206. package/src/audio/edit.native.js +3 -3
  207. package/src/avatar/edit.js +1 -1
  208. package/src/avatar/index.php +12 -1
  209. package/src/block/index.php +2 -0
  210. package/src/button/edit.js +2 -2
  211. package/src/buttons/edit.js +3 -16
  212. package/src/buttons/edit.native.js +2 -18
  213. package/src/calendar/index.php +5 -0
  214. package/src/columns/edit.js +9 -2
  215. package/src/comment-author-avatar/edit.js +1 -1
  216. package/src/comments/index.php +2 -0
  217. package/src/cover/edit/index.js +2 -2
  218. package/src/cover/edit/inspector-controls.js +1 -1
  219. package/src/cover/edit/resizable-cover-popover.js +1 -6
  220. package/src/cover/edit.native.js +1 -1
  221. package/src/details/block.json +1 -0
  222. package/src/file/deprecated.js +3 -3
  223. package/src/file/edit.js +8 -15
  224. package/src/file/edit.native.js +4 -4
  225. package/src/file/save.js +1 -1
  226. package/src/form-input/edit.js +1 -1
  227. package/src/gallery/edit.js +6 -12
  228. package/src/gallery/gallery.native.js +1 -1
  229. package/src/gallery/test/index.native.js +1 -1
  230. package/src/gallery/v1/edit.js +2 -2
  231. package/src/gallery/v1/gallery.native.js +1 -1
  232. package/src/group/editor.scss +1 -1
  233. package/src/group/variations.js +3 -6
  234. package/src/image/edit.js +1 -1
  235. package/src/image/edit.native.js +1 -1
  236. package/src/image/editor.scss +6 -0
  237. package/src/image/image.js +2 -2
  238. package/src/latest-posts/edit.native.js +1 -1
  239. package/src/list/edit.js +5 -0
  240. package/src/list/ordered-list-settings.js +1 -1
  241. package/src/list-item/edit.native.js +1 -1
  242. package/src/list-item/hooks/use-indent-list-item.js +2 -0
  243. package/src/list-item/hooks/use-outdent-list-item.js +2 -0
  244. package/src/list-item/hooks/use-space.js +16 -9
  245. package/src/media-text/media-container.native.js +5 -3
  246. package/src/media-text/test/edit.native.js +58 -0
  247. package/src/missing/test/edit-integration.native.js +2 -1
  248. package/src/navigation/edit/index.js +1 -1
  249. package/src/navigation/edit/test/navigation-menu-selector.js +3 -3
  250. package/src/navigation/index.php +18 -13
  251. package/src/navigation-link/link-ui.js +2 -2
  252. package/src/paragraph/edit.native.js +1 -1
  253. package/src/paragraph/test/edit.native.js +36 -0
  254. package/src/pattern/edit.js +27 -10
  255. package/src/post-author-biography/index.php +4 -3
  256. package/src/post-author-name/index.php +4 -3
  257. package/src/post-excerpt/edit.js +1 -1
  258. package/src/post-featured-image/dimension-controls.js +4 -4
  259. package/src/post-featured-image/edit.js +1 -1
  260. package/src/post-navigation-link/edit.js +1 -1
  261. package/src/post-template/index.php +2 -0
  262. package/src/query/edit/pattern-selection-modal.js +1 -1
  263. package/src/query/utils.js +6 -4
  264. package/src/query-pagination-next/edit.js +1 -1
  265. package/src/query-pagination-previous/edit.js +1 -1
  266. package/src/quote/block.json +1 -1
  267. package/src/quote/deprecated.js +110 -15
  268. package/src/quote/edit.js +5 -5
  269. package/src/quote/save.js +2 -2
  270. package/src/quote/test/__snapshots__/transforms.native.js.snap +2 -2
  271. package/src/read-more/edit.js +1 -1
  272. package/src/search/edit.js +1 -1
  273. package/src/search/edit.native.js +4 -4
  274. package/src/site-logo/edit.js +1 -1
  275. package/src/social-link/edit.js +1 -1
  276. package/src/social-links/edit.native.js +1 -1
  277. package/src/spacer/edit.js +1 -1
  278. package/src/table-of-contents/edit.js +1 -1
  279. package/src/template-part/edit/index.js +91 -4
  280. package/src/template-part/edit/selection-modal.js +4 -8
  281. package/src/template-part/edit/utils/map-template-part-to-block-pattern.js +23 -0
  282. package/src/utils/hooks.js +53 -3
  283. package/src/video/edit-common-settings.js +1 -1
  284. package/src/video/edit.js +10 -18
  285. package/src/video/edit.native.js +5 -8
  286. package/src/video/test/edit.native.js +0 -14
  287. package/build/site-title/edit/index.js.map +0 -1
  288. package/build-module/site-title/edit/index.js.map +0 -1
  289. /package/src/site-title/{edit/index.js → edit.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_blockEditor","require","_blocks","_components","_data","_element","_i18n","_compose","_notices","_icons","_list","_interopRequireDefault","_utils","_hooks","TableOfContentsEdit","attributes","headings","onlyIncludeCurrentPage","clientId","setAttributes","useObserveHeadings","blockProps","useBlockProps","instanceId","useInstanceId","createWarningNotice","removeNotice","useDispatch","noticeStore","noticeId","showRedirectionPreventedNotice","event","preventDefault","__","id","type","canInsertList","useSelect","select","getBlockRootClientId","canInsertBlockType","blockEditorStore","rootClientId","replaceBlocks","headingTree","linearToNestedHeadingList","toolbarControls","_react","createElement","BlockControls","ToolbarGroup","ToolbarButton","onClick","createBlock","ordered","values","renderToString","default","nestedHeadingList","inspectorControls","InspectorControls","PanelBody","title","ToggleControl","__nextHasNoMarginBottom","label","checked","onChange","value","help","length","Fragment","Placeholder","icon","BlockIcon","instructions","disableLinkActivation"],"sources":["@wordpress/block-library/src/table-of-contents/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tstore as blockEditorStore,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tPanelBody,\n\tPlaceholder,\n\tToggleControl,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { renderToString } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { store as noticeStore } from '@wordpress/notices';\nimport { tableOfContents as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport TableOfContentsList from './list';\nimport { linearToNestedHeadingList } from './utils';\nimport { useObserveHeadings } from './hooks';\n\n/** @typedef {import('./utils').HeadingData} HeadingData */\n\n/**\n * Table of Contents block edit component.\n *\n * @param {Object} props The props.\n * @param {Object} props.attributes The block attributes.\n * @param {HeadingData[]} props.attributes.headings A list of data for each heading in the post.\n * @param {boolean} props.attributes.onlyIncludeCurrentPage Whether to only include headings from the current page (if the post is paginated).\n * @param {string} props.clientId\n * @param {(attributes: Object) => void} props.setAttributes\n *\n * @return {Component} The component.\n */\nexport default function TableOfContentsEdit( {\n\tattributes: { headings = [], onlyIncludeCurrentPage },\n\tclientId,\n\tsetAttributes,\n} ) {\n\tuseObserveHeadings( clientId );\n\n\tconst blockProps = useBlockProps();\n\tconst instanceId = useInstanceId(\n\t\tTableOfContentsEdit,\n\t\t'table-of-contents'\n\t);\n\n\t// If a user clicks to a link prevent redirection and show a warning.\n\tconst { createWarningNotice, removeNotice } = useDispatch( noticeStore );\n\tlet noticeId;\n\tconst showRedirectionPreventedNotice = ( event ) => {\n\t\tevent.preventDefault();\n\t\t// Remove previous warning if any, to show one at a time per block.\n\t\tremoveNotice( noticeId );\n\t\tnoticeId = `block-library/core/table-of-contents/redirection-prevented/${ instanceId }`;\n\t\tcreateWarningNotice( __( 'Links are disabled in the editor.' ), {\n\t\t\tid: noticeId,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t};\n\n\tconst canInsertList = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn canInsertBlockType( 'core/list', rootClientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\n\tconst headingTree = linearToNestedHeadingList( headings );\n\n\tconst toolbarControls = canInsertList && (\n\t\t<BlockControls>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlock( 'core/list', {\n\t\t\t\t\t\t\t\tordered: true,\n\t\t\t\t\t\t\t\tvalues: renderToString(\n\t\t\t\t\t\t\t\t\t<TableOfContentsList\n\t\t\t\t\t\t\t\t\t\tnestedHeadingList={ headingTree }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Convert to static list' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Only include current page' ) }\n\t\t\t\t\tchecked={ onlyIncludeCurrentPage }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { onlyIncludeCurrentPage: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={\n\t\t\t\t\t\tonlyIncludeCurrentPage\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Only including headings from the current page (if the post is paginated).'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Toggle to only include headings from the current page (if the post is paginated).'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\t// If there are no headings or the only heading is empty.\n\t// Note that the toolbar controls are intentionally omitted since the\n\t// \"Convert to static list\" option is useless to the placeholder state.\n\tif ( headings.length === 0 ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\t\tlabel={ __( 'Table of Contents' ) }\n\t\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t\t'Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ inspectorControls }\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<nav { ...blockProps }>\n\t\t\t\t<ol>\n\t\t\t\t\t<TableOfContentsList\n\t\t\t\t\t\tnestedHeadingList={ headingTree }\n\t\t\t\t\t\tdisableLinkActivation={ true }\n\t\t\t\t\t\tonClick={ showRedirectionPreventedNotice }\n\t\t\t\t\t/>\n\t\t\t\t</ol>\n\t\t\t</nav>\n\t\t\t{ toolbarControls }\n\t\t\t{ inspectorControls }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_blockEditor","require","_blocks","_components","_data","_element","_i18n","_compose","_notices","_icons","_list","_interopRequireDefault","_utils","_hooks","TableOfContentsEdit","attributes","headings","onlyIncludeCurrentPage","clientId","setAttributes","useObserveHeadings","blockProps","useBlockProps","instanceId","useInstanceId","createWarningNotice","removeNotice","useDispatch","noticeStore","noticeId","showRedirectionPreventedNotice","event","preventDefault","__","id","type","canInsertList","useSelect","select","getBlockRootClientId","canInsertBlockType","blockEditorStore","rootClientId","replaceBlocks","headingTree","linearToNestedHeadingList","toolbarControls","_react","createElement","BlockControls","ToolbarGroup","ToolbarButton","onClick","createBlock","ordered","values","renderToString","default","nestedHeadingList","inspectorControls","InspectorControls","PanelBody","title","ToggleControl","__nextHasNoMarginBottom","label","checked","onChange","value","help","length","Fragment","Placeholder","icon","BlockIcon","instructions","disableLinkActivation"],"sources":["@wordpress/block-library/src/table-of-contents/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tstore as blockEditorStore,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tPanelBody,\n\tPlaceholder,\n\tToggleControl,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { renderToString } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { store as noticeStore } from '@wordpress/notices';\nimport { tableOfContents as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport TableOfContentsList from './list';\nimport { linearToNestedHeadingList } from './utils';\nimport { useObserveHeadings } from './hooks';\n\n/** @typedef {import('./utils').HeadingData} HeadingData */\n\n/**\n * Table of Contents block edit component.\n *\n * @param {Object} props The props.\n * @param {Object} props.attributes The block attributes.\n * @param {HeadingData[]} props.attributes.headings A list of data for each heading in the post.\n * @param {boolean} props.attributes.onlyIncludeCurrentPage Whether to only include headings from the current page (if the post is paginated).\n * @param {string} props.clientId\n * @param {(attributes: Object) => void} props.setAttributes\n *\n * @return {Component} The component.\n */\nexport default function TableOfContentsEdit( {\n\tattributes: { headings = [], onlyIncludeCurrentPage },\n\tclientId,\n\tsetAttributes,\n} ) {\n\tuseObserveHeadings( clientId );\n\n\tconst blockProps = useBlockProps();\n\tconst instanceId = useInstanceId(\n\t\tTableOfContentsEdit,\n\t\t'table-of-contents'\n\t);\n\n\t// If a user clicks to a link prevent redirection and show a warning.\n\tconst { createWarningNotice, removeNotice } = useDispatch( noticeStore );\n\tlet noticeId;\n\tconst showRedirectionPreventedNotice = ( event ) => {\n\t\tevent.preventDefault();\n\t\t// Remove previous warning if any, to show one at a time per block.\n\t\tremoveNotice( noticeId );\n\t\tnoticeId = `block-library/core/table-of-contents/redirection-prevented/${ instanceId }`;\n\t\tcreateWarningNotice( __( 'Links are disabled in the editor.' ), {\n\t\t\tid: noticeId,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t};\n\n\tconst canInsertList = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn canInsertBlockType( 'core/list', rootClientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\n\tconst headingTree = linearToNestedHeadingList( headings );\n\n\tconst toolbarControls = canInsertList && (\n\t\t<BlockControls>\n\t\t\t<ToolbarGroup>\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlock( 'core/list', {\n\t\t\t\t\t\t\t\tordered: true,\n\t\t\t\t\t\t\t\tvalues: renderToString(\n\t\t\t\t\t\t\t\t\t<TableOfContentsList\n\t\t\t\t\t\t\t\t\t\tnestedHeadingList={ headingTree }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Convert to static list' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Only include current page' ) }\n\t\t\t\t\tchecked={ onlyIncludeCurrentPage }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { onlyIncludeCurrentPage: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={\n\t\t\t\t\t\tonlyIncludeCurrentPage\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Only including headings from the current page (if the post is paginated).'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Toggle to only include headings from the current page (if the post is paginated).'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n\n\t// If there are no headings or the only heading is empty.\n\t// Note that the toolbar controls are intentionally omitted since the\n\t// \"Convert to static list\" option is useless to the placeholder state.\n\tif ( headings.length === 0 ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\t\tlabel={ __( 'Table of Contents' ) }\n\t\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t\t'Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ inspectorControls }\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<nav { ...blockProps }>\n\t\t\t\t<ol>\n\t\t\t\t\t<TableOfContentsList\n\t\t\t\t\t\tnestedHeadingList={ headingTree }\n\t\t\t\t\t\tdisableLinkActivation\n\t\t\t\t\t\tonClick={ showRedirectionPreventedNotice }\n\t\t\t\t\t/>\n\t\t\t\t</ol>\n\t\t\t</nav>\n\t\t\t{ toolbarControls }\n\t\t\t{ inspectorControls }\n\t\t</>\n\t);\n}\n"],"mappings":";;;;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAOA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAOA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AAKA,IAAAS,KAAA,GAAAC,sBAAA,CAAAV,OAAA;AACA,IAAAW,MAAA,GAAAX,OAAA;AACA,IAAAY,MAAA,GAAAZ,OAAA;AA9BA;AACA;AACA;;AAuBA;AACA;AACA;;AAKA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASa,mBAAmBA,CAAE;EAC5CC,UAAU,EAAE;IAAEC,QAAQ,GAAG,EAAE;IAAEC;EAAuB,CAAC;EACrDC,QAAQ;EACRC;AACD,CAAC,EAAG;EACH,IAAAC,yBAAkB,EAAEF,QAAS,CAAC;EAE9B,MAAMG,UAAU,GAAG,IAAAC,0BAAa,EAAC,CAAC;EAClC,MAAMC,UAAU,GAAG,IAAAC,sBAAa,EAC/BV,mBAAmB,EACnB,mBACD,CAAC;;EAED;EACA,MAAM;IAAEW,mBAAmB;IAAEC;EAAa,CAAC,GAAG,IAAAC,iBAAW,EAAEC,cAAY,CAAC;EACxE,IAAIC,QAAQ;EACZ,MAAMC,8BAA8B,GAAKC,KAAK,IAAM;IACnDA,KAAK,CAACC,cAAc,CAAC,CAAC;IACtB;IACAN,YAAY,CAAEG,QAAS,CAAC;IACxBA,QAAQ,GAAI,8DAA8DN,UAAY,EAAC;IACvFE,mBAAmB,CAAE,IAAAQ,QAAE,EAAE,mCAAoC,CAAC,EAAE;MAC/DC,EAAE,EAAEL,QAAQ;MACZM,IAAI,EAAE;IACP,CAAE,CAAC;EACJ,CAAC;EAED,MAAMC,aAAa,GAAG,IAAAC,eAAS,EAC5BC,MAAM,IAAM;IACb,MAAM;MAAEC,oBAAoB;MAAEC;IAAmB,CAAC,GACjDF,MAAM,CAAEG,kBAAiB,CAAC;IAC3B,MAAMC,YAAY,GAAGH,oBAAoB,CAAErB,QAAS,CAAC;IAErD,OAAOsB,kBAAkB,CAAE,WAAW,EAAEE,YAAa,CAAC;EACvD,CAAC,EACD,CAAExB,QAAQ,CACX,CAAC;EAED,MAAM;IAAEyB;EAAc,CAAC,GAAG,IAAAhB,iBAAW,EAAEc,kBAAiB,CAAC;EAEzD,MAAMG,WAAW,GAAG,IAAAC,gCAAyB,EAAE7B,QAAS,CAAC;EAEzD,MAAM8B,eAAe,GAAGV,aAAa,IACpC,IAAAW,MAAA,CAAAC,aAAA,EAAChD,YAAA,CAAAiD,aAAa,QACb,IAAAF,MAAA,CAAAC,aAAA,EAAC7C,WAAA,CAAA+C,YAAY,QACZ,IAAAH,MAAA,CAAAC,aAAA,EAAC7C,WAAA,CAAAgD,aAAa;IACbC,OAAO,EAAGA,CAAA,KACTT,aAAa,CACZzB,QAAQ,EACR,IAAAmC,mBAAW,EAAE,WAAW,EAAE;MACzBC,OAAO,EAAE,IAAI;MACbC,MAAM,EAAE,IAAAC,uBAAc,EACrB,IAAAT,MAAA,CAAAC,aAAA,EAACtC,KAAA,CAAA+C,OAAmB;QACnBC,iBAAiB,EAAGd;MAAa,CACjC,CACF;IACD,CAAE,CACH;EACA,GAEC,IAAAX,QAAE,EAAE,wBAAyB,CACjB,CACF,CACA,CACf;EAED,MAAM0B,iBAAiB,GACtB,IAAAZ,MAAA,CAAAC,aAAA,EAAChD,YAAA,CAAA4D,iBAAiB,QACjB,IAAAb,MAAA,CAAAC,aAAA,EAAC7C,WAAA,CAAA0D,SAAS;IAACC,KAAK,EAAG,IAAA7B,QAAE,EAAE,UAAW;EAAG,GACpC,IAAAc,MAAA,CAAAC,aAAA,EAAC7C,WAAA,CAAA4D,aAAa;IACbC,uBAAuB;IACvBC,KAAK,EAAG,IAAAhC,QAAE,EAAE,2BAA4B,CAAG;IAC3CiC,OAAO,EAAGjD,sBAAwB;IAClCkD,QAAQ,EAAKC,KAAK,IACjBjD,aAAa,CAAE;MAAEF,sBAAsB,EAAEmD;IAAM,CAAE,CACjD;IACDC,IAAI,EACHpD,sBAAsB,GACnB,IAAAgB,QAAE,EACF,2EACA,CAAC,GACD,IAAAA,QAAE,EACF,mFACA;EACH,CACD,CACS,CACO,CACnB;;EAED;EACA;EACA;EACA,IAAKjB,QAAQ,CAACsD,MAAM,KAAK,CAAC,EAAG;IAC5B,OACC,IAAAvB,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAwB,QAAA,QACC,IAAAxB,MAAA,CAAAC,aAAA;MAAA,GAAU3B;IAAU,GACnB,IAAA0B,MAAA,CAAAC,aAAA,EAAC7C,WAAA,CAAAqE,WAAW;MACXC,IAAI,EAAG,IAAA1B,MAAA,CAAAC,aAAA,EAAChD,YAAA,CAAA0E,SAAS;QAACD,IAAI,EAAGA;MAAM,CAAE,CAAG;MACpCR,KAAK,EAAG,IAAAhC,QAAE,EAAE,mBAAoB,CAAG;MACnC0C,YAAY,EAAG,IAAA1C,QAAE,EAChB,4GACD;IAAG,CACH,CACG,CAAC,EACJ0B,iBACD,CAAC;EAEL;EAEA,OACC,IAAAZ,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAwB,QAAA,QACC,IAAAxB,MAAA,CAAAC,aAAA;IAAA,GAAU3B;EAAU,GACnB,IAAA0B,MAAA,CAAAC,aAAA,cACC,IAAAD,MAAA,CAAAC,aAAA,EAACtC,KAAA,CAAA+C,OAAmB;IACnBC,iBAAiB,EAAGd,WAAa;IACjCgC,qBAAqB;IACrBxB,OAAO,EAAGtB;EAAgC,CAC1C,CACE,CACA,CAAC,EACJgB,eAAe,EACfa,iBACD,CAAC;AAEL"}
@@ -9,14 +9,17 @@ var _react = require("react");
9
9
  var _data = require("@wordpress/data");
10
10
  var _blockEditor = require("@wordpress/block-editor");
11
11
  var _components = require("@wordpress/components");
12
+ var _compose = require("@wordpress/compose");
12
13
  var _i18n = require("@wordpress/i18n");
13
14
  var _coreData = require("@wordpress/core-data");
14
15
  var _element = require("@wordpress/element");
16
+ var _notices = require("@wordpress/notices");
15
17
  var _placeholder = _interopRequireDefault(require("./placeholder"));
16
18
  var _selectionModal = _interopRequireDefault(require("./selection-modal"));
17
19
  var _advancedControls = require("./advanced-controls");
18
20
  var _innerBlocks = _interopRequireDefault(require("./inner-blocks"));
19
21
  var _createTemplatePartId = require("./utils/create-template-part-id");
22
+ var _mapTemplatePartToBlockPattern = require("./utils/map-template-part-to-block-pattern");
20
23
  var _hooks = require("./utils/hooks");
21
24
  /**
22
25
  * WordPress dependencies
@@ -51,11 +54,29 @@ function ReplaceButton({
51
54
  "aria-haspopup": "dialog"
52
55
  }, (0, _i18n.__)('Replace'));
53
56
  }
57
+ function TemplatesList({
58
+ availableTemplates,
59
+ onSelect
60
+ }) {
61
+ const shownTemplates = (0, _compose.useAsyncList)(availableTemplates);
62
+ if (!availableTemplates) {
63
+ return null;
64
+ }
65
+ return (0, _react.createElement)(_blockEditor.__experimentalBlockPatternsList, {
66
+ label: (0, _i18n.__)('Templates'),
67
+ blockPatterns: availableTemplates,
68
+ shownPatterns: shownTemplates,
69
+ onClickPattern: onSelect
70
+ });
71
+ }
54
72
  function TemplatePartEdit({
55
73
  attributes,
56
74
  setAttributes,
57
75
  clientId
58
76
  }) {
77
+ const {
78
+ createSuccessNotice
79
+ } = (0, _data.useDispatch)(_notices.store);
59
80
  const currentTheme = (0, _data.useSelect)(select => select(_coreData.store).getCurrentTheme()?.stylesheet, []);
60
81
  const {
61
82
  slug,
@@ -90,11 +111,18 @@ function TemplatePartEdit({
90
111
  area: _area
91
112
  };
92
113
  }, [templatePartId, attributes.area, clientId]);
114
+ const {
115
+ templateParts
116
+ } = (0, _hooks.useAlternativeTemplateParts)(area, templatePartId);
117
+ const blockPatterns = (0, _hooks.useAlternativeBlockPatterns)(area, clientId);
118
+ const hasReplacements = !!templateParts.length || !!blockPatterns.length;
93
119
  const areaObject = (0, _hooks.useTemplatePartArea)(area);
94
120
  const blockProps = (0, _blockEditor.useBlockProps)();
95
121
  const isPlaceholder = !slug;
96
122
  const isEntityAvailable = !isPlaceholder && !isMissing && isResolved;
97
123
  const TagName = tagName || areaObject.tagName;
124
+ const canReplace = isEntityAvailable && hasReplacements && (area === 'header' || area === 'footer');
125
+ const createFromBlocks = (0, _hooks.useCreateTemplatePartFromBlocks)(area, setAttributes);
98
126
 
99
127
  // We don't want to render a missing state if we have any inner blocks.
100
128
  // A new template part is automatically created if we have any inner blocks but no entity.
@@ -109,6 +137,18 @@ function TemplatePartEdit({
109
137
  ...blockProps
110
138
  }, (0, _react.createElement)(_blockEditor.Warning, null, (0, _i18n.__)('Block cannot be rendered inside itself.')));
111
139
  }
140
+ const partsAsPatterns = templateParts.map(templatePart => (0, _mapTemplatePartToBlockPattern.mapTemplatePartToBlockPattern)(templatePart));
141
+ const onTemplatePartSelect = templatePart => {
142
+ setAttributes({
143
+ slug: templatePart.slug,
144
+ theme: templatePart.theme,
145
+ area: undefined
146
+ });
147
+ createSuccessNotice((0, _i18n.sprintf)( /* translators: %s: template part title. */
148
+ (0, _i18n.__)('Template Part "%s" replaceed.'), templatePart.title?.rendered || templatePart.slug), {
149
+ type: 'snackbar'
150
+ });
151
+ };
112
152
  return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_blockEditor.RecursionProvider, {
113
153
  uniqueId: templatePartId
114
154
  }, (0, _react.createElement)(_blockEditor.InspectorControls, {
@@ -144,7 +184,19 @@ function TemplatePartEdit({
144
184
  isTemplatePartSelectionOpen,
145
185
  setIsTemplatePartSelectionOpen
146
186
  });
147
- }), isEntityAvailable && (0, _react.createElement)(_innerBlocks.default, {
187
+ }), canReplace && (partsAsPatterns.length > 0 || blockPatterns.length > 0) && (0, _react.createElement)(_blockEditor.InspectorControls, null, (0, _react.createElement)(_components.PanelBody, {
188
+ title: (0, _i18n.__)('Replace')
189
+ }, (0, _react.createElement)(TemplatesList, {
190
+ availableTemplates: partsAsPatterns,
191
+ onSelect: pattern => {
192
+ onTemplatePartSelect(pattern.templatePart);
193
+ }
194
+ }), (0, _react.createElement)(TemplatesList, {
195
+ availableTemplates: blockPatterns,
196
+ onSelect: (pattern, blocks) => {
197
+ createFromBlocks(blocks, pattern.title);
198
+ }
199
+ }))), isEntityAvailable && (0, _react.createElement)(_innerBlocks.default, {
148
200
  tagName: TagName,
149
201
  blockProps: blockProps,
150
202
  postId: templatePartId,
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_blockEditor","_components","_i18n","_coreData","_element","_placeholder","_interopRequireDefault","_selectionModal","_advancedControls","_innerBlocks","_createTemplatePartId","_hooks","ReplaceButton","isEntityAvailable","area","clientId","templatePartId","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","templateParts","useAlternativeTemplateParts","blockPatterns","useAlternativeBlockPatterns","hasReplacements","length","canReplace","_react","createElement","MenuItem","onClick","__","TemplatePartEdit","attributes","setAttributes","currentTheme","useSelect","select","coreStore","getCurrentTheme","stylesheet","slug","theme","tagName","layout","createTemplatePartId","hasAlreadyRendered","useHasRecursion","useState","isResolved","hasInnerBlocks","isMissing","getEditedEntityRecord","hasFinishedResolution","getBlockCount","blockEditorStore","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","areaObject","useTemplatePartArea","blockProps","useBlockProps","isPlaceholder","TagName","Warning","sprintf","Fragment","RecursionProvider","uniqueId","InspectorControls","group","TemplatePartAdvancedControls","defaultWrapper","default","onOpenSelectionModal","BlockSettingsMenuControls","selectedClientIds","postId","Spinner","Modal","overlayClassName","title","label","toLowerCase","onRequestClose","isFullScreen","onClose"],"sources":["@wordpress/block-library/src/template-part/edit/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInspectorControls,\n} from '@wordpress/block-editor';\nimport { Spinner, Modal, MenuItem } from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartPlaceholder from './placeholder';\nimport TemplatePartSelectionModal from './selection-modal';\nimport { TemplatePartAdvancedControls } from './advanced-controls';\nimport TemplatePartInnerBlocks from './inner-blocks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseTemplatePartArea,\n} from './utils/hooks';\n\nfunction ReplaceButton( {\n\tisEntityAvailable,\n\tarea,\n\tclientId,\n\ttemplatePartId,\n\tisTemplatePartSelectionOpen,\n\tsetIsTemplatePartSelectionOpen,\n} ) {\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\n\tconst hasReplacements = !! templateParts.length || !! blockPatterns.length;\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tsetIsTemplatePartSelectionOpen( true );\n\t\t\t} }\n\t\t\taria-expanded={ isTemplatePartSelectionOpen }\n\t\t\taria-haspopup=\"dialog\"\n\t\t>\n\t\t\t{ __( 'Replace' ) }\n\t\t</MenuItem>\n\t);\n}\n\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst currentTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\tconst { slug, theme = currentTheme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\tconst { isResolved, hasInnerBlocks, isMissing, area } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlockCount } = select( blockEditorStore );\n\n\t\t\tconst getEntityArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\ttemplatePartId,\n\t\t\t];\n\t\t\tconst entityRecord = templatePartId\n\t\t\t\t? getEditedEntityRecord( ...getEntityArgs )\n\t\t\t\t: null;\n\t\t\tconst _area = entityRecord?.area || attributes.area;\n\t\t\tconst hasResolvedEntity = templatePartId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tgetEntityArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: getBlockCount( clientId ) > 0,\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing:\n\t\t\t\t\thasResolvedEntity &&\n\t\t\t\t\t( ! entityRecord ||\n\t\t\t\t\t\tObject.keys( entityRecord ).length === 0 ),\n\t\t\t\tarea: _area,\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, attributes.area, clientId ]\n\t);\n\n\tconst areaObject = useTemplatePartArea( area );\n\tconst blockProps = useBlockProps();\n\tconst isPlaceholder = ! slug;\n\tconst isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;\n\tconst TagName = tagName || areaObject.tagName;\n\n\t// We don't want to render a missing state if we have any inner blocks.\n\t// A new template part is automatically created if we have any inner blocks but no entity.\n\tif (\n\t\t! hasInnerBlocks &&\n\t\t( ( slug && ! theme ) || ( slug && isMissing ) )\n\t) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Template part slug */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Template part has been deleted or is unavailable: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslug\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RecursionProvider uniqueId={ templatePartId }>\n\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t<TemplatePartAdvancedControls\n\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\t\t\t\t{ isPlaceholder && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<TemplatePartPlaceholder\n\t\t\t\t\t\t\tarea={ attributes.area }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tonOpenSelectionModal={ () =>\n\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t\t// Only enable for single selection that matches the current block.\n\t\t\t\t\t\t// Ensures menu item doesn't render multiple times.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! (\n\t\t\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\t\t\tclientId === selectedClientIds[ 0 ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ReplaceButton\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\tisEntityAvailable,\n\t\t\t\t\t\t\t\t\tarea,\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\ttemplatePartId,\n\t\t\t\t\t\t\t\t\tisTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t</BlockSettingsMenuControls>\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<TemplatePartInnerBlocks\n\t\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tpostId={ templatePartId }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isPlaceholder && ! isResolved && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t\t{ isTemplatePartSelectionOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\toverlayClassName=\"block-editor-template-part__selection-modal\"\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t\t\t__( 'Choose a %s' ),\n\t\t\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t}\n\t\t\t\t\tisFullScreen={ true }\n\t\t\t\t>\n\t\t\t\t\t<TemplatePartSelectionModal\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonClose={ () =>\n\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_data","require","_blockEditor","_components","_compose","_i18n","_coreData","_element","_notices","_placeholder","_interopRequireDefault","_selectionModal","_advancedControls","_innerBlocks","_createTemplatePartId","_mapTemplatePartToBlockPattern","_hooks","ReplaceButton","isEntityAvailable","area","clientId","templatePartId","isTemplatePartSelectionOpen","setIsTemplatePartSelectionOpen","templateParts","useAlternativeTemplateParts","blockPatterns","useAlternativeBlockPatterns","hasReplacements","length","canReplace","_react","createElement","MenuItem","onClick","__","TemplatesList","availableTemplates","onSelect","shownTemplates","useAsyncList","__experimentalBlockPatternsList","label","shownPatterns","onClickPattern","TemplatePartEdit","attributes","setAttributes","createSuccessNotice","useDispatch","noticesStore","currentTheme","useSelect","select","coreStore","getCurrentTheme","stylesheet","slug","theme","tagName","layout","createTemplatePartId","hasAlreadyRendered","useHasRecursion","useState","isResolved","hasInnerBlocks","isMissing","getEditedEntityRecord","hasFinishedResolution","getBlockCount","blockEditorStore","getEntityArgs","entityRecord","_area","hasResolvedEntity","Object","keys","areaObject","useTemplatePartArea","blockProps","useBlockProps","isPlaceholder","TagName","createFromBlocks","useCreateTemplatePartFromBlocks","Warning","sprintf","partsAsPatterns","map","templatePart","mapTemplatePartToBlockPattern","onTemplatePartSelect","undefined","title","rendered","type","Fragment","RecursionProvider","uniqueId","InspectorControls","group","TemplatePartAdvancedControls","defaultWrapper","default","onOpenSelectionModal","BlockSettingsMenuControls","selectedClientIds","PanelBody","pattern","blocks","postId","Spinner","Modal","overlayClassName","toLowerCase","onRequestClose","isFullScreen","onClose"],"sources":["@wordpress/block-library/src/template-part/edit/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInspectorControls,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n} from '@wordpress/block-editor';\nimport { PanelBody, Spinner, Modal, MenuItem } from '@wordpress/components';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport TemplatePartPlaceholder from './placeholder';\nimport TemplatePartSelectionModal from './selection-modal';\nimport { TemplatePartAdvancedControls } from './advanced-controls';\nimport TemplatePartInnerBlocks from './inner-blocks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseTemplatePartArea,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\n\nfunction ReplaceButton( {\n\tisEntityAvailable,\n\tarea,\n\tclientId,\n\ttemplatePartId,\n\tisTemplatePartSelectionOpen,\n\tsetIsTemplatePartSelectionOpen,\n} ) {\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst hasReplacements = !! templateParts.length || !! blockPatterns.length;\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tsetIsTemplatePartSelectionOpen( true );\n\t\t\t} }\n\t\t\taria-expanded={ isTemplatePartSelectionOpen }\n\t\t\taria-haspopup=\"dialog\"\n\t\t>\n\t\t\t{ __( 'Replace' ) }\n\t\t</MenuItem>\n\t);\n}\n\nfunction TemplatesList( { availableTemplates, onSelect } ) {\n\tconst shownTemplates = useAsyncList( availableTemplates );\n\n\tif ( ! availableTemplates ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tlabel={ __( 'Templates' ) }\n\t\t\tblockPatterns={ availableTemplates }\n\t\t\tshownPatterns={ shownTemplates }\n\t\t\tonClickPattern={ onSelect }\n\t\t/>\n\t);\n}\n\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst currentTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\tconst { slug, theme = currentTheme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\tconst { isResolved, hasInnerBlocks, isMissing, area } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlockCount } = select( blockEditorStore );\n\n\t\t\tconst getEntityArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\ttemplatePartId,\n\t\t\t];\n\t\t\tconst entityRecord = templatePartId\n\t\t\t\t? getEditedEntityRecord( ...getEntityArgs )\n\t\t\t\t: null;\n\t\t\tconst _area = entityRecord?.area || attributes.area;\n\t\t\tconst hasResolvedEntity = templatePartId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tgetEntityArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: getBlockCount( clientId ) > 0,\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing:\n\t\t\t\t\thasResolvedEntity &&\n\t\t\t\t\t( ! entityRecord ||\n\t\t\t\t\t\tObject.keys( entityRecord ).length === 0 ),\n\t\t\t\tarea: _area,\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, attributes.area, clientId ]\n\t);\n\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst hasReplacements = !! templateParts.length || !! blockPatterns.length;\n\tconst areaObject = useTemplatePartArea( area );\n\tconst blockProps = useBlockProps();\n\tconst isPlaceholder = ! slug;\n\tconst isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;\n\tconst TagName = tagName || areaObject.tagName;\n\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\t( area === 'header' || area === 'footer' );\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\t// We don't want to render a missing state if we have any inner blocks.\n\t// A new template part is automatically created if we have any inner blocks but no entity.\n\tif (\n\t\t! hasInnerBlocks &&\n\t\t( ( slug && ! theme ) || ( slug && isMissing ) )\n\t) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Template part slug */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Template part has been deleted or is unavailable: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslug\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tconst partsAsPatterns = templateParts.map( ( templatePart ) =>\n\t\tmapTemplatePartToBlockPattern( templatePart )\n\t);\n\n\tconst onTemplatePartSelect = ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" replaceed.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<RecursionProvider uniqueId={ templatePartId }>\n\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t<TemplatePartAdvancedControls\n\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\t\t\t\t{ isPlaceholder && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<TemplatePartPlaceholder\n\t\t\t\t\t\t\tarea={ attributes.area }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tonOpenSelectionModal={ () =>\n\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t\t// Only enable for single selection that matches the current block.\n\t\t\t\t\t\t// Ensures menu item doesn't render multiple times.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! (\n\t\t\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\t\t\tclientId === selectedClientIds[ 0 ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ReplaceButton\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\tisEntityAvailable,\n\t\t\t\t\t\t\t\t\tarea,\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\ttemplatePartId,\n\t\t\t\t\t\t\t\t\tisTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t</BlockSettingsMenuControls>\n\n\t\t\t\t{ canReplace &&\n\t\t\t\t\t( partsAsPatterns.length > 0 ||\n\t\t\t\t\t\tblockPatterns.length > 0 ) && (\n\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t<PanelBody title={ __( 'Replace' ) }>\n\t\t\t\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\t\t\t\tavailableTemplates={ partsAsPatterns }\n\t\t\t\t\t\t\t\t\tonSelect={ ( pattern ) => {\n\t\t\t\t\t\t\t\t\t\tonTemplatePartSelect(\n\t\t\t\t\t\t\t\t\t\t\tpattern.templatePart\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\t\t\t\tavailableTemplates={ blockPatterns }\n\t\t\t\t\t\t\t\t\tonSelect={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\t\t\t\tcreateFromBlocks(\n\t\t\t\t\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\t\t\t\t\tpattern.title\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t) }\n\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<TemplatePartInnerBlocks\n\t\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tpostId={ templatePartId }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isPlaceholder && ! isResolved && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t\t{ isTemplatePartSelectionOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\toverlayClassName=\"block-editor-template-part__selection-modal\"\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t\t\t__( 'Choose a %s' ),\n\t\t\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t}\n\t\t\t\t\tisFullScreen\n\t\t\t\t>\n\t\t\t\t\t<TemplatePartSelectionModal\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonClose={ () =>\n\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -9,12 +9,11 @@ var _element = require("@wordpress/element");
9
9
  var _i18n = require("@wordpress/i18n");
10
10
  var _notices = require("@wordpress/notices");
11
11
  var _data = require("@wordpress/data");
12
- var _blocks = require("@wordpress/blocks");
13
12
  var _compose = require("@wordpress/compose");
14
13
  var _blockEditor = require("@wordpress/block-editor");
15
14
  var _components = require("@wordpress/components");
16
15
  var _hooks = require("./utils/hooks");
17
- var _createTemplatePartId = require("./utils/create-template-part-id");
16
+ var _mapTemplatePartToBlockPattern = require("./utils/map-template-part-to-block-pattern");
18
17
  var _searchPatterns = require("../../utils/search-patterns");
19
18
  /**
20
19
  * WordPress dependencies
@@ -37,12 +36,7 @@ function TemplatePartSelectionModal({
37
36
  } = (0, _hooks.useAlternativeTemplateParts)(area, templatePartId);
38
37
  // We can map template parts to block patters to reuse the BlockPatternsList UI
39
38
  const filteredTemplateParts = (0, _element.useMemo)(() => {
40
- const partsAsPatterns = templateParts.map(templatePart => ({
41
- name: (0, _createTemplatePartId.createTemplatePartId)(templatePart.theme, templatePart.slug),
42
- title: templatePart.title.rendered,
43
- blocks: (0, _blocks.parse)(templatePart.content.raw),
44
- templatePart
45
- }));
39
+ const partsAsPatterns = templateParts.map(templatePart => (0, _mapTemplatePartToBlockPattern.mapTemplatePartToBlockPattern)(templatePart));
46
40
  return (0, _searchPatterns.searchPatterns)(partsAsPatterns, searchValue);
47
41
  }, [templateParts, searchValue]);
48
42
  const shownTemplateParts = (0, _compose.useAsyncList)(filteredTemplateParts);
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_i18n","_notices","_data","_blocks","_compose","_blockEditor","_components","_hooks","_createTemplatePartId","_searchPatterns","TemplatePartSelectionModal","setAttributes","onClose","templatePartId","area","clientId","searchValue","setSearchValue","useState","templateParts","useAlternativeTemplateParts","filteredTemplateParts","useMemo","partsAsPatterns","map","templatePart","name","createTemplatePartId","theme","slug","title","rendered","blocks","parse","content","raw","searchPatterns","shownTemplateParts","useAsyncList","blockPatterns","useAlternativeBlockPatterns","filteredBlockPatterns","shownBlockPatterns","createSuccessNotice","useDispatch","noticesStore","onTemplatePartSelect","undefined","sprintf","__","type","createFromBlocks","useCreateTemplatePartFromBlocks","hasTemplateParts","length","hasBlockPatterns","_react","createElement","className","SearchControl","__nextHasNoMarginBottom","onChange","value","label","placeholder","__experimentalBlockPatternsList","shownPatterns","onClickPattern","pattern","__experimentalHStack","alignment"],"sources":["@wordpress/block-library/src/template-part/edit/selection-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { parse } from '@wordpress/blocks';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\t// We can map template parts to block patters to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) => ( {\n\t\t\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\t\t\ttitle: templatePart.title.rendered,\n\t\t\tblocks: parse( templatePart.content.raw ),\n\t\t\ttemplatePart,\n\t\t} ) );\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst shownTemplateParts = useAsyncList( filteredTemplateParts );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\tconst shownBlockPatterns = useAsyncList( filteredBlockPatterns );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst onTemplatePartSelect = ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t};\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search for replacements' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tshownPatterns={ shownTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ hasBlockPatterns && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Patterns' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\t\t\t\tonClickPattern={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\tcreateFromBlocks( blocks, pattern.title );\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,WAAA,GAAAP,OAAA;AAQA,IAAAQ,MAAA,GAAAR,OAAA;AAKA,IAAAS,qBAAA,GAAAT,OAAA;AACA,IAAAU,eAAA,GAAAV,OAAA;AAxBA;AACA;AACA;;AAaA;AACA;AACA;;AASe,SAASW,0BAA0BA,CAAE;EACnDC,aAAa;EACbC,OAAO;EACPC,cAAc,GAAG,IAAI;EACrBC,IAAI;EACJC;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAAC,iBAAQ,EAAE,EAAG,CAAC;EAEtD,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,kCAA2B,EACpDN,IAAI,EACJD,cACD,CAAC;EACD;EACA,MAAMQ,qBAAqB,GAAG,IAAAC,gBAAO,EAAE,MAAM;IAC5C,MAAMC,eAAe,GAAGJ,aAAa,CAACK,GAAG,CAAIC,YAAY,KAAQ;MAChEC,IAAI,EAAE,IAAAC,0CAAoB,EAAEF,YAAY,CAACG,KAAK,EAAEH,YAAY,CAACI,IAAK,CAAC;MACnEC,KAAK,EAAEL,YAAY,CAACK,KAAK,CAACC,QAAQ;MAClCC,MAAM,EAAE,IAAAC,aAAK,EAAER,YAAY,CAACS,OAAO,CAACC,GAAI,CAAC;MACzCV;IACD,CAAC,CAAG,CAAC;IAEL,OAAO,IAAAW,8BAAc,EAAEb,eAAe,EAAEP,WAAY,CAAC;EACtD,CAAC,EAAE,CAAEG,aAAa,EAAEH,WAAW,CAAG,CAAC;EACnC,MAAMqB,kBAAkB,GAAG,IAAAC,qBAAY,EAAEjB,qBAAsB,CAAC;EAChE,MAAMkB,aAAa,GAAG,IAAAC,kCAA2B,EAAE1B,IAAI,EAAEC,QAAS,CAAC;EACnE,MAAM0B,qBAAqB,GAAG,IAAAnB,gBAAO,EAAE,MAAM;IAC5C,OAAO,IAAAc,8BAAc,EAAEG,aAAa,EAAEvB,WAAY,CAAC;EACpD,CAAC,EAAE,CAAEuB,aAAa,EAAEvB,WAAW,CAAG,CAAC;EACnC,MAAM0B,kBAAkB,GAAG,IAAAJ,qBAAY,EAAEG,qBAAsB,CAAC;EAEhE,MAAM;IAAEE;EAAoB,CAAC,GAAG,IAAAC,iBAAW,EAAEC,cAAa,CAAC;EAE3D,MAAMC,oBAAoB,GAAKrB,YAAY,IAAM;IAChDd,aAAa,CAAE;MACdkB,IAAI,EAAEJ,YAAY,CAACI,IAAI;MACvBD,KAAK,EAAEH,YAAY,CAACG,KAAK;MACzBd,IAAI,EAAEiC;IACP,CAAE,CAAC;IACHJ,mBAAmB,CAClB,IAAAK,aAAO,GACN;IACA,IAAAC,QAAE,EAAE,8BAA+B,CAAC,EACpCxB,YAAY,CAACK,KAAK,EAAEC,QAAQ,IAAIN,YAAY,CAACI,IAC9C,CAAC,EACD;MACCqB,IAAI,EAAE;IACP,CACD,CAAC;IACDtC,OAAO,CAAC,CAAC;EACV,CAAC;EAED,MAAMuC,gBAAgB,GAAG,IAAAC,sCAA+B,EACvDtC,IAAI,EACJH,aACD,CAAC;EAED,MAAM0C,gBAAgB,GAAG,CAAC,CAAEhC,qBAAqB,CAACiC,MAAM;EACxD,MAAMC,gBAAgB,GAAG,CAAC,CAAEd,qBAAqB,CAACa,MAAM;EAExD,OACC,IAAAE,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAAgD,GAC9D,IAAAF,MAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAA+C,GAC7D,IAAAF,MAAA,CAAAC,aAAA,EAACnD,WAAA,CAAAqD,aAAa;IACbC,uBAAuB;IACvBC,QAAQ,EAAG5C,cAAgB;IAC3B6C,KAAK,EAAG9C,WAAa;IACrB+C,KAAK,EAAG,IAAAd,QAAE,EAAE,yBAA0B,CAAG;IACzCe,WAAW,EAAG,IAAAf,QAAE,EAAE,QAAS;EAAG,CAC9B,CACG,CAAC,EACJI,gBAAgB,IACjB,IAAAG,MAAA,CAAAC,aAAA,eACC,IAAAD,MAAA,CAAAC,aAAA,cAAM,IAAAR,QAAE,EAAE,yBAA0B,CAAO,CAAC,EAC5C,IAAAO,MAAA,CAAAC,aAAA,EAACpD,YAAA,CAAA4D,+BAAiB;IACjB1B,aAAa,EAAGlB,qBAAuB;IACvC6C,aAAa,EAAG7B,kBAAoB;IACpC8B,cAAc,EAAKC,OAAO,IAAM;MAC/BtB,oBAAoB,CAAEsB,OAAO,CAAC3C,YAAa,CAAC;IAC7C;EAAG,CACH,CACG,CACL,EAEC8B,gBAAgB,IACjB,IAAAC,MAAA,CAAAC,aAAA,eACC,IAAAD,MAAA,CAAAC,aAAA,cAAM,IAAAR,QAAE,EAAE,UAAW,CAAO,CAAC,EAC7B,IAAAO,MAAA,CAAAC,aAAA,EAACpD,YAAA,CAAA4D,+BAAiB;IACjB1B,aAAa,EAAGE,qBAAuB;IACvCyB,aAAa,EAAGxB,kBAAoB;IACpCyB,cAAc,EAAGA,CAAEC,OAAO,EAAEpC,MAAM,KAAM;MACvCmB,gBAAgB,CAAEnB,MAAM,EAAEoC,OAAO,CAACtC,KAAM,CAAC;MACzClB,OAAO,CAAC,CAAC;IACV;EAAG,CACH,CACG,CACL,EAEC,CAAEyC,gBAAgB,IAAI,CAAEE,gBAAgB,IACzC,IAAAC,MAAA,CAAAC,aAAA,EAACnD,WAAA,CAAA+D,oBAAM;IAACC,SAAS,EAAC;EAAQ,GACzB,IAAAd,MAAA,CAAAC,aAAA,aAAK,IAAAR,QAAE,EAAE,mBAAoB,CAAM,CAC5B,CAEL,CAAC;AAER"}
1
+ {"version":3,"names":["_element","require","_i18n","_notices","_data","_compose","_blockEditor","_components","_hooks","_mapTemplatePartToBlockPattern","_searchPatterns","TemplatePartSelectionModal","setAttributes","onClose","templatePartId","area","clientId","searchValue","setSearchValue","useState","templateParts","useAlternativeTemplateParts","filteredTemplateParts","useMemo","partsAsPatterns","map","templatePart","mapTemplatePartToBlockPattern","searchPatterns","shownTemplateParts","useAsyncList","blockPatterns","useAlternativeBlockPatterns","filteredBlockPatterns","shownBlockPatterns","createSuccessNotice","useDispatch","noticesStore","onTemplatePartSelect","slug","theme","undefined","sprintf","__","title","rendered","type","createFromBlocks","useCreateTemplatePartFromBlocks","hasTemplateParts","length","hasBlockPatterns","_react","createElement","className","SearchControl","__nextHasNoMarginBottom","onChange","value","label","placeholder","__experimentalBlockPatternsList","shownPatterns","onClickPattern","pattern","blocks","__experimentalHStack","alignment"],"sources":["@wordpress/block-library/src/template-part/edit/selection-modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useDispatch } from '@wordpress/data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport {\n\tSearchControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseCreateTemplatePartFromBlocks,\n} from './utils/hooks';\nimport { mapTemplatePartToBlockPattern } from './utils/map-template-part-to-block-pattern';\nimport { searchPatterns } from '../../utils/search-patterns';\n\nexport default function TemplatePartSelectionModal( {\n\tsetAttributes,\n\tonClose,\n\ttemplatePartId = null,\n\tarea,\n\tclientId,\n} ) {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\t// We can map template parts to block patters to reuse the BlockPatternsList UI\n\tconst filteredTemplateParts = useMemo( () => {\n\t\tconst partsAsPatterns = templateParts.map( ( templatePart ) =>\n\t\t\tmapTemplatePartToBlockPattern( templatePart )\n\t\t);\n\n\t\treturn searchPatterns( partsAsPatterns, searchValue );\n\t}, [ templateParts, searchValue ] );\n\tconst shownTemplateParts = useAsyncList( filteredTemplateParts );\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst filteredBlockPatterns = useMemo( () => {\n\t\treturn searchPatterns( blockPatterns, searchValue );\n\t}, [ blockPatterns, searchValue ] );\n\tconst shownBlockPatterns = useAsyncList( filteredBlockPatterns );\n\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\tconst onTemplatePartSelect = ( templatePart ) => {\n\t\tsetAttributes( {\n\t\t\tslug: templatePart.slug,\n\t\t\ttheme: templatePart.theme,\n\t\t\tarea: undefined,\n\t\t} );\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" inserted.' ),\n\t\t\t\ttemplatePart.title?.rendered || templatePart.slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t\tonClose();\n\t};\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\tconst hasTemplateParts = !! filteredTemplateParts.length;\n\tconst hasBlockPatterns = !! filteredBlockPatterns.length;\n\n\treturn (\n\t\t<div className=\"block-library-template-part__selection-content\">\n\t\t\t<div className=\"block-library-template-part__selection-search\">\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tonChange={ setSearchValue }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tlabel={ __( 'Search for replacements' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ hasTemplateParts && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Existing template parts' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredTemplateParts }\n\t\t\t\t\t\tshownPatterns={ shownTemplateParts }\n\t\t\t\t\t\tonClickPattern={ ( pattern ) => {\n\t\t\t\t\t\t\tonTemplatePartSelect( pattern.templatePart );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ hasBlockPatterns && (\n\t\t\t\t<div>\n\t\t\t\t\t<h2>{ __( 'Patterns' ) }</h2>\n\t\t\t\t\t<BlockPatternsList\n\t\t\t\t\t\tblockPatterns={ filteredBlockPatterns }\n\t\t\t\t\t\tshownPatterns={ shownBlockPatterns }\n\t\t\t\t\t\tonClickPattern={ ( pattern, blocks ) => {\n\t\t\t\t\t\t\tcreateFromBlocks( blocks, pattern.title );\n\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\n\t\t\t{ ! hasTemplateParts && ! hasBlockPatterns && (\n\t\t\t\t<HStack alignment=\"center\">\n\t\t\t\t\t<p>{ __( 'No results found.' ) }</p>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.mapTemplatePartToBlockPattern = mapTemplatePartToBlockPattern;
7
+ var _blocks = require("@wordpress/blocks");
8
+ var _createTemplatePartId = require("./create-template-part-id");
9
+ /**
10
+ * WordPress dependencies
11
+ */
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+
17
+ /**
18
+ * This maps the properties of a template part to those of a block pattern.
19
+ * @param {Object} templatePart
20
+ * @return {Object} The template part in the shape of block pattern.
21
+ */
22
+ function mapTemplatePartToBlockPattern(templatePart) {
23
+ return {
24
+ name: (0, _createTemplatePartId.createTemplatePartId)(templatePart.theme, templatePart.slug),
25
+ title: templatePart.title.rendered,
26
+ blocks: (0, _blocks.parse)(templatePart.content.raw),
27
+ templatePart
28
+ };
29
+ }
30
+ //# sourceMappingURL=map-template-part-to-block-pattern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_blocks","require","_createTemplatePartId","mapTemplatePartToBlockPattern","templatePart","name","createTemplatePartId","theme","slug","title","rendered","blocks","parse","content","raw"],"sources":["@wordpress/block-library/src/template-part/edit/utils/map-template-part-to-block-pattern.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { createTemplatePartId } from './create-template-part-id';\n\n/**\n * This maps the properties of a template part to those of a block pattern.\n * @param {Object} templatePart\n * @return {Object} The template part in the shape of block pattern.\n */\nexport function mapTemplatePartToBlockPattern( templatePart ) {\n\treturn {\n\t\tname: createTemplatePartId( templatePart.theme, templatePart.slug ),\n\t\ttitle: templatePart.title.rendered,\n\t\tblocks: parse( templatePart.content.raw ),\n\t\ttemplatePart,\n\t};\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAKA,IAAAC,qBAAA,GAAAD,OAAA;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACO,SAASE,6BAA6BA,CAAEC,YAAY,EAAG;EAC7D,OAAO;IACNC,IAAI,EAAE,IAAAC,0CAAoB,EAAEF,YAAY,CAACG,KAAK,EAAEH,YAAY,CAACI,IAAK,CAAC;IACnEC,KAAK,EAAEL,YAAY,CAACK,KAAK,CAACC,QAAQ;IAClCC,MAAM,EAAE,IAAAC,aAAK,EAAER,YAAY,CAACS,OAAO,CAACC,GAAI,CAAC;IACzCV;EACD,CAAC;AACF"}
@@ -3,9 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
7
6
  exports.useCanEditEntity = useCanEditEntity;
7
+ exports.useUploadMediaFromBlobURL = useUploadMediaFromBlobURL;
8
8
  var _data = require("@wordpress/data");
9
+ var _element = require("@wordpress/element");
10
+ var _blob = require("@wordpress/blob");
11
+ var _blockEditor = require("@wordpress/block-editor");
9
12
  var _coreData = require("@wordpress/core-data");
10
13
  /**
11
14
  * WordPress dependencies
@@ -21,7 +24,55 @@ var _coreData = require("@wordpress/core-data");
21
24
  function useCanEditEntity(kind, name, recordId) {
22
25
  return (0, _data.useSelect)(select => select(_coreData.store).canUserEditEntityRecord(kind, name, recordId), [kind, name, recordId]);
23
26
  }
24
- var _default = exports.default = {
25
- useCanEditEntity
26
- };
27
+
28
+ /**
29
+ * Handles uploading a media file from a blob URL on mount.
30
+ *
31
+ * @param {Object} args Upload media arguments.
32
+ * @param {string} args.url Blob URL.
33
+ * @param {?Array} args.allowedTypes Array of allowed media types.
34
+ * @param {Function} args.onChange Function called when the media is uploaded.
35
+ * @param {Function} args.onError Function called when an error happens.
36
+ */
37
+ function useUploadMediaFromBlobURL(args = {}) {
38
+ const latestArgs = (0, _element.useRef)(args);
39
+ const {
40
+ getSettings
41
+ } = (0, _data.useSelect)(_blockEditor.store);
42
+ (0, _element.useLayoutEffect)(() => {
43
+ latestArgs.current = args;
44
+ });
45
+ (0, _element.useEffect)(() => {
46
+ if (!latestArgs.current.url || !(0, _blob.isBlobURL)(latestArgs.current.url)) {
47
+ return;
48
+ }
49
+ const file = (0, _blob.getBlobByURL)(latestArgs.current.url);
50
+ if (!file) {
51
+ return;
52
+ }
53
+ const {
54
+ url,
55
+ allowedTypes,
56
+ onChange,
57
+ onError
58
+ } = latestArgs.current;
59
+ const {
60
+ mediaUpload
61
+ } = getSettings();
62
+ mediaUpload({
63
+ filesList: [file],
64
+ allowedTypes,
65
+ onFileChange: ([media]) => {
66
+ if ((0, _blob.isBlobURL)(media?.url)) {
67
+ return;
68
+ }
69
+ (0, _blob.revokeBlobURL)(url);
70
+ onChange(media);
71
+ },
72
+ onError: message => {
73
+ onError(message);
74
+ }
75
+ });
76
+ }, [getSettings]);
77
+ }
27
78
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_coreData","useCanEditEntity","kind","name","recordId","useSelect","select","coreStore","canUserEditEntityRecord","_default","exports","default"],"sources":["@wordpress/block-library/src/utils/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Returns whether the current user can edit the given entity.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport function useCanEditEntity( kind, name, recordId ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUserEditEntityRecord( kind, name, recordId ),\n\t\t[ kind, name, recordId ]\n\t);\n}\n\nexport default {\n\tuseCanEditEntity,\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAJA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAG;EACxD,OAAO,IAAAC,eAAS,EACbC,MAAM,IACPA,MAAM,CAAEC,eAAU,CAAC,CAACC,uBAAuB,CAAEN,IAAI,EAAEC,IAAI,EAAEC,QAAS,CAAC,EACpE,CAAEF,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CACvB,CAAC;AACF;AAAC,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEc;EACdV;AACD,CAAC"}
1
+ {"version":3,"names":["_data","require","_element","_blob","_blockEditor","_coreData","useCanEditEntity","kind","name","recordId","useSelect","select","coreStore","canUserEditEntityRecord","useUploadMediaFromBlobURL","args","latestArgs","useRef","getSettings","blockEditorStore","useLayoutEffect","current","useEffect","url","isBlobURL","file","getBlobByURL","allowedTypes","onChange","onError","mediaUpload","filesList","onFileChange","media","revokeBlobURL","message"],"sources":["@wordpress/block-library/src/utils/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useLayoutEffect, useEffect, useRef } from '@wordpress/element';\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Returns whether the current user can edit the given entity.\n *\n * @param {string} kind Entity kind.\n * @param {string} name Entity name.\n * @param {string} recordId Record's id.\n */\nexport function useCanEditEntity( kind, name, recordId ) {\n\treturn useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUserEditEntityRecord( kind, name, recordId ),\n\t\t[ kind, name, recordId ]\n\t);\n}\n\n/**\n * Handles uploading a media file from a blob URL on mount.\n *\n * @param {Object} args Upload media arguments.\n * @param {string} args.url Blob URL.\n * @param {?Array} args.allowedTypes Array of allowed media types.\n * @param {Function} args.onChange Function called when the media is uploaded.\n * @param {Function} args.onError Function called when an error happens.\n */\nexport function useUploadMediaFromBlobURL( args = {} ) {\n\tconst latestArgs = useRef( args );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tuseLayoutEffect( () => {\n\t\tlatestArgs.current = args;\n\t} );\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\t! latestArgs.current.url ||\n\t\t\t! isBlobURL( latestArgs.current.url )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( latestArgs.current.url );\n\t\tif ( ! file ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { url, allowedTypes, onChange, onError } = latestArgs.current;\n\t\tconst { mediaUpload } = getSettings();\n\n\t\tmediaUpload( {\n\t\t\tfilesList: [ file ],\n\t\t\tallowedTypes,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tif ( isBlobURL( media?.url ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\trevokeBlobURL( url );\n\t\t\t\tonChange( media );\n\t\t\t},\n\t\t\tonError: ( message ) => {\n\t\t\t\tonError( message );\n\t\t\t},\n\t\t} );\n\t}, [ getSettings ] );\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAPA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,gBAAgBA,CAAEC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAG;EACxD,OAAO,IAAAC,eAAS,EACbC,MAAM,IACPA,MAAM,CAAEC,eAAU,CAAC,CAACC,uBAAuB,CAAEN,IAAI,EAAEC,IAAI,EAAEC,QAAS,CAAC,EACpE,CAAEF,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CACvB,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,yBAAyBA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAG;EACtD,MAAMC,UAAU,GAAG,IAAAC,eAAM,EAAEF,IAAK,CAAC;EACjC,MAAM;IAAEG;EAAY,CAAC,GAAG,IAAAR,eAAS,EAAES,kBAAiB,CAAC;EAErD,IAAAC,wBAAe,EAAE,MAAM;IACtBJ,UAAU,CAACK,OAAO,GAAGN,IAAI;EAC1B,CAAE,CAAC;EAEH,IAAAO,kBAAS,EAAE,MAAM;IAChB,IACC,CAAEN,UAAU,CAACK,OAAO,CAACE,GAAG,IACxB,CAAE,IAAAC,eAAS,EAAER,UAAU,CAACK,OAAO,CAACE,GAAI,CAAC,EACpC;MACD;IACD;IAEA,MAAME,IAAI,GAAG,IAAAC,kBAAY,EAAEV,UAAU,CAACK,OAAO,CAACE,GAAI,CAAC;IACnD,IAAK,CAAEE,IAAI,EAAG;MACb;IACD;IAEA,MAAM;MAAEF,GAAG;MAAEI,YAAY;MAAEC,QAAQ;MAAEC;IAAQ,CAAC,GAAGb,UAAU,CAACK,OAAO;IACnE,MAAM;MAAES;IAAY,CAAC,GAAGZ,WAAW,CAAC,CAAC;IAErCY,WAAW,CAAE;MACZC,SAAS,EAAE,CAAEN,IAAI,CAAE;MACnBE,YAAY;MACZK,YAAY,EAAEA,CAAE,CAAEC,KAAK,CAAE,KAAM;QAC9B,IAAK,IAAAT,eAAS,EAAES,KAAK,EAAEV,GAAI,CAAC,EAAG;UAC9B;QACD;QAEA,IAAAW,mBAAa,EAAEX,GAAI,CAAC;QACpBK,QAAQ,CAAEK,KAAM,CAAC;MAClB,CAAC;MACDJ,OAAO,EAAIM,OAAO,IAAM;QACvBN,OAAO,CAAEM,OAAQ,CAAC;MACnB;IACD,CAAE,CAAC;EACJ,CAAC,EAAE,CAAEjB,WAAW,CAAG,CAAC;AACrB"}
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_components","_element","options","value","label","__","_x","VideoSettings","setAttributes","attributes","autoplay","controls","loop","muted","playsInline","preload","autoPlayHelpText","getAutoplayHelp","Platform","select","web","useCallback","checked","native","toggleFactory","useMemo","toggleAttribute","attribute","newValue","onChangePreload","_react","createElement","Fragment","ToggleControl","__nextHasNoMarginBottom","onChange","help","SelectControl","hideCancelButton","_default","exports","default"],"sources":["@wordpress/block-library/src/video/edit-common-settings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { ToggleControl, SelectControl } from '@wordpress/components';\nimport { useMemo, useCallback, Platform } from '@wordpress/element';\n\nconst options = [\n\t{ value: 'auto', label: __( 'Auto' ) },\n\t{ value: 'metadata', label: __( 'Metadata' ) },\n\t{ value: 'none', label: _x( 'None', 'Preload value' ) },\n];\n\nconst VideoSettings = ( { setAttributes, attributes } ) => {\n\tconst { autoplay, controls, loop, muted, playsInline, preload } =\n\t\tattributes;\n\n\tconst autoPlayHelpText = __(\n\t\t'Autoplay may cause usability issues for some users.'\n\t);\n\tconst getAutoplayHelp = Platform.select( {\n\t\tweb: useCallback( ( checked ) => {\n\t\t\treturn checked ? autoPlayHelpText : null;\n\t\t}, [] ),\n\t\tnative: autoPlayHelpText,\n\t} );\n\n\tconst toggleFactory = useMemo( () => {\n\t\tconst toggleAttribute = ( attribute ) => {\n\t\t\treturn ( newValue ) => {\n\t\t\t\tsetAttributes( { [ attribute ]: newValue } );\n\t\t\t};\n\t\t};\n\n\t\treturn {\n\t\t\tautoplay: toggleAttribute( 'autoplay' ),\n\t\t\tloop: toggleAttribute( 'loop' ),\n\t\t\tmuted: toggleAttribute( 'muted' ),\n\t\t\tcontrols: toggleAttribute( 'controls' ),\n\t\t\tplaysInline: toggleAttribute( 'playsInline' ),\n\t\t};\n\t}, [] );\n\n\tconst onChangePreload = useCallback( ( value ) => {\n\t\tsetAttributes( { preload: value } );\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Autoplay' ) }\n\t\t\t\tonChange={ toggleFactory.autoplay }\n\t\t\t\tchecked={ !! autoplay }\n\t\t\t\thelp={ getAutoplayHelp }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Loop' ) }\n\t\t\t\tonChange={ toggleFactory.loop }\n\t\t\t\tchecked={ !! loop }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Muted' ) }\n\t\t\t\tonChange={ toggleFactory.muted }\n\t\t\t\tchecked={ !! muted }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Playback controls' ) }\n\t\t\t\tonChange={ toggleFactory.controls }\n\t\t\t\tchecked={ !! controls }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Play inline' ) }\n\t\t\t\tonChange={ toggleFactory.playsInline }\n\t\t\t\tchecked={ !! playsInline }\n\t\t\t/>\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Preload' ) }\n\t\t\t\tvalue={ preload }\n\t\t\t\tonChange={ onChangePreload }\n\t\t\t\toptions={ options }\n\t\t\t\thideCancelButton={ true }\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default VideoSettings;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_i18n","require","_components","_element","options","value","label","__","_x","VideoSettings","setAttributes","attributes","autoplay","controls","loop","muted","playsInline","preload","autoPlayHelpText","getAutoplayHelp","Platform","select","web","useCallback","checked","native","toggleFactory","useMemo","toggleAttribute","attribute","newValue","onChangePreload","_react","createElement","Fragment","ToggleControl","__nextHasNoMarginBottom","onChange","help","SelectControl","hideCancelButton","_default","exports","default"],"sources":["@wordpress/block-library/src/video/edit-common-settings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport { ToggleControl, SelectControl } from '@wordpress/components';\nimport { useMemo, useCallback, Platform } from '@wordpress/element';\n\nconst options = [\n\t{ value: 'auto', label: __( 'Auto' ) },\n\t{ value: 'metadata', label: __( 'Metadata' ) },\n\t{ value: 'none', label: _x( 'None', 'Preload value' ) },\n];\n\nconst VideoSettings = ( { setAttributes, attributes } ) => {\n\tconst { autoplay, controls, loop, muted, playsInline, preload } =\n\t\tattributes;\n\n\tconst autoPlayHelpText = __(\n\t\t'Autoplay may cause usability issues for some users.'\n\t);\n\tconst getAutoplayHelp = Platform.select( {\n\t\tweb: useCallback( ( checked ) => {\n\t\t\treturn checked ? autoPlayHelpText : null;\n\t\t}, [] ),\n\t\tnative: autoPlayHelpText,\n\t} );\n\n\tconst toggleFactory = useMemo( () => {\n\t\tconst toggleAttribute = ( attribute ) => {\n\t\t\treturn ( newValue ) => {\n\t\t\t\tsetAttributes( { [ attribute ]: newValue } );\n\t\t\t};\n\t\t};\n\n\t\treturn {\n\t\t\tautoplay: toggleAttribute( 'autoplay' ),\n\t\t\tloop: toggleAttribute( 'loop' ),\n\t\t\tmuted: toggleAttribute( 'muted' ),\n\t\t\tcontrols: toggleAttribute( 'controls' ),\n\t\t\tplaysInline: toggleAttribute( 'playsInline' ),\n\t\t};\n\t}, [] );\n\n\tconst onChangePreload = useCallback( ( value ) => {\n\t\tsetAttributes( { preload: value } );\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Autoplay' ) }\n\t\t\t\tonChange={ toggleFactory.autoplay }\n\t\t\t\tchecked={ !! autoplay }\n\t\t\t\thelp={ getAutoplayHelp }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Loop' ) }\n\t\t\t\tonChange={ toggleFactory.loop }\n\t\t\t\tchecked={ !! loop }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Muted' ) }\n\t\t\t\tonChange={ toggleFactory.muted }\n\t\t\t\tchecked={ !! muted }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Playback controls' ) }\n\t\t\t\tonChange={ toggleFactory.controls }\n\t\t\t\tchecked={ !! controls }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Play inline' ) }\n\t\t\t\tonChange={ toggleFactory.playsInline }\n\t\t\t\tchecked={ !! playsInline }\n\t\t\t/>\n\t\t\t<SelectControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Preload' ) }\n\t\t\t\tvalue={ preload }\n\t\t\t\tonChange={ onChangePreload }\n\t\t\t\toptions={ options }\n\t\t\t\thideCancelButton\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default VideoSettings;\n"],"mappings":"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"}
@@ -17,6 +17,7 @@ var _data = require("@wordpress/data");
17
17
  var _icons = require("@wordpress/icons");
18
18
  var _notices = require("@wordpress/notices");
19
19
  var _util = require("../embed/util");
20
+ var _hooks = require("../utils/hooks");
20
21
  var _editCommonSettings = _interopRequireDefault(require("./edit-common-settings"));
21
22
  var _tracksEditor = _interopRequireDefault(require("./tracks-editor"));
22
23
  var _tracks = _interopRequireDefault(require("./tracks"));
@@ -64,22 +65,12 @@ function VideoEdit({
64
65
  tracks
65
66
  } = attributes;
66
67
  const isTemporaryVideo = !id && (0, _blob.isBlobURL)(src);
67
- const {
68
- getSettings
69
- } = (0, _data.useSelect)(_blockEditor.store);
70
- (0, _element.useEffect)(() => {
71
- if (!id && (0, _blob.isBlobURL)(src)) {
72
- const file = (0, _blob.getBlobByURL)(src);
73
- if (file) {
74
- getSettings().mediaUpload({
75
- filesList: [file],
76
- onFileChange: ([media]) => onSelectVideo(media),
77
- onError: onUploadError,
78
- allowedTypes: ALLOWED_MEDIA_TYPES
79
- });
80
- }
81
- }
82
- }, []);
68
+ (0, _hooks.useUploadMediaFromBlobURL)({
69
+ url: src,
70
+ allowedTypes: ALLOWED_MEDIA_TYPES,
71
+ onChange: onSelectVideo,
72
+ onError: onUploadError
73
+ });
83
74
  (0, _element.useEffect)(() => {
84
75
  // Placeholder may be rendered.
85
76
  if (videoPlayer.current) {
@@ -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","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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"}
1
+ {"version":3,"names":["_classnames","_interopRequireDefault","require","_blob","_components","_blockEditor","_element","_i18n","_compose","_data","_icons","_notices","_util","_hooks","_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","useUploadMediaFromBlobURL","url","allowedTypes","onChange","onSelectVideo","onError","onUploadError","useEffect","current","load","media","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","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 { 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} from '@wordpress/block-editor';\nimport { useRef, useEffect } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch } 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 { useUploadMediaFromBlobURL } from '../utils/hooks';\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\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\n\tuseUploadMediaFromBlobURL( {\n\t\turl: src,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectVideo,\n\t\tonError: onUploadError,\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":";;;;;;;;AAGA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAQA,IAAAG,YAAA,GAAAH,OAAA;AAUA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AAKA,IAAAU,KAAA,GAAAV,OAAA;AACA,IAAAW,MAAA,GAAAX,OAAA;AACA,IAAAY,mBAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,aAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,OAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,QAAA,GAAAf,OAAA;AA1CA;AACA;AACA;;AAGA;AACA;AACA;;AA2BA;AACA;AACA;;AAQA;AACA,MAAMgB,WAAW,GAAKC,OAAO,IAAM;EAClC,OACC,IAAAC,MAAA,CAAAC,aAAA,EAACjB,WAAA,CAAAkB,WAAW;IACXC,SAAS,EAAC,gCAAgC;IAC1CC,gBAAgB;IAChBC,IAAI,EAAGA,YAAM;IACbC,KAAK,EAAG,IAAAC,QAAE,EAAE,OAAQ,CAAG;IACvBC,YAAY,EAAG,IAAAD,QAAE,EAChB,+EACD;EAAG,GAEDR,OACU,CAAC;AAEhB,CAAC;AAED,MAAMU,mBAAmB,GAAG,CAAE,OAAO,CAAE;AACvC,MAAMC,gCAAgC,GAAG,CAAE,OAAO,CAAE;AAEpD,SAASC,SAASA,CAAE;EACnBC,UAAU,EAAEC,gBAAgB;EAC5BC,UAAU;EACVX,SAAS;EACTY,aAAa;EACbC,iBAAiB;EACjBC;AACD,CAAC,EAAG;EACH,MAAMC,UAAU,GAAG,IAAAC,sBAAa,EAAER,SAAU,CAAC;EAC7C,MAAMS,WAAW,GAAG,IAAAC,eAAM,EAAC,CAAC;EAC5B,MAAMC,iBAAiB,GAAG,IAAAD,eAAM,EAAC,CAAC;EAClC,MAAM;IAAEE,EAAE;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,GAAG;IAAEC;EAAO,CAAC,GAAGb,UAAU;EACxD,MAAMc,gBAAgB,GAAG,CAAEL,EAAE,IAAI,IAAAM,eAAS,EAAEH,GAAI,CAAC;EAEjD,IAAAI,gCAAyB,EAAE;IAC1BC,GAAG,EAAEL,GAAG;IACRM,YAAY,EAAEvB,mBAAmB;IACjCwB,QAAQ,EAAEC,aAAa;IACvBC,OAAO,EAAEC;EACV,CAAE,CAAC;EAEH,IAAAC,kBAAS,EAAE,MAAM;IAChB;IACA,IAAKjB,WAAW,CAACkB,OAAO,EAAG;MAC1BlB,WAAW,CAACkB,OAAO,CAACC,IAAI,CAAC,CAAC;IAC3B;EACD,CAAC,EAAE,CAAEd,MAAM,CAAG,CAAC;EAEf,SAASS,aAAaA,CAAEM,KAAK,EAAG;IAC/B,IAAK,CAAEA,KAAK,IAAI,CAAEA,KAAK,CAACT,GAAG,EAAG;MAC7B;MACA;MACA;MACAhB,aAAa,CAAE;QACdW,GAAG,EAAEe,SAAS;QACdlB,EAAE,EAAEkB,SAAS;QACbhB,MAAM,EAAEgB,SAAS;QACjBC,OAAO,EAAED;MACV,CAAE,CAAC;MACH;IACD;;IAEA;IACA;IACA1B,aAAa,CAAE;MACdW,GAAG,EAAEc,KAAK,CAACT,GAAG;MACdR,EAAE,EAAEiB,KAAK,CAACjB,EAAE;MACZE,MAAM,EACLe,KAAK,CAACG,KAAK,EAAEjB,GAAG,KAAKc,KAAK,CAACnC,IAAI,GAAGmC,KAAK,CAACG,KAAK,EAAEjB,GAAG,GAAGe,SAAS;MAC/DC,OAAO,EAAEF,KAAK,CAACE;IAChB,CAAE,CAAC;EACJ;EAEA,SAASE,WAAWA,CAAEC,MAAM,EAAG;IAC9B,IAAKA,MAAM,KAAKnB,GAAG,EAAG;MACrB;MACA,MAAMoB,UAAU,GAAG,IAAAC,8BAAwB,EAAE;QAC5CjC,UAAU,EAAE;UAAEiB,GAAG,EAAEc;QAAO;MAC3B,CAAE,CAAC;MACH,IAAKJ,SAAS,KAAKK,UAAU,IAAI7B,SAAS,EAAG;QAC5CA,SAAS,CAAE6B,UAAW,CAAC;QACvB;MACD;MACA/B,aAAa,CAAE;QAAEW,GAAG,EAAEmB,MAAM;QAAEtB,EAAE,EAAEkB,SAAS;QAAEhB,MAAM,EAAEgB;MAAU,CAAE,CAAC;IACnE;EACD;EAEA,MAAM;IAAEO;EAAkB,CAAC,GAAG,IAAAC,iBAAW,EAAEC,cAAa,CAAC;EACzD,SAASd,aAAaA,CAAEe,OAAO,EAAG;IACjCH,iBAAiB,CAAEG,OAAO,EAAE;MAAEC,IAAI,EAAE;IAAW,CAAE,CAAC;EACnD;EAEA,MAAMC,OAAO,GAAG,IAAAC,mBAAU,EAAEnD,SAAS,EAAE;IACtC,cAAc,EAAEyB;EACjB,CAAE,CAAC;EAEH,MAAM2B,UAAU,GAAG,IAAAC,0BAAa,EAAE;IACjCrD,SAAS,EAAEkD;EACZ,CAAE,CAAC;EAEH,IAAK,CAAE3B,GAAG,EAAG;IACZ,OACC,IAAA1B,MAAA,CAAAC,aAAA;MAAA,GAAUsD;IAAU,GACnB,IAAAvD,MAAA,CAAAC,aAAA,EAAChB,YAAA,CAAAwE,gBAAgB;MAChBpD,IAAI,EAAG,IAAAL,MAAA,CAAAC,aAAA,EAAChB,YAAA,CAAAyE,SAAS;QAACrD,IAAI,EAAGA;MAAM,CAAE,CAAG;MACpCsD,QAAQ,EAAGzB,aAAe;MAC1BU,WAAW,EAAGA,WAAa;MAC3BgB,MAAM,EAAC,SAAS;MAChB5B,YAAY,EAAGvB,mBAAqB;MACpCoD,KAAK,EAAG/C,UAAY;MACpBqB,OAAO,EAAGC,aAAe;MACzBtC,WAAW,EAAGA;IAAa,CAC3B,CACG,CAAC;EAER;EAEA,SAASgE,cAAcA,CAAEnB,KAAK,EAAG;IAChC5B,aAAa,CAAE;MAAEU,MAAM,EAAEkB,KAAK,CAACZ;IAAI,CAAE,CAAC;EACvC;EAEA,SAASgC,cAAcA,CAAA,EAAG;IACzBhD,aAAa,CAAE;MAAEU,MAAM,EAAEgB;IAAU,CAAE,CAAC;;IAEtC;IACAnB,iBAAiB,CAACgB,OAAO,CAAC0B,KAAK,CAAC,CAAC;EAClC;EAEA,MAAMC,sBAAsB,GAAI,yCAAyC/C,UAAY,EAAC;EAEtF,OACC,IAAAlB,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAkE,QAAA,QACGrD,gBAAgB,IACjB,IAAAb,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAkE,QAAA,QACC,IAAAlE,MAAA,CAAAC,aAAA,EAAChB,YAAA,CAAAkF,aAAa,QACb,IAAAnE,MAAA,CAAAC,aAAA,EAACN,aAAA,CAAAyE,OAAY;IACZzC,MAAM,EAAGA,MAAQ;IACjBM,QAAQ,EAAKoC,SAAS,IAAM;MAC3BtD,aAAa,CAAE;QAAEY,MAAM,EAAE0C;MAAU,CAAE,CAAC;IACvC;EAAG,CACH,CACa,CAAC,EAChB,IAAArE,MAAA,CAAAC,aAAA,EAAChB,YAAA,CAAAkF,aAAa;IAACG,KAAK,EAAC;EAAO,GAC3B,IAAAtE,MAAA,CAAAC,aAAA,EAAChB,YAAA,CAAAsF,gBAAgB;IAChBC,OAAO,EAAGjD,EAAI;IACdkD,QAAQ,EAAG/C,GAAK;IAChBM,YAAY,EAAGvB,mBAAqB;IACpCmD,MAAM,EAAC,SAAS;IAChBD,QAAQ,EAAGzB,aAAe;IAC1BU,WAAW,EAAGA,WAAa;IAC3BT,OAAO,EAAGC;EAAe,CACzB,CACa,CACd,CACF,EACD,IAAApC,MAAA,CAAAC,aAAA,EAAChB,YAAA,CAAAyF,iBAAiB,QACjB,IAAA1E,MAAA,CAAAC,aAAA,EAACjB,WAAA,CAAA2F,SAAS;IAACC,KAAK,EAAG,IAAArE,QAAE,EAAE,UAAW;EAAG,GACpC,IAAAP,MAAA,CAAAC,aAAA,EAACP,mBAAA,CAAA0E,OAAmB;IACnBrD,aAAa,EAAGA,aAAe;IAC/BD,UAAU,EAAGA;EAAY,CACzB,CAAC,EACF,IAAAd,MAAA,CAAAC,aAAA,EAAChB,YAAA,CAAA4F,gBAAgB,QAChB,IAAA7E,MAAA,CAAAC,aAAA,EAACjB,WAAA,CAAA8F,WAAW;IAAC3E,SAAS,EAAC;EAA6B,GACnD,IAAAH,MAAA,CAAAC,aAAA,EAACjB,WAAA,CAAA8F,WAAW,CAACC,WAAW,QACrB,IAAAxE,QAAE,EAAE,cAAe,CACG,CAAC,EAC1B,IAAAP,MAAA,CAAAC,aAAA,EAAChB,YAAA,CAAA+F,WAAW;IACXJ,KAAK,EAAG,IAAArE,QAAE,EAAE,qBAAsB,CAAG;IACrCoD,QAAQ,EAAGG,cAAgB;IAC3B9B,YAAY,EACXtB,gCACA;IACDuE,MAAM,EAAGA,CAAE;MAAEC;IAAK,CAAC,KAClB,IAAAlF,MAAA,CAAAC,aAAA,EAACjB,WAAA,CAAAmG,MAAM;MACNC,OAAO,EAAC,SAAS;MACjBC,OAAO,EAAGH,IAAM;MAChBI,GAAG,EAAGhE,iBAAmB;MACzB,oBACC2C;IACA,GAEC,CAAExC,MAAM,GACP,IAAAlB,QAAE,EAAE,QAAS,CAAC,GACd,IAAAA,QAAE,EAAE,SAAU,CACV;EACN,CACH,CAAC,EACF,IAAAP,MAAA,CAAAC,aAAA;IAAGsB,EAAE,EAAG0C,sBAAwB;IAACsB,MAAM;EAAA,GACpC9D,MAAM,GACL,IAAA+D,aAAO,GACP;EACA,IAAAjF,QAAE,EACD,oCACD,CAAC,EACDkB,MACA,CAAC,GACD,IAAAlB,QAAE,EACF,6CACA,CACD,CAAC,EACF,CAAC,CAAEkB,MAAM,IACV,IAAAzB,MAAA,CAAAC,aAAA,EAACjB,WAAA,CAAAmG,MAAM;IACNE,OAAO,EAAGtB,cAAgB;IAC1BqB,OAAO,EAAC;EAAU,GAEhB,IAAA7E,QAAE,EAAE,QAAS,CACR,CAEG,CACI,CACR,CACO,CAAC,EACpB,IAAAP,MAAA,CAAAC,aAAA;IAAA,GAAasD;EAAU,GAMtB,IAAAvD,MAAA,CAAAC,aAAA,EAACjB,WAAA,CAAAyG,QAAQ;IAACC,UAAU,EAAG,CAAE7E;EAAkB,GAC1C,IAAAb,MAAA,CAAAC,aAAA;IACCuB,QAAQ,EAAGA,QAAU;IACrBC,MAAM,EAAGA,MAAQ;IACjBC,GAAG,EAAGA,GAAK;IACX4D,GAAG,EAAGlE;EAAa,GAEnB,IAAApB,MAAA,CAAAC,aAAA,EAACL,OAAA,CAAAwE,OAAM;IAACzC,MAAM,EAAGA;EAAQ,CAAE,CACrB,CACE,CAAC,EACTC,gBAAgB,IAAI,IAAA5B,MAAA,CAAAC,aAAA,EAACjB,WAAA,CAAA2G,OAAO,MAAE,CAAC,EACjC,IAAA3F,MAAA,CAAAC,aAAA,EAACJ,QAAA,CAAA+F,OAAO;IACP9E,UAAU,EAAGA,UAAY;IACzBC,aAAa,EAAGA,aAAe;IAC/BH,UAAU,EAAGC,gBAAkB;IAC/BG,iBAAiB,EAAGA,iBAAmB;IACvCV,KAAK,EAAG,IAAAC,QAAE,EAAE,oBAAqB,CAAG;IACpCsF,iBAAiB,EAAGhF;EAAkB,CACtC,CACM,CACP,CAAC;AAEL;AAAC,IAAAiF,QAAA,GAAAC,OAAA,CAAA3B,OAAA,GAEczD,SAAS"}