@wordpress/block-library 8.29.0 → 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 (347) hide show
  1. package/CHANGELOG.md +2 -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/block/deprecated.js +71 -11
  7. package/build/block/deprecated.js.map +1 -1
  8. package/build/block/edit.js +49 -24
  9. package/build/block/edit.js.map +1 -1
  10. package/build/button/edit.js +2 -2
  11. package/build/button/edit.js.map +1 -1
  12. package/build/buttons/edit.native.js.map +1 -1
  13. package/build/buttons/transforms.js +16 -2
  14. package/build/buttons/transforms.js.map +1 -1
  15. package/build/code/transforms.js +17 -6
  16. package/build/code/transforms.js.map +1 -1
  17. package/build/columns/edit.js +3 -2
  18. package/build/columns/edit.js.map +1 -1
  19. package/build/comment-author-avatar/edit.js +1 -1
  20. package/build/comment-author-avatar/edit.js.map +1 -1
  21. package/build/cover/edit/block-controls.js +14 -3
  22. package/build/cover/edit/block-controls.js.map +1 -1
  23. package/build/cover/edit/index.js.map +1 -1
  24. package/build/cover/edit/inspector-controls.js.map +1 -1
  25. package/build/cover/edit/resizable-cover-popover.js +0 -6
  26. package/build/cover/edit/resizable-cover-popover.js.map +1 -1
  27. package/build/cover/edit.native.js.map +1 -1
  28. package/build/file/deprecated.js.map +1 -1
  29. package/build/file/edit.js +6 -13
  30. package/build/file/edit.js.map +1 -1
  31. package/build/file/edit.native.js.map +1 -1
  32. package/build/file/save.js.map +1 -1
  33. package/build/form-input/edit.js +1 -1
  34. package/build/form-input/edit.js.map +1 -1
  35. package/build/gallery/edit.js.map +1 -1
  36. package/build/gallery/gallery.native.js.map +1 -1
  37. package/build/gallery/v1/edit.js.map +1 -1
  38. package/build/gallery/v1/gallery.native.js.map +1 -1
  39. package/build/heading/transforms.js +17 -4
  40. package/build/heading/transforms.js.map +1 -1
  41. package/build/image/edit.js +8 -4
  42. package/build/image/edit.js.map +1 -1
  43. package/build/image/edit.native.js.map +1 -1
  44. package/build/image/image.js +22 -8
  45. package/build/image/image.js.map +1 -1
  46. package/build/latest-posts/edit.native.js.map +1 -1
  47. package/build/list/ordered-list-settings.js +1 -1
  48. package/build/list/ordered-list-settings.js.map +1 -1
  49. package/build/list-item/edit.js +1 -3
  50. package/build/list-item/edit.js.map +1 -1
  51. package/build/list-item/edit.native.js.map +1 -1
  52. package/build/list-item/hooks/index.js +0 -7
  53. package/build/list-item/hooks/index.js.map +1 -1
  54. package/build/list-item/hooks/use-indent-list-item.js +1 -0
  55. package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
  56. package/build/list-item/hooks/use-outdent-list-item.js +1 -0
  57. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  58. package/build/list-item/hooks/use-space.js +16 -7
  59. package/build/list-item/hooks/use-space.js.map +1 -1
  60. package/build/list-item/index.js +4 -1
  61. package/build/list-item/index.js.map +1 -1
  62. package/build/media-text/media-container.native.js +1 -1
  63. package/build/media-text/media-container.native.js.map +1 -1
  64. package/build/navigation/edit/index.js.map +1 -1
  65. package/build/navigation-link/link-ui.js.map +1 -1
  66. package/build/paragraph/edit.native.js.map +1 -1
  67. package/build/pattern/edit.js +11 -0
  68. package/build/pattern/edit.js.map +1 -1
  69. package/build/post-excerpt/edit.js.map +1 -1
  70. package/build/post-featured-image/dimension-controls.js.map +1 -1
  71. package/build/post-featured-image/edit.js +8 -11
  72. package/build/post-featured-image/edit.js.map +1 -1
  73. package/build/post-navigation-link/edit.js.map +1 -1
  74. package/build/post-title/edit.js +2 -2
  75. package/build/post-title/edit.js.map +1 -1
  76. package/build/query/edit/pattern-selection-modal.js.map +1 -1
  77. package/build/query/utils.js +7 -5
  78. package/build/query/utils.js.map +1 -1
  79. package/build/query-pagination-next/edit.js.map +1 -1
  80. package/build/query-pagination-previous/edit.js.map +1 -1
  81. package/build/quote/deprecated.js +111 -12
  82. package/build/quote/deprecated.js.map +1 -1
  83. package/build/quote/edit.js +5 -5
  84. package/build/quote/edit.js.map +1 -1
  85. package/build/quote/index.js +1 -1
  86. package/build/quote/index.js.map +1 -1
  87. package/build/quote/save.js +2 -2
  88. package/build/quote/save.js.map +1 -1
  89. package/build/read-more/edit.js.map +1 -1
  90. package/build/search/edit.js +1 -1
  91. package/build/search/edit.js.map +1 -1
  92. package/build/search/edit.native.js.map +1 -1
  93. package/build/site-logo/edit.js +7 -2
  94. package/build/site-logo/edit.js.map +1 -1
  95. package/build/site-title/{edit/index.js → edit.js} +1 -1
  96. package/build/site-title/edit.js.map +1 -0
  97. package/build/social-link/edit.js.map +1 -1
  98. package/build/social-links/edit.native.js.map +1 -1
  99. package/build/spacer/edit.js.map +1 -1
  100. package/build/table-of-contents/edit.js.map +1 -1
  101. package/build/template-part/edit/index.js +53 -1
  102. package/build/template-part/edit/index.js.map +1 -1
  103. package/build/template-part/edit/selection-modal.js +2 -8
  104. package/build/template-part/edit/selection-modal.js.map +1 -1
  105. package/build/template-part/edit/utils/map-template-part-to-block-pattern.js +30 -0
  106. package/build/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
  107. package/build/utils/caption.js +15 -5
  108. package/build/utils/caption.js.map +1 -1
  109. package/build/utils/get-transformed-metadata.js +57 -0
  110. package/build/utils/get-transformed-metadata.js.map +1 -0
  111. package/build/utils/hooks.js +55 -4
  112. package/build/utils/hooks.js.map +1 -1
  113. package/build/video/edit-common-settings.js.map +1 -1
  114. package/build/video/edit.js +7 -16
  115. package/build/video/edit.js.map +1 -1
  116. package/build/video/edit.native.js +2 -7
  117. package/build/video/edit.native.js.map +1 -1
  118. package/build-module/audio/edit.js +10 -20
  119. package/build-module/audio/edit.js.map +1 -1
  120. package/build-module/audio/edit.native.js.map +1 -1
  121. package/build-module/avatar/edit.js.map +1 -1
  122. package/build-module/block/deprecated.js +71 -11
  123. package/build-module/block/deprecated.js.map +1 -1
  124. package/build-module/block/edit.js +49 -24
  125. package/build-module/block/edit.js.map +1 -1
  126. package/build-module/button/edit.js +3 -3
  127. package/build-module/button/edit.js.map +1 -1
  128. package/build-module/buttons/edit.native.js.map +1 -1
  129. package/build-module/buttons/transforms.js +16 -2
  130. package/build-module/buttons/transforms.js.map +1 -1
  131. package/build-module/code/transforms.js +17 -6
  132. package/build-module/code/transforms.js.map +1 -1
  133. package/build-module/columns/edit.js +3 -2
  134. package/build-module/columns/edit.js.map +1 -1
  135. package/build-module/comment-author-avatar/edit.js +1 -1
  136. package/build-module/comment-author-avatar/edit.js.map +1 -1
  137. package/build-module/cover/edit/block-controls.js +15 -4
  138. package/build-module/cover/edit/block-controls.js.map +1 -1
  139. package/build-module/cover/edit/index.js.map +1 -1
  140. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  141. package/build-module/cover/edit/resizable-cover-popover.js +1 -7
  142. package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
  143. package/build-module/cover/edit.native.js.map +1 -1
  144. package/build-module/file/deprecated.js.map +1 -1
  145. package/build-module/file/edit.js +7 -14
  146. package/build-module/file/edit.js.map +1 -1
  147. package/build-module/file/edit.native.js.map +1 -1
  148. package/build-module/file/save.js.map +1 -1
  149. package/build-module/form-input/edit.js +1 -1
  150. package/build-module/form-input/edit.js.map +1 -1
  151. package/build-module/gallery/edit.js.map +1 -1
  152. package/build-module/gallery/gallery.native.js.map +1 -1
  153. package/build-module/gallery/v1/edit.js.map +1 -1
  154. package/build-module/gallery/v1/gallery.native.js.map +1 -1
  155. package/build-module/heading/transforms.js +17 -4
  156. package/build-module/heading/transforms.js.map +1 -1
  157. package/build-module/image/edit.js +9 -5
  158. package/build-module/image/edit.js.map +1 -1
  159. package/build-module/image/edit.native.js.map +1 -1
  160. package/build-module/image/image.js +23 -9
  161. package/build-module/image/image.js.map +1 -1
  162. package/build-module/latest-posts/edit.native.js.map +1 -1
  163. package/build-module/list/ordered-list-settings.js +1 -1
  164. package/build-module/list/ordered-list-settings.js.map +1 -1
  165. package/build-module/list-item/edit.js +2 -4
  166. package/build-module/list-item/edit.js.map +1 -1
  167. package/build-module/list-item/edit.native.js.map +1 -1
  168. package/build-module/list-item/hooks/index.js +0 -1
  169. package/build-module/list-item/hooks/index.js.map +1 -1
  170. package/build-module/list-item/hooks/use-indent-list-item.js +1 -0
  171. package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
  172. package/build-module/list-item/hooks/use-outdent-list-item.js +1 -0
  173. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  174. package/build-module/list-item/hooks/use-space.js +17 -8
  175. package/build-module/list-item/hooks/use-space.js.map +1 -1
  176. package/build-module/list-item/index.js +4 -1
  177. package/build-module/list-item/index.js.map +1 -1
  178. package/build-module/media-text/media-container.native.js +1 -1
  179. package/build-module/media-text/media-container.native.js.map +1 -1
  180. package/build-module/navigation/edit/index.js.map +1 -1
  181. package/build-module/navigation-link/link-ui.js.map +1 -1
  182. package/build-module/paragraph/edit.native.js.map +1 -1
  183. package/build-module/pattern/edit.js +11 -0
  184. package/build-module/pattern/edit.js.map +1 -1
  185. package/build-module/post-excerpt/edit.js.map +1 -1
  186. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  187. package/build-module/post-featured-image/edit.js +9 -12
  188. package/build-module/post-featured-image/edit.js.map +1 -1
  189. package/build-module/post-navigation-link/edit.js.map +1 -1
  190. package/build-module/post-title/edit.js +2 -2
  191. package/build-module/post-title/edit.js.map +1 -1
  192. package/build-module/query/edit/pattern-selection-modal.js.map +1 -1
  193. package/build-module/query/utils.js +7 -5
  194. package/build-module/query/utils.js.map +1 -1
  195. package/build-module/query-pagination-next/edit.js.map +1 -1
  196. package/build-module/query-pagination-previous/edit.js.map +1 -1
  197. package/build-module/quote/deprecated.js +112 -13
  198. package/build-module/quote/deprecated.js.map +1 -1
  199. package/build-module/quote/edit.js +5 -5
  200. package/build-module/quote/edit.js.map +1 -1
  201. package/build-module/quote/index.js +1 -1
  202. package/build-module/quote/index.js.map +1 -1
  203. package/build-module/quote/save.js +2 -2
  204. package/build-module/quote/save.js.map +1 -1
  205. package/build-module/read-more/edit.js.map +1 -1
  206. package/build-module/search/edit.js +1 -1
  207. package/build-module/search/edit.js.map +1 -1
  208. package/build-module/search/edit.native.js.map +1 -1
  209. package/build-module/site-logo/edit.js +7 -2
  210. package/build-module/site-logo/edit.js.map +1 -1
  211. package/build-module/site-title/{edit/index.js → edit.js} +1 -1
  212. package/build-module/site-title/edit.js.map +1 -0
  213. package/build-module/social-link/edit.js.map +1 -1
  214. package/build-module/social-links/edit.native.js.map +1 -1
  215. package/build-module/spacer/edit.js.map +1 -1
  216. package/build-module/table-of-contents/edit.js.map +1 -1
  217. package/build-module/template-part/edit/index.js +57 -5
  218. package/build-module/template-part/edit/index.js.map +1 -1
  219. package/build-module/template-part/edit/selection-modal.js +2 -8
  220. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  221. package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js +24 -0
  222. package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
  223. package/build-module/utils/caption.js +13 -3
  224. package/build-module/utils/caption.js.map +1 -1
  225. package/build-module/utils/get-transformed-metadata.js +51 -0
  226. package/build-module/utils/get-transformed-metadata.js.map +1 -0
  227. package/build-module/utils/hooks.js +54 -3
  228. package/build-module/utils/hooks.js.map +1 -1
  229. package/build-module/video/edit-common-settings.js.map +1 -1
  230. package/build-module/video/edit.js +10 -19
  231. package/build-module/video/edit.js.map +1 -1
  232. package/build-module/video/edit.native.js +2 -7
  233. package/build-module/video/edit.native.js.map +1 -1
  234. package/build-style/common-rtl.css +1 -0
  235. package/build-style/common.css +1 -0
  236. package/build-style/cover/style-rtl.css +2 -1
  237. package/build-style/cover/style.css +2 -1
  238. package/build-style/editor-rtl.css +4 -1
  239. package/build-style/editor.css +4 -1
  240. package/build-style/group/editor-rtl.css +1 -1
  241. package/build-style/group/editor.css +1 -1
  242. package/build-style/image/editor-rtl.css +3 -0
  243. package/build-style/image/editor.css +3 -0
  244. package/build-style/search/style-rtl.css +2 -0
  245. package/build-style/search/style.css +2 -0
  246. package/build-style/style-rtl.css +4 -1
  247. package/build-style/style.css +4 -1
  248. package/package.json +34 -34
  249. package/src/audio/edit.js +9 -19
  250. package/src/audio/edit.native.js +3 -3
  251. package/src/avatar/edit.js +1 -1
  252. package/src/block/deprecated.js +76 -11
  253. package/src/block/edit.js +64 -19
  254. package/src/block/index.php +23 -12
  255. package/src/button/edit.js +4 -3
  256. package/src/buttons/edit.native.js +1 -1
  257. package/src/buttons/transforms.js +14 -4
  258. package/src/calendar/index.php +5 -0
  259. package/src/code/transforms.js +20 -5
  260. package/src/columns/edit.js +3 -2
  261. package/src/comment-author-avatar/edit.js +1 -1
  262. package/src/comments/index.php +2 -0
  263. package/src/cover/edit/block-controls.js +16 -2
  264. package/src/cover/edit/index.js +2 -2
  265. package/src/cover/edit/inspector-controls.js +1 -1
  266. package/src/cover/edit/resizable-cover-popover.js +1 -6
  267. package/src/cover/edit.native.js +1 -1
  268. package/src/cover/style.scss +3 -2
  269. package/src/file/deprecated.js +3 -3
  270. package/src/file/edit.js +8 -15
  271. package/src/file/edit.native.js +4 -4
  272. package/src/file/save.js +1 -1
  273. package/src/footnotes/index.php +1 -1
  274. package/src/form-input/edit.js +1 -1
  275. package/src/gallery/edit.js +3 -3
  276. package/src/gallery/gallery.native.js +1 -1
  277. package/src/gallery/test/index.native.js +1 -1
  278. package/src/gallery/v1/edit.js +2 -2
  279. package/src/gallery/v1/gallery.native.js +1 -1
  280. package/src/group/editor.scss +1 -1
  281. package/src/heading/transforms.js +27 -8
  282. package/src/image/edit.js +13 -5
  283. package/src/image/edit.native.js +1 -1
  284. package/src/image/editor.scss +6 -0
  285. package/src/image/image.js +34 -22
  286. package/src/latest-posts/edit.native.js +1 -1
  287. package/src/list/ordered-list-settings.js +1 -1
  288. package/src/list-item/edit.js +1 -2
  289. package/src/list-item/edit.native.js +1 -1
  290. package/src/list-item/hooks/index.js +0 -1
  291. package/src/list-item/hooks/use-indent-list-item.js +2 -0
  292. package/src/list-item/hooks/use-outdent-list-item.js +2 -0
  293. package/src/list-item/hooks/use-space.js +16 -9
  294. package/src/list-item/index.js +3 -0
  295. package/src/media-text/media-container.native.js +5 -3
  296. package/src/media-text/test/edit.native.js +58 -0
  297. package/src/missing/test/edit-integration.native.js +2 -1
  298. package/src/navigation/edit/index.js +1 -1
  299. package/src/navigation/edit/test/navigation-menu-selector.js +3 -3
  300. package/src/navigation/index.php +26 -17
  301. package/src/navigation-link/link-ui.js +2 -2
  302. package/src/paragraph/edit.native.js +1 -1
  303. package/src/paragraph/test/edit.native.js +36 -0
  304. package/src/pattern/edit.js +14 -0
  305. package/src/post-excerpt/edit.js +1 -1
  306. package/src/post-featured-image/dimension-controls.js +4 -4
  307. package/src/post-featured-image/edit.js +10 -12
  308. package/src/post-navigation-link/edit.js +1 -1
  309. package/src/post-template/index.php +2 -0
  310. package/src/post-title/edit.js +49 -43
  311. package/src/query/edit/pattern-selection-modal.js +1 -1
  312. package/src/query/utils.js +6 -4
  313. package/src/query-pagination-next/edit.js +1 -1
  314. package/src/query-pagination-previous/edit.js +1 -1
  315. package/src/quote/block.json +1 -1
  316. package/src/quote/deprecated.js +110 -15
  317. package/src/quote/edit.js +5 -5
  318. package/src/quote/save.js +2 -2
  319. package/src/quote/test/__snapshots__/transforms.native.js.snap +2 -2
  320. package/src/read-more/edit.js +1 -1
  321. package/src/search/edit.js +1 -1
  322. package/src/search/edit.native.js +4 -4
  323. package/src/search/index.php +1 -1
  324. package/src/search/style.scss +2 -0
  325. package/src/site-logo/edit.js +11 -6
  326. package/src/social-link/edit.js +1 -1
  327. package/src/social-links/edit.native.js +1 -1
  328. package/src/spacer/edit.js +1 -1
  329. package/src/table-of-contents/edit.js +1 -1
  330. package/src/template-part/edit/index.js +91 -4
  331. package/src/template-part/edit/selection-modal.js +4 -8
  332. package/src/template-part/edit/utils/map-template-part-to-block-pattern.js +23 -0
  333. package/src/utils/caption.js +10 -1
  334. package/src/utils/get-transformed-metadata.js +65 -0
  335. package/src/utils/hooks.js +53 -3
  336. package/src/video/edit-common-settings.js +1 -1
  337. package/src/video/edit.js +10 -18
  338. package/src/video/edit.native.js +5 -8
  339. package/src/video/test/edit.native.js +0 -14
  340. package/build/list-item/hooks/use-copy.js +0 -39
  341. package/build/list-item/hooks/use-copy.js.map +0 -1
  342. package/build/site-title/edit/index.js.map +0 -1
  343. package/build-module/list-item/hooks/use-copy.js +0 -32
  344. package/build-module/list-item/hooks/use-copy.js.map +0 -1
  345. package/build-module/site-title/edit/index.js.map +0 -1
  346. package/src/list-item/hooks/use-copy.js +0 -38
  347. /package/src/site-title/{edit/index.js → edit.js} +0 -0
@@ -0,0 +1,65 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { getBlockType } from '@wordpress/blocks';
5
+
6
+ /**
7
+ * Transform the metadata attribute with only the values and bindings specified by each transform.
8
+ * Returns `undefined` if the input metadata is falsy.
9
+ *
10
+ * @param {Object} metadata Original metadata attribute from the block that is being transformed.
11
+ * @param {Object} newBlockName Name of the final block after the transformation.
12
+ * @param {Function} bindingsCallback Optional callback to transform the `bindings` property object.
13
+ * @return {Object|undefined} New metadata object only with the relevant properties.
14
+ */
15
+ export function getTransformedMetadata(
16
+ metadata,
17
+ newBlockName,
18
+ bindingsCallback
19
+ ) {
20
+ if ( ! metadata ) {
21
+ return;
22
+ }
23
+ const { supports } = getBlockType( newBlockName );
24
+ // Fixed until an opt-in mechanism is implemented.
25
+ const BLOCK_BINDINGS_SUPPORTED_BLOCKS = [
26
+ 'core/paragraph',
27
+ 'core/heading',
28
+ 'core/image',
29
+ 'core/button',
30
+ ];
31
+ // The metadata properties that should be preserved after the transform.
32
+ const transformSupportedProps = [];
33
+ // If it support bindings, and there is a transform bindings callback, add the `id` and `bindings` properties.
34
+ if (
35
+ BLOCK_BINDINGS_SUPPORTED_BLOCKS.includes( newBlockName ) &&
36
+ bindingsCallback
37
+ ) {
38
+ transformSupportedProps.push( 'id', 'bindings' );
39
+ }
40
+ // If it support block naming (true by default), add the `name` property.
41
+ if ( supports.renaming !== false ) {
42
+ transformSupportedProps.push( 'name' );
43
+ }
44
+
45
+ // Return early if no supported properties.
46
+ if ( ! transformSupportedProps.length ) {
47
+ return;
48
+ }
49
+
50
+ const newMetadata = Object.entries( metadata ).reduce(
51
+ ( obj, [ prop, value ] ) => {
52
+ // If prop is not supported, don't add it to the new metadata object.
53
+ if ( ! transformSupportedProps.includes( prop ) ) {
54
+ return obj;
55
+ }
56
+ obj[ prop ] =
57
+ prop === 'bindings' ? bindingsCallback( value ) : value;
58
+ return obj;
59
+ },
60
+ {}
61
+ );
62
+
63
+ // Return undefined if object is empty.
64
+ return Object.keys( newMetadata ).length ? newMetadata : undefined;
65
+ }
@@ -2,6 +2,9 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { useSelect } from '@wordpress/data';
5
+ import { useLayoutEffect, useEffect, useRef } from '@wordpress/element';
6
+ import { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';
7
+ import { store as blockEditorStore } from '@wordpress/block-editor';
5
8
  import { store as coreStore } from '@wordpress/core-data';
6
9
 
7
10
  /**
@@ -19,6 +22,53 @@ export function useCanEditEntity( kind, name, recordId ) {
19
22
  );
20
23
  }
21
24
 
22
- export default {
23
- useCanEditEntity,
24
- };
25
+ /**
26
+ * Handles uploading a media file from a blob URL on mount.
27
+ *
28
+ * @param {Object} args Upload media arguments.
29
+ * @param {string} args.url Blob URL.
30
+ * @param {?Array} args.allowedTypes Array of allowed media types.
31
+ * @param {Function} args.onChange Function called when the media is uploaded.
32
+ * @param {Function} args.onError Function called when an error happens.
33
+ */
34
+ export function useUploadMediaFromBlobURL( args = {} ) {
35
+ const latestArgs = useRef( args );
36
+ const { getSettings } = useSelect( blockEditorStore );
37
+
38
+ useLayoutEffect( () => {
39
+ latestArgs.current = args;
40
+ } );
41
+
42
+ useEffect( () => {
43
+ if (
44
+ ! latestArgs.current.url ||
45
+ ! isBlobURL( latestArgs.current.url )
46
+ ) {
47
+ return;
48
+ }
49
+
50
+ const file = getBlobByURL( latestArgs.current.url );
51
+ if ( ! file ) {
52
+ return;
53
+ }
54
+
55
+ const { url, allowedTypes, onChange, onError } = latestArgs.current;
56
+ const { mediaUpload } = getSettings();
57
+
58
+ mediaUpload( {
59
+ filesList: [ file ],
60
+ allowedTypes,
61
+ onFileChange: ( [ media ] ) => {
62
+ if ( isBlobURL( media?.url ) ) {
63
+ return;
64
+ }
65
+
66
+ revokeBlobURL( url );
67
+ onChange( media );
68
+ },
69
+ onError: ( message ) => {
70
+ onError( message );
71
+ },
72
+ } );
73
+ }, [ getSettings ] );
74
+ }
@@ -84,7 +84,7 @@ const VideoSettings = ( { setAttributes, attributes } ) => {
84
84
  value={ preload }
85
85
  onChange={ onChangePreload }
86
86
  options={ options }
87
- hideCancelButton={ true }
87
+ hideCancelButton
88
88
  />
89
89
  </>
90
90
  );
package/src/video/edit.js CHANGED
@@ -6,7 +6,7 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { getBlobByURL, isBlobURL } from '@wordpress/blob';
9
+ import { isBlobURL } from '@wordpress/blob';
10
10
  import {
11
11
  BaseControl,
12
12
  Button,
@@ -24,12 +24,11 @@ import {
24
24
  MediaUploadCheck,
25
25
  MediaReplaceFlow,
26
26
  useBlockProps,
27
- store as blockEditorStore,
28
27
  } from '@wordpress/block-editor';
29
28
  import { useRef, useEffect } from '@wordpress/element';
30
29
  import { __, sprintf } from '@wordpress/i18n';
31
30
  import { useInstanceId } from '@wordpress/compose';
32
- import { useDispatch, useSelect } from '@wordpress/data';
31
+ import { useDispatch } from '@wordpress/data';
33
32
  import { video as icon } from '@wordpress/icons';
34
33
  import { store as noticesStore } from '@wordpress/notices';
35
34
 
@@ -37,6 +36,7 @@ import { store as noticesStore } from '@wordpress/notices';
37
36
  * Internal dependencies
38
37
  */
39
38
  import { createUpgradedEmbedBlock } from '../embed/util';
39
+ import { useUploadMediaFromBlobURL } from '../utils/hooks';
40
40
  import VideoCommonSettings from './edit-common-settings';
41
41
  import TracksEditor from './tracks-editor';
42
42
  import Tracks from './tracks';
@@ -47,7 +47,7 @@ const placeholder = ( content ) => {
47
47
  return (
48
48
  <Placeholder
49
49
  className="block-editor-media-placeholder"
50
- withIllustration={ true }
50
+ withIllustration
51
51
  icon={ icon }
52
52
  label={ __( 'Video' ) }
53
53
  instructions={ __(
@@ -75,21 +75,13 @@ function VideoEdit( {
75
75
  const posterImageButton = useRef();
76
76
  const { id, controls, poster, src, tracks } = attributes;
77
77
  const isTemporaryVideo = ! id && isBlobURL( src );
78
- const { getSettings } = useSelect( blockEditorStore );
79
78
 
80
- useEffect( () => {
81
- if ( ! id && isBlobURL( src ) ) {
82
- const file = getBlobByURL( src );
83
- if ( file ) {
84
- getSettings().mediaUpload( {
85
- filesList: [ file ],
86
- onFileChange: ( [ media ] ) => onSelectVideo( media ),
87
- onError: onUploadError,
88
- allowedTypes: ALLOWED_MEDIA_TYPES,
89
- } );
90
- }
91
- }
92
- }, [] );
79
+ useUploadMediaFromBlobURL( {
80
+ url: src,
81
+ allowedTypes: ALLOWED_MEDIA_TYPES,
82
+ onChange: onSelectVideo,
83
+ onError: onUploadError,
84
+ } );
93
85
 
94
86
  useEffect( () => {
95
87
  // Placeholder may be rendered.
@@ -212,13 +212,13 @@ class VideoEdit extends Component {
212
212
  render() {
213
213
  const { setAttributes, attributes, isSelected, wasBlockJustInserted } =
214
214
  this.props;
215
- const { id, src, guid } = attributes;
215
+ const { id, src } = attributes;
216
216
  const { videoContainerHeight } = this.state;
217
217
 
218
218
  const toolbarEditButton = (
219
219
  <MediaUpload
220
220
  allowedTypes={ [ MEDIA_TYPE_VIDEO ] }
221
- isReplacingMedia={ true }
221
+ isReplacingMedia
222
222
  onSelect={ this.onSelectMediaUploadOption }
223
223
  onSelectURL={ this.onSelectURL }
224
224
  render={ ( { open, getMediaOptions } ) => {
@@ -236,10 +236,7 @@ class VideoEdit extends Component {
236
236
  ></MediaUpload>
237
237
  );
238
238
 
239
- // NOTE: `guid` is not part of the block's attribute definition. This case
240
- // handled here is a temporary fix until a we find a better approach.
241
- const isSourcePresent = src || ( guid && id );
242
- if ( ! isSourcePresent ) {
239
+ if ( ! src ) {
243
240
  return (
244
241
  <View style={ { flex: 1 } }>
245
242
  <MediaPlaceholder
@@ -335,7 +332,7 @@ class VideoEdit extends Component {
335
332
  }
336
333
  style={ videoStyle }
337
334
  source={ { uri: src } }
338
- paused={ true }
335
+ paused
339
336
  />
340
337
  </View>
341
338
  ) }
@@ -368,7 +365,7 @@ class VideoEdit extends Component {
368
365
  } }
369
366
  />
370
367
  <BlockCaption
371
- accessible={ true }
368
+ accessible
372
369
  accessibilityLabelCreator={ ( caption ) =>
373
370
  RichText.isEmpty( caption )
374
371
  ? /* translators: accessibility text. Empty video caption. */
@@ -44,20 +44,6 @@ describe( 'Video block', () => {
44
44
  initialHtml: `
45
45
  <!-- wp:video {"id":1234} -->
46
46
  <figure class="wp-block-video"><video controls src="https://VIDEO_URL.mp4"></video></figure>
47
- <!-- /wp:video -->
48
- `,
49
- } );
50
- const addVideoButton = screen.queryByText( 'Add video' );
51
- expect( addVideoButton ).toBeNull();
52
- } );
53
-
54
- it( `should not render empty state when 'guid' and 'id' attributes are present`, async () => {
55
- await initializeEditor( {
56
- initialHtml: `
57
- <!-- wp:video {"guid":"ABCD1234","id":1234 -->
58
- <figure class="wp-block-video wp-block-embed is-type-video is-provider-videopress"><div class="wp-block-embed__wrapper">
59
- https://videopress.com/<VIDEO_ID>
60
- </div></figure>
61
47
  <!-- /wp:video -->
62
48
  `,
63
49
  } );
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = useCopy;
7
- var _compose = require("@wordpress/compose");
8
- var _blockEditor = require("@wordpress/block-editor");
9
- var _data = require("@wordpress/data");
10
- /**
11
- * WordPress dependencies
12
- */
13
-
14
- function useCopy(clientId) {
15
- const {
16
- getBlockRootClientId,
17
- getBlockName,
18
- getBlockAttributes
19
- } = (0, _data.useSelect)(_blockEditor.store);
20
- return (0, _compose.useRefEffect)(node => {
21
- function onCopy(event) {
22
- // The event propagates through all nested lists, so don't override
23
- // when copying nested list items.
24
- if (event.clipboardData.getData('__unstableWrapperBlockName')) {
25
- return;
26
- }
27
- const rootClientId = getBlockRootClientId(clientId);
28
- event.clipboardData.setData('__unstableWrapperBlockName', getBlockName(rootClientId));
29
- event.clipboardData.setData('__unstableWrapperBlockAttributes', JSON.stringify(getBlockAttributes(rootClientId)));
30
- }
31
- node.addEventListener('copy', onCopy);
32
- node.addEventListener('cut', onCopy);
33
- return () => {
34
- node.removeEventListener('copy', onCopy);
35
- node.removeEventListener('cut', onCopy);
36
- };
37
- }, []);
38
- }
39
- //# sourceMappingURL=use-copy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_compose","require","_blockEditor","_data","useCopy","clientId","getBlockRootClientId","getBlockName","getBlockAttributes","useSelect","blockEditorStore","useRefEffect","node","onCopy","event","clipboardData","getData","rootClientId","setData","JSON","stringify","addEventListener","removeEventListener"],"sources":["@wordpress/block-library/src/list-item/hooks/use-copy.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\nexport default function useCopy( clientId ) {\n\tconst { getBlockRootClientId, getBlockName, getBlockAttributes } =\n\t\tuseSelect( blockEditorStore );\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction onCopy( event ) {\n\t\t\t// The event propagates through all nested lists, so don't override\n\t\t\t// when copying nested list items.\n\t\t\tif ( event.clipboardData.getData( '__unstableWrapperBlockName' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockName',\n\t\t\t\tgetBlockName( rootClientId )\n\t\t\t);\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockAttributes',\n\t\t\t\tJSON.stringify( getBlockAttributes( rootClientId ) )\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'copy', onCopy );\n\t\tnode.addEventListener( 'cut', onCopy );\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'copy', onCopy );\n\t\t\tnode.removeEventListener( 'cut', onCopy );\n\t\t};\n\t}, [] );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAKe,SAASG,OAAOA,CAAEC,QAAQ,EAAG;EAC3C,MAAM;IAAEC,oBAAoB;IAAEC,YAAY;IAAEC;EAAmB,CAAC,GAC/D,IAAAC,eAAS,EAAEC,kBAAiB,CAAC;EAE9B,OAAO,IAAAC,qBAAY,EAAIC,IAAI,IAAM;IAChC,SAASC,MAAMA,CAAEC,KAAK,EAAG;MACxB;MACA;MACA,IAAKA,KAAK,CAACC,aAAa,CAACC,OAAO,CAAE,4BAA6B,CAAC,EAAG;QAClE;MACD;MAEA,MAAMC,YAAY,GAAGX,oBAAoB,CAAED,QAAS,CAAC;MACrDS,KAAK,CAACC,aAAa,CAACG,OAAO,CAC1B,4BAA4B,EAC5BX,YAAY,CAAEU,YAAa,CAC5B,CAAC;MACDH,KAAK,CAACC,aAAa,CAACG,OAAO,CAC1B,kCAAkC,EAClCC,IAAI,CAACC,SAAS,CAAEZ,kBAAkB,CAAES,YAAa,CAAE,CACpD,CAAC;IACF;IAEAL,IAAI,CAACS,gBAAgB,CAAE,MAAM,EAAER,MAAO,CAAC;IACvCD,IAAI,CAACS,gBAAgB,CAAE,KAAK,EAAER,MAAO,CAAC;IACtC,OAAO,MAAM;MACZD,IAAI,CAACU,mBAAmB,CAAE,MAAM,EAAET,MAAO,CAAC;MAC1CD,IAAI,CAACU,mBAAmB,CAAE,KAAK,EAAET,MAAO,CAAC;IAC1C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_classnames","_interopRequireDefault","require","_data","_coreData","_i18n","_blockEditor","_components","_blocks","_htmlEntities","HEADING_LEVELS","SiteTitleEdit","attributes","setAttributes","insertBlocksAfter","level","textAlign","isLink","linkTarget","canUserEdit","title","useSelect","select","canUser","getEntityRecord","getEditedEntityRecord","coreStore","canEdit","settings","readOnlySettings","name","editEntityRecord","useDispatch","setTitle","newTitle","undefined","TagName","blockProps","useBlockProps","className","classnames","siteTitleContent","_react","createElement","RichText","tagName","href","__","placeholder","value","onChange","allowedFormats","disableLineBreaks","__unstableOnSplitAtEnd","createBlock","getDefaultBlockName","onClick","event","preventDefault","decodeEntities","Fragment","BlockControls","group","HeadingLevelDropdown","options","newLevel","AlignmentControl","nextAlign","InspectorControls","PanelBody","ToggleControl","__nextHasNoMarginBottom","label","checked"],"sources":["@wordpress/block-library/src/site-title/edit/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tRichText,\n\tAlignmentControl,\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockProps,\n\tHeadingLevelDropdown,\n} from '@wordpress/block-editor';\nimport { ToggleControl, PanelBody } from '@wordpress/components';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst HEADING_LEVELS = [ 0, 1, 2, 3, 4, 5, 6 ];\n\nexport default function SiteTitleEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { level, textAlign, isLink, linkTarget } = attributes;\n\tconst { canUserEdit, title } = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEditedEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst canEdit = canUser( 'update', 'settings' );\n\t\tconst settings = canEdit ? getEditedEntityRecord( 'root', 'site' ) : {};\n\t\tconst readOnlySettings = getEntityRecord( 'root', '__unstableBase' );\n\n\t\treturn {\n\t\t\tcanUserEdit: canEdit,\n\t\t\ttitle: canEdit ? settings?.title : readOnlySettings?.name,\n\t\t};\n\t}, [] );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tfunction setTitle( newTitle ) {\n\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\ttitle: newTitle,\n\t\t} );\n\t}\n\n\tconst TagName = level === 0 ? 'p' : `h${ level }`;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t'wp-block-site-title__placeholder': ! canUserEdit && ! title,\n\t\t} ),\n\t} );\n\tconst siteTitleContent = canUserEdit ? (\n\t\t<TagName { ...blockProps }>\n\t\t\t<RichText\n\t\t\t\ttagName={ isLink ? 'a' : 'span' }\n\t\t\t\thref={ isLink ? '#site-title-pseudo-link' : undefined }\n\t\t\t\taria-label={ __( 'Site title text' ) }\n\t\t\t\tplaceholder={ __( 'Write site title…' ) }\n\t\t\t\tvalue={ title }\n\t\t\t\tonChange={ setTitle }\n\t\t\t\tallowedFormats={ [] }\n\t\t\t\tdisableLineBreaks\n\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t\t}\n\t\t\t/>\n\t\t</TagName>\n\t) : (\n\t\t<TagName { ...blockProps }>\n\t\t\t{ isLink ? (\n\t\t\t\t<a\n\t\t\t\t\thref=\"#site-title-pseudo-link\"\n\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t>\n\t\t\t\t\t{ decodeEntities( title ) ||\n\t\t\t\t\t\t__( 'Site Title placeholder' ) }\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<span>\n\t\t\t\t\t{ decodeEntities( title ) ||\n\t\t\t\t\t\t__( 'Site Title placeholder' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</TagName>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\toptions={ HEADING_LEVELS }\n\t\t\t\t\tvalue={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Make title link to home' ) }\n\t\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ siteTitleContent }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useRefEffect } from '@wordpress/compose';
5
- import { store as blockEditorStore } from '@wordpress/block-editor';
6
- import { useSelect } from '@wordpress/data';
7
- export default function useCopy(clientId) {
8
- const {
9
- getBlockRootClientId,
10
- getBlockName,
11
- getBlockAttributes
12
- } = useSelect(blockEditorStore);
13
- return useRefEffect(node => {
14
- function onCopy(event) {
15
- // The event propagates through all nested lists, so don't override
16
- // when copying nested list items.
17
- if (event.clipboardData.getData('__unstableWrapperBlockName')) {
18
- return;
19
- }
20
- const rootClientId = getBlockRootClientId(clientId);
21
- event.clipboardData.setData('__unstableWrapperBlockName', getBlockName(rootClientId));
22
- event.clipboardData.setData('__unstableWrapperBlockAttributes', JSON.stringify(getBlockAttributes(rootClientId)));
23
- }
24
- node.addEventListener('copy', onCopy);
25
- node.addEventListener('cut', onCopy);
26
- return () => {
27
- node.removeEventListener('copy', onCopy);
28
- node.removeEventListener('cut', onCopy);
29
- };
30
- }, []);
31
- }
32
- //# sourceMappingURL=use-copy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useRefEffect","store","blockEditorStore","useSelect","useCopy","clientId","getBlockRootClientId","getBlockName","getBlockAttributes","node","onCopy","event","clipboardData","getData","rootClientId","setData","JSON","stringify","addEventListener","removeEventListener"],"sources":["@wordpress/block-library/src/list-item/hooks/use-copy.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\nexport default function useCopy( clientId ) {\n\tconst { getBlockRootClientId, getBlockName, getBlockAttributes } =\n\t\tuseSelect( blockEditorStore );\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction onCopy( event ) {\n\t\t\t// The event propagates through all nested lists, so don't override\n\t\t\t// when copying nested list items.\n\t\t\tif ( event.clipboardData.getData( '__unstableWrapperBlockName' ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockName',\n\t\t\t\tgetBlockName( rootClientId )\n\t\t\t);\n\t\t\tevent.clipboardData.setData(\n\t\t\t\t'__unstableWrapperBlockAttributes',\n\t\t\t\tJSON.stringify( getBlockAttributes( rootClientId ) )\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'copy', onCopy );\n\t\tnode.addEventListener( 'cut', onCopy );\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'copy', onCopy );\n\t\t\tnode.removeEventListener( 'cut', onCopy );\n\t\t};\n\t}, [] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,YAAY,QAAQ,oBAAoB;AACjD,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,yBAAyB;AACnE,SAASC,SAAS,QAAQ,iBAAiB;AAE3C,eAAe,SAASC,OAAOA,CAAEC,QAAQ,EAAG;EAC3C,MAAM;IAAEC,oBAAoB;IAAEC,YAAY;IAAEC;EAAmB,CAAC,GAC/DL,SAAS,CAAED,gBAAiB,CAAC;EAE9B,OAAOF,YAAY,CAAIS,IAAI,IAAM;IAChC,SAASC,MAAMA,CAAEC,KAAK,EAAG;MACxB;MACA;MACA,IAAKA,KAAK,CAACC,aAAa,CAACC,OAAO,CAAE,4BAA6B,CAAC,EAAG;QAClE;MACD;MAEA,MAAMC,YAAY,GAAGR,oBAAoB,CAAED,QAAS,CAAC;MACrDM,KAAK,CAACC,aAAa,CAACG,OAAO,CAC1B,4BAA4B,EAC5BR,YAAY,CAAEO,YAAa,CAC5B,CAAC;MACDH,KAAK,CAACC,aAAa,CAACG,OAAO,CAC1B,kCAAkC,EAClCC,IAAI,CAACC,SAAS,CAAET,kBAAkB,CAAEM,YAAa,CAAE,CACpD,CAAC;IACF;IAEAL,IAAI,CAACS,gBAAgB,CAAE,MAAM,EAAER,MAAO,CAAC;IACvCD,IAAI,CAACS,gBAAgB,CAAE,KAAK,EAAER,MAAO,CAAC;IACtC,OAAO,MAAM;MACZD,IAAI,CAACU,mBAAmB,CAAE,MAAM,EAAET,MAAO,CAAC;MAC1CD,IAAI,CAACU,mBAAmB,CAAE,KAAK,EAAET,MAAO,CAAC;IAC1C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["classnames","useDispatch","useSelect","store","coreStore","__","RichText","AlignmentControl","InspectorControls","BlockControls","useBlockProps","HeadingLevelDropdown","ToggleControl","PanelBody","createBlock","getDefaultBlockName","decodeEntities","HEADING_LEVELS","SiteTitleEdit","attributes","setAttributes","insertBlocksAfter","level","textAlign","isLink","linkTarget","canUserEdit","title","select","canUser","getEntityRecord","getEditedEntityRecord","canEdit","settings","readOnlySettings","name","editEntityRecord","setTitle","newTitle","undefined","TagName","blockProps","className","siteTitleContent","createElement","tagName","href","placeholder","value","onChange","allowedFormats","disableLineBreaks","__unstableOnSplitAtEnd","onClick","event","preventDefault","Fragment","group","options","newLevel","nextAlign","__nextHasNoMarginBottom","label","checked"],"sources":["@wordpress/block-library/src/site-title/edit/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tRichText,\n\tAlignmentControl,\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockProps,\n\tHeadingLevelDropdown,\n} from '@wordpress/block-editor';\nimport { ToggleControl, PanelBody } from '@wordpress/components';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport { decodeEntities } from '@wordpress/html-entities';\n\nconst HEADING_LEVELS = [ 0, 1, 2, 3, 4, 5, 6 ];\n\nexport default function SiteTitleEdit( {\n\tattributes,\n\tsetAttributes,\n\tinsertBlocksAfter,\n} ) {\n\tconst { level, textAlign, isLink, linkTarget } = attributes;\n\tconst { canUserEdit, title } = useSelect( ( select ) => {\n\t\tconst { canUser, getEntityRecord, getEditedEntityRecord } =\n\t\t\tselect( coreStore );\n\t\tconst canEdit = canUser( 'update', 'settings' );\n\t\tconst settings = canEdit ? getEditedEntityRecord( 'root', 'site' ) : {};\n\t\tconst readOnlySettings = getEntityRecord( 'root', '__unstableBase' );\n\n\t\treturn {\n\t\t\tcanUserEdit: canEdit,\n\t\t\ttitle: canEdit ? settings?.title : readOnlySettings?.name,\n\t\t};\n\t}, [] );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tfunction setTitle( newTitle ) {\n\t\teditEntityRecord( 'root', 'site', undefined, {\n\t\t\ttitle: newTitle,\n\t\t} );\n\t}\n\n\tconst TagName = level === 0 ? 'p' : `h${ level }`;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t\t'wp-block-site-title__placeholder': ! canUserEdit && ! title,\n\t\t} ),\n\t} );\n\tconst siteTitleContent = canUserEdit ? (\n\t\t<TagName { ...blockProps }>\n\t\t\t<RichText\n\t\t\t\ttagName={ isLink ? 'a' : 'span' }\n\t\t\t\thref={ isLink ? '#site-title-pseudo-link' : undefined }\n\t\t\t\taria-label={ __( 'Site title text' ) }\n\t\t\t\tplaceholder={ __( 'Write site title…' ) }\n\t\t\t\tvalue={ title }\n\t\t\t\tonChange={ setTitle }\n\t\t\t\tallowedFormats={ [] }\n\t\t\t\tdisableLineBreaks\n\t\t\t\t__unstableOnSplitAtEnd={ () =>\n\t\t\t\t\tinsertBlocksAfter( createBlock( getDefaultBlockName() ) )\n\t\t\t\t}\n\t\t\t/>\n\t\t</TagName>\n\t) : (\n\t\t<TagName { ...blockProps }>\n\t\t\t{ isLink ? (\n\t\t\t\t<a\n\t\t\t\t\thref=\"#site-title-pseudo-link\"\n\t\t\t\t\tonClick={ ( event ) => event.preventDefault() }\n\t\t\t\t>\n\t\t\t\t\t{ decodeEntities( title ) ||\n\t\t\t\t\t\t__( 'Site Title placeholder' ) }\n\t\t\t\t</a>\n\t\t\t) : (\n\t\t\t\t<span>\n\t\t\t\t\t{ decodeEntities( title ) ||\n\t\t\t\t\t\t__( 'Site Title placeholder' ) }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</TagName>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\toptions={ HEADING_LEVELS }\n\t\t\t\t\tvalue={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Make title link to home' ) }\n\t\t\t\t\t\tonChange={ () => setAttributes( { isLink: ! isLink } ) }\n\t\t\t\t\t\tchecked={ isLink }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLink && (\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tlinkTarget: value ? '_blank' : '_self',\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ siteTitleContent }\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { useRefEffect } from '@wordpress/compose';
5
- import { store as blockEditorStore } from '@wordpress/block-editor';
6
- import { useSelect } from '@wordpress/data';
7
-
8
- export default function useCopy( clientId ) {
9
- const { getBlockRootClientId, getBlockName, getBlockAttributes } =
10
- useSelect( blockEditorStore );
11
-
12
- return useRefEffect( ( node ) => {
13
- function onCopy( event ) {
14
- // The event propagates through all nested lists, so don't override
15
- // when copying nested list items.
16
- if ( event.clipboardData.getData( '__unstableWrapperBlockName' ) ) {
17
- return;
18
- }
19
-
20
- const rootClientId = getBlockRootClientId( clientId );
21
- event.clipboardData.setData(
22
- '__unstableWrapperBlockName',
23
- getBlockName( rootClientId )
24
- );
25
- event.clipboardData.setData(
26
- '__unstableWrapperBlockAttributes',
27
- JSON.stringify( getBlockAttributes( rootClientId ) )
28
- );
29
- }
30
-
31
- node.addEventListener( 'copy', onCopy );
32
- node.addEventListener( 'cut', onCopy );
33
- return () => {
34
- node.removeEventListener( 'copy', onCopy );
35
- node.removeEventListener( 'cut', onCopy );
36
- };
37
- }, [] );
38
- }
File without changes