@wordpress/block-library 7.16.0 → 7.18.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 (419) hide show
  1. package/CHANGELOG.md +4 -1
  2. package/build/archives/edit.js +1 -0
  3. package/build/archives/edit.js.map +1 -1
  4. package/build/audio/edit.js +44 -4
  5. package/build/audio/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.native.js +1 -1
  9. package/build/buttons/edit.native.js.map +1 -1
  10. package/build/comment-template/edit.js +40 -32
  11. package/build/comment-template/edit.js.map +1 -1
  12. package/build/comment-template/index.js +6 -2
  13. package/build/comment-template/index.js.map +1 -1
  14. package/build/comments/edit/placeholder.js +1 -4
  15. package/build/comments/edit/placeholder.js.map +1 -1
  16. package/build/comments/index.js +5 -1
  17. package/build/comments/index.js.map +1 -1
  18. package/build/comments-title/edit.js +18 -1
  19. package/build/comments-title/edit.js.map +1 -1
  20. package/build/cover/edit/index.js +2 -2
  21. package/build/cover/edit/index.js.map +1 -1
  22. package/build/cover/edit/inspector-controls.js +3 -7
  23. package/build/cover/edit/inspector-controls.js.map +1 -1
  24. package/build/cover/edit/use-cover-is-dark.js +8 -7
  25. package/build/cover/edit/use-cover-is-dark.js.map +1 -1
  26. package/build/embed/deprecated.js +43 -4
  27. package/build/embed/deprecated.js.map +1 -1
  28. package/build/embed/variations.js +1 -1
  29. package/build/embed/variations.js.map +1 -1
  30. package/build/file/deprecated.js +108 -4
  31. package/build/file/deprecated.js.map +1 -1
  32. package/build/file/transforms.js +3 -9
  33. package/build/file/transforms.js.map +1 -1
  34. package/build/gallery/deprecated.js +148 -23
  35. package/build/gallery/deprecated.js.map +1 -1
  36. package/build/gallery/gallery.js +3 -2
  37. package/build/gallery/gallery.js.map +1 -1
  38. package/build/gallery/transforms.js +3 -3
  39. package/build/gallery/transforms.js.map +1 -1
  40. package/build/gallery/use-image-sizes.js +2 -1
  41. package/build/gallery/use-image-sizes.js.map +1 -1
  42. package/build/gallery/v1/edit.js +3 -2
  43. package/build/gallery/v1/edit.js.map +1 -1
  44. package/build/group/edit.js +7 -3
  45. package/build/group/edit.js.map +1 -1
  46. package/build/image/edit.native.js +1 -1
  47. package/build/image/edit.native.js.map +1 -1
  48. package/build/image/image.js +33 -12
  49. package/build/image/image.js.map +1 -1
  50. package/build/image/transforms.js +1 -7
  51. package/build/image/transforms.js.map +1 -1
  52. package/build/latest-posts/edit.js +1 -1
  53. package/build/latest-posts/edit.js.map +1 -1
  54. package/build/list/transforms.js +9 -1
  55. package/build/list/transforms.js.map +1 -1
  56. package/build/list/utils.js +4 -8
  57. package/build/list/utils.js.map +1 -1
  58. package/build/list-item/edit.js +3 -2
  59. package/build/list-item/edit.js.map +1 -1
  60. package/build/list-item/edit.native.js +3 -2
  61. package/build/list-item/edit.native.js.map +1 -1
  62. package/build/list-item/hooks/use-merge.js +19 -22
  63. package/build/list-item/hooks/use-merge.js.map +1 -1
  64. package/build/list-item/hooks/use-outdent-list-item.js +24 -10
  65. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  66. package/build/list-item/index.js +14 -1
  67. package/build/list-item/index.js.map +1 -1
  68. package/build/list-item/utils.js +14 -1
  69. package/build/list-item/utils.js.map +1 -1
  70. package/build/navigation/edit/index.js +45 -31
  71. package/build/navigation/edit/index.js.map +1 -1
  72. package/build/navigation/edit/inner-blocks.js +3 -5
  73. package/build/navigation/edit/inner-blocks.js.map +1 -1
  74. package/build/navigation/edit/unsaved-inner-blocks.js +3 -1
  75. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  76. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +25 -8
  77. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  78. package/build/navigation/edit/use-create-navigation-menu.js +1 -1
  79. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
  80. package/build/navigation/index.js +4 -1
  81. package/build/navigation/index.js.map +1 -1
  82. package/build/navigation-link/edit.js +5 -3
  83. package/build/navigation-link/edit.js.map +1 -1
  84. package/build/navigation-submenu/edit.js +4 -4
  85. package/build/navigation-submenu/edit.js.map +1 -1
  86. package/build/page-list/edit.js +29 -10
  87. package/build/page-list/edit.js.map +1 -1
  88. package/build/page-list/index.js +1 -5
  89. package/build/page-list/index.js.map +1 -1
  90. package/build/paragraph/edit.js +3 -11
  91. package/build/paragraph/edit.js.map +1 -1
  92. package/build/pattern/edit.js +11 -4
  93. package/build/pattern/edit.js.map +1 -1
  94. package/build/post-comments-count/index.js +4 -0
  95. package/build/post-comments-count/index.js.map +1 -1
  96. package/build/post-comments-form/form.js +1 -2
  97. package/build/post-comments-form/form.js.map +1 -1
  98. package/build/post-comments-form/index.js +4 -0
  99. package/build/post-comments-form/index.js.map +1 -1
  100. package/build/post-comments-link/index.js +4 -0
  101. package/build/post-comments-link/index.js.map +1 -1
  102. package/build/post-content/edit.js +14 -6
  103. package/build/post-content/edit.js.map +1 -1
  104. package/build/pullquote/deprecated.js +6 -6
  105. package/build/pullquote/deprecated.js.map +1 -1
  106. package/build/query/edit/inspector-controls/index.js +2 -2
  107. package/build/query/edit/inspector-controls/index.js.map +1 -1
  108. package/build/query/edit/inspector-controls/taxonomy-controls.js +79 -104
  109. package/build/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
  110. package/build/search/edit.js +3 -4
  111. package/build/search/edit.js.map +1 -1
  112. package/build/site-logo/edit.js +7 -10
  113. package/build/site-logo/edit.js.map +1 -1
  114. package/build/site-tagline/edit.js +21 -9
  115. package/build/site-tagline/edit.js.map +1 -1
  116. package/build/site-title/edit/index.js +20 -8
  117. package/build/site-title/edit/index.js.map +1 -1
  118. package/build/social-link/edit.js +11 -2
  119. package/build/social-link/edit.js.map +1 -1
  120. package/build/social-link/index.js +3 -0
  121. package/build/social-link/index.js.map +1 -1
  122. package/build/spacer/controls.js +3 -7
  123. package/build/spacer/controls.js.map +1 -1
  124. package/build/table/deprecated.js +282 -27
  125. package/build/table/deprecated.js.map +1 -1
  126. package/build/table/state.js +2 -2
  127. package/build/table/state.js.map +1 -1
  128. package/build/table-of-contents/edit.js +1 -4
  129. package/build/table-of-contents/edit.js.map +1 -1
  130. package/build/tag-cloud/edit.js +1 -1
  131. package/build/tag-cloud/edit.js.map +1 -1
  132. package/build/tag-cloud/index.js +8 -0
  133. package/build/tag-cloud/index.js.map +1 -1
  134. package/build/utils/clean-empty-object.js +5 -4
  135. package/build/utils/clean-empty-object.js.map +1 -1
  136. package/build/video/deprecated.js +159 -0
  137. package/build/video/deprecated.js.map +1 -0
  138. package/build/video/edit.js +41 -5
  139. package/build/video/edit.js.map +1 -1
  140. package/build/video/index.js +3 -0
  141. package/build/video/index.js.map +1 -1
  142. package/build/video/tracks-editor.js +3 -28
  143. package/build/video/tracks-editor.js.map +1 -1
  144. package/build-module/archives/edit.js +1 -0
  145. package/build-module/archives/edit.js.map +1 -1
  146. package/build-module/audio/edit.js +46 -7
  147. package/build-module/audio/edit.js.map +1 -1
  148. package/build-module/button/edit.js +1 -1
  149. package/build-module/button/edit.js.map +1 -1
  150. package/build-module/buttons/edit.native.js +1 -1
  151. package/build-module/buttons/edit.native.js.map +1 -1
  152. package/build-module/comment-template/edit.js +38 -30
  153. package/build-module/comment-template/edit.js.map +1 -1
  154. package/build-module/comment-template/index.js +6 -2
  155. package/build-module/comment-template/index.js.map +1 -1
  156. package/build-module/comments/edit/placeholder.js +1 -3
  157. package/build-module/comments/edit/placeholder.js.map +1 -1
  158. package/build-module/comments/index.js +5 -1
  159. package/build-module/comments/index.js.map +1 -1
  160. package/build-module/comments-title/edit.js +18 -2
  161. package/build-module/comments-title/edit.js.map +1 -1
  162. package/build-module/cover/edit/index.js +2 -2
  163. package/build-module/cover/edit/index.js.map +1 -1
  164. package/build-module/cover/edit/inspector-controls.js +4 -8
  165. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  166. package/build-module/cover/edit/use-cover-is-dark.js +7 -7
  167. package/build-module/cover/edit/use-cover-is-dark.js.map +1 -1
  168. package/build-module/embed/deprecated.js +44 -5
  169. package/build-module/embed/deprecated.js.map +1 -1
  170. package/build-module/embed/variations.js +1 -1
  171. package/build-module/embed/variations.js.map +1 -1
  172. package/build-module/file/deprecated.js +108 -4
  173. package/build-module/file/deprecated.js.map +1 -1
  174. package/build-module/file/transforms.js +3 -8
  175. package/build-module/file/transforms.js.map +1 -1
  176. package/build-module/gallery/deprecated.js +147 -25
  177. package/build-module/gallery/deprecated.js.map +1 -1
  178. package/build-module/gallery/gallery.js +3 -2
  179. package/build-module/gallery/gallery.js.map +1 -1
  180. package/build-module/gallery/transforms.js +4 -4
  181. package/build-module/gallery/transforms.js.map +1 -1
  182. package/build-module/gallery/use-image-sizes.js +3 -2
  183. package/build-module/gallery/use-image-sizes.js.map +1 -1
  184. package/build-module/gallery/v1/edit.js +4 -3
  185. package/build-module/gallery/v1/edit.js.map +1 -1
  186. package/build-module/group/edit.js +7 -3
  187. package/build-module/group/edit.js.map +1 -1
  188. package/build-module/image/edit.native.js +1 -1
  189. package/build-module/image/edit.native.js.map +1 -1
  190. package/build-module/image/image.js +36 -15
  191. package/build-module/image/image.js.map +1 -1
  192. package/build-module/image/transforms.js +1 -6
  193. package/build-module/image/transforms.js.map +1 -1
  194. package/build-module/latest-posts/edit.js +2 -2
  195. package/build-module/latest-posts/edit.js.map +1 -1
  196. package/build-module/list/transforms.js +9 -1
  197. package/build-module/list/transforms.js.map +1 -1
  198. package/build-module/list/utils.js +5 -9
  199. package/build-module/list/utils.js.map +1 -1
  200. package/build-module/list-item/edit.js +3 -2
  201. package/build-module/list-item/edit.js.map +1 -1
  202. package/build-module/list-item/edit.native.js +3 -2
  203. package/build-module/list-item/edit.native.js.map +1 -1
  204. package/build-module/list-item/hooks/use-merge.js +19 -21
  205. package/build-module/list-item/hooks/use-merge.js.map +1 -1
  206. package/build-module/list-item/hooks/use-outdent-list-item.js +24 -9
  207. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  208. package/build-module/list-item/index.js +14 -1
  209. package/build-module/list-item/index.js.map +1 -1
  210. package/build-module/list-item/utils.js +14 -1
  211. package/build-module/list-item/utils.js.map +1 -1
  212. package/build-module/navigation/edit/index.js +45 -31
  213. package/build-module/navigation/edit/index.js.map +1 -1
  214. package/build-module/navigation/edit/inner-blocks.js +3 -5
  215. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  216. package/build-module/navigation/edit/unsaved-inner-blocks.js +3 -1
  217. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  218. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +25 -8
  219. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  220. package/build-module/navigation/edit/use-create-navigation-menu.js +1 -1
  221. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
  222. package/build-module/navigation/index.js +4 -1
  223. package/build-module/navigation/index.js.map +1 -1
  224. package/build-module/navigation-link/edit.js +5 -4
  225. package/build-module/navigation-link/edit.js.map +1 -1
  226. package/build-module/navigation-submenu/edit.js +4 -4
  227. package/build-module/navigation-submenu/edit.js.map +1 -1
  228. package/build-module/page-list/edit.js +29 -10
  229. package/build-module/page-list/edit.js.map +1 -1
  230. package/build-module/page-list/index.js +1 -5
  231. package/build-module/page-list/index.js.map +1 -1
  232. package/build-module/paragraph/edit.js +3 -10
  233. package/build-module/paragraph/edit.js.map +1 -1
  234. package/build-module/pattern/edit.js +10 -3
  235. package/build-module/pattern/edit.js.map +1 -1
  236. package/build-module/post-comments-count/index.js +4 -0
  237. package/build-module/post-comments-count/index.js.map +1 -1
  238. package/build-module/post-comments-form/form.js +2 -3
  239. package/build-module/post-comments-form/form.js.map +1 -1
  240. package/build-module/post-comments-form/index.js +4 -0
  241. package/build-module/post-comments-form/index.js.map +1 -1
  242. package/build-module/post-comments-link/index.js +4 -0
  243. package/build-module/post-comments-link/index.js.map +1 -1
  244. package/build-module/post-content/edit.js +14 -6
  245. package/build-module/post-content/edit.js.map +1 -1
  246. package/build-module/pullquote/deprecated.js +7 -7
  247. package/build-module/pullquote/deprecated.js.map +1 -1
  248. package/build-module/query/edit/inspector-controls/index.js +4 -4
  249. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  250. package/build-module/query/edit/inspector-controls/taxonomy-controls.js +81 -102
  251. package/build-module/query/edit/inspector-controls/taxonomy-controls.js.map +1 -1
  252. package/build-module/search/edit.js +4 -5
  253. package/build-module/search/edit.js.map +1 -1
  254. package/build-module/site-logo/edit.js +8 -11
  255. package/build-module/site-logo/edit.js.map +1 -1
  256. package/build-module/site-tagline/edit.js +23 -11
  257. package/build-module/site-tagline/edit.js.map +1 -1
  258. package/build-module/site-title/edit/index.js +22 -10
  259. package/build-module/site-title/edit/index.js.map +1 -1
  260. package/build-module/social-link/edit.js +11 -2
  261. package/build-module/social-link/edit.js.map +1 -1
  262. package/build-module/social-link/index.js +3 -0
  263. package/build-module/social-link/index.js.map +1 -1
  264. package/build-module/spacer/controls.js +4 -8
  265. package/build-module/spacer/controls.js.map +1 -1
  266. package/build-module/table/deprecated.js +282 -27
  267. package/build-module/table/deprecated.js.map +1 -1
  268. package/build-module/table/state.js +3 -3
  269. package/build-module/table/state.js.map +1 -1
  270. package/build-module/table-of-contents/edit.js +1 -3
  271. package/build-module/table-of-contents/edit.js.map +1 -1
  272. package/build-module/tag-cloud/edit.js +1 -1
  273. package/build-module/tag-cloud/edit.js.map +1 -1
  274. package/build-module/tag-cloud/index.js +8 -0
  275. package/build-module/tag-cloud/index.js.map +1 -1
  276. package/build-module/utils/clean-empty-object.js +5 -5
  277. package/build-module/utils/clean-empty-object.js.map +1 -1
  278. package/build-module/video/deprecated.js +147 -0
  279. package/build-module/video/deprecated.js.map +1 -0
  280. package/build-module/video/edit.js +45 -9
  281. package/build-module/video/edit.js.map +1 -1
  282. package/build-module/video/index.js +2 -0
  283. package/build-module/video/index.js.map +1 -1
  284. package/build-module/video/tracks-editor.js +4 -29
  285. package/build-module/video/tracks-editor.js.map +1 -1
  286. package/build-style/archives/style-rtl.css +4 -0
  287. package/build-style/archives/style.css +4 -0
  288. package/build-style/button/style-rtl.css +1 -0
  289. package/build-style/button/style.css +1 -0
  290. package/build-style/comment-template/style-rtl.css +1 -0
  291. package/build-style/comment-template/style.css +1 -0
  292. package/build-style/comments/editor-rtl.css +1 -0
  293. package/build-style/comments/editor.css +1 -0
  294. package/build-style/comments/style-rtl.css +1 -0
  295. package/build-style/comments/style.css +1 -0
  296. package/build-style/cover/editor-rtl.css +4 -0
  297. package/build-style/cover/editor.css +4 -0
  298. package/build-style/editor-rtl.css +13 -21
  299. package/build-style/editor.css +13 -21
  300. package/build-style/group/editor-rtl.css +1 -0
  301. package/build-style/group/editor.css +1 -0
  302. package/build-style/image/editor-rtl.css +1 -1
  303. package/build-style/image/editor.css +1 -1
  304. package/build-style/navigation/editor-rtl.css +5 -4
  305. package/build-style/navigation/editor.css +5 -4
  306. package/build-style/navigation/style-rtl.css +3 -1
  307. package/build-style/navigation/style.css +3 -1
  308. package/build-style/paragraph/editor-rtl.css +0 -16
  309. package/build-style/paragraph/editor.css +0 -16
  310. package/build-style/post-comments-form/style-rtl.css +3 -0
  311. package/build-style/post-comments-form/style.css +3 -0
  312. package/build-style/site-logo/editor-rtl.css +1 -0
  313. package/build-style/site-logo/editor.css +1 -0
  314. package/build-style/style-rtl.css +16 -1
  315. package/build-style/style.css +16 -1
  316. package/build-style/tag-cloud/style-rtl.css +3 -0
  317. package/build-style/tag-cloud/style.css +3 -0
  318. package/package.json +29 -28
  319. package/src/archives/edit.js +1 -0
  320. package/src/archives/style.scss +5 -0
  321. package/src/audio/edit.js +79 -24
  322. package/src/avatar/index.php +1 -1
  323. package/src/button/edit.js +1 -1
  324. package/src/button/style.scss +2 -0
  325. package/src/buttons/edit.native.js +1 -1
  326. package/src/code/test/__snapshots__/edit.native.js.snap +13 -0
  327. package/src/code/test/edit.native.js +46 -32
  328. package/src/comment-template/block.json +6 -2
  329. package/src/comment-template/edit.js +47 -34
  330. package/src/comment-template/style.scss +2 -0
  331. package/src/comments/block.json +5 -1
  332. package/src/comments/edit/placeholder.js +1 -7
  333. package/src/comments/style.scss +2 -0
  334. package/src/comments-title/edit.js +24 -1
  335. package/src/cover/edit/index.js +2 -7
  336. package/src/cover/edit/inspector-controls.js +11 -13
  337. package/src/cover/edit/use-cover-is-dark.js +11 -11
  338. package/src/cover/editor.scss +7 -0
  339. package/src/embed/deprecated.js +53 -26
  340. package/src/embed/variations.js +1 -1
  341. package/src/file/deprecated.js +130 -2
  342. package/src/file/transforms.js +3 -8
  343. package/src/gallery/deprecated.js +129 -4
  344. package/src/gallery/gallery.js +2 -0
  345. package/src/gallery/index.php +19 -10
  346. package/src/gallery/transforms.js +8 -5
  347. package/src/gallery/use-image-sizes.js +3 -2
  348. package/src/gallery/v1/edit.js +4 -3
  349. package/src/group/edit.js +10 -2
  350. package/src/group/editor.scss +1 -0
  351. package/src/image/edit.native.js +1 -1
  352. package/src/image/editor.scss +4 -1
  353. package/src/image/image.js +75 -33
  354. package/src/image/transforms.js +1 -7
  355. package/src/latest-posts/edit.js +2 -2
  356. package/src/list/test/edit.native.js +102 -3
  357. package/src/list/transforms.js +11 -0
  358. package/src/list/utils.js +3 -11
  359. package/src/list-item/block.json +14 -1
  360. package/src/list-item/edit.js +2 -1
  361. package/src/list-item/edit.native.js +2 -1
  362. package/src/list-item/hooks/use-merge.js +4 -23
  363. package/src/list-item/hooks/use-outdent-list-item.js +9 -8
  364. package/src/navigation/block.json +4 -1
  365. package/src/navigation/edit/index.js +61 -37
  366. package/src/navigation/edit/inner-blocks.js +2 -5
  367. package/src/navigation/edit/unsaved-inner-blocks.js +9 -2
  368. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +32 -5
  369. package/src/navigation/edit/use-create-navigation-menu.js +2 -5
  370. package/src/navigation/editor.scss +5 -4
  371. package/src/navigation/index.php +103 -6
  372. package/src/navigation/style.scss +3 -1
  373. package/src/navigation-link/edit.js +6 -5
  374. package/src/navigation-link/index.php +8 -1
  375. package/src/navigation-submenu/edit.js +7 -5
  376. package/src/navigation-submenu/index.php +8 -1
  377. package/src/page-list/block.json +1 -5
  378. package/src/page-list/edit.js +36 -22
  379. package/src/page-list/index.php +8 -6
  380. package/src/paragraph/edit.js +1 -14
  381. package/src/paragraph/editor.scss +0 -20
  382. package/src/pattern/edit.js +10 -3
  383. package/src/post-comments-count/block.json +4 -0
  384. package/src/post-comments-form/block.json +4 -0
  385. package/src/post-comments-form/form.js +2 -3
  386. package/src/post-comments-form/style.scss +3 -0
  387. package/src/post-comments-link/block.json +4 -0
  388. package/src/post-content/edit.js +8 -4
  389. package/src/pullquote/deprecated.js +7 -7
  390. package/src/query/edit/inspector-controls/index.js +4 -3
  391. package/src/query/edit/inspector-controls/taxonomy-controls.js +82 -87
  392. package/src/rss/index.php +3 -3
  393. package/src/search/edit.js +7 -2
  394. package/src/search/index.php +21 -13
  395. package/src/site-logo/edit.js +12 -10
  396. package/src/site-logo/editor.scss +1 -0
  397. package/src/site-tagline/edit.js +25 -18
  398. package/src/site-title/edit/index.js +26 -12
  399. package/src/social-link/block.json +3 -0
  400. package/src/social-link/edit.js +8 -1
  401. package/src/social-link/index.php +11 -7
  402. package/src/spacer/controls.js +10 -12
  403. package/src/table/deprecated.js +587 -348
  404. package/src/table/state.js +3 -3
  405. package/src/table-of-contents/edit.js +1 -3
  406. package/src/tag-cloud/block.json +8 -0
  407. package/src/tag-cloud/edit.js +1 -1
  408. package/src/tag-cloud/style.scss +3 -0
  409. package/src/template-part/index.php +4 -0
  410. package/src/utils/clean-empty-object.js +5 -6
  411. package/src/video/deprecated.js +57 -0
  412. package/src/video/edit.js +71 -23
  413. package/src/video/index.js +2 -0
  414. package/src/video/tracks-editor.js +12 -28
  415. package/build/paragraph/drop-zone.js +0 -99
  416. package/build/paragraph/drop-zone.js.map +0 -1
  417. package/build-module/paragraph/drop-zone.js +0 -88
  418. package/build-module/paragraph/drop-zone.js.map +0 -1
  419. package/src/paragraph/drop-zone.js +0 -105
@@ -37,7 +37,8 @@ function NavigationInnerBlocks(_ref) {
37
37
  let {
38
38
  clientId,
39
39
  hasCustomPlaceholder,
40
- orientation
40
+ orientation,
41
+ templateLock
41
42
  } = _ref;
42
43
  const {
43
44
  isImmediateParentOfSelectedBlock,
@@ -86,6 +87,7 @@ function NavigationInnerBlocks(_ref) {
86
87
  __experimentalDefaultBlock: DEFAULT_BLOCK,
87
88
  __experimentalDirectInsert: shouldDirectInsert,
88
89
  orientation,
90
+ templateLock,
89
91
  // As an exception to other blocks which feature nesting, show
90
92
  // the block appender even when a child block is selected.
91
93
  // This should be a temporary fix, to be replaced by improvements to
@@ -93,10 +95,6 @@ function NavigationInnerBlocks(_ref) {
93
95
  // See https://github.com/WordPress/gutenberg/issues/37572.
94
96
  renderAppender: isSelected || isImmediateParentOfSelectedBlock && !selectedBlockHasChildren || // Show the appender while dragging to allow inserting element between item and the appender.
95
97
  parentOrChildHasSelection ? _blockEditor.InnerBlocks.ButtonBlockAppender : false,
96
- // Template lock set to false here so that the Nav
97
- // Block on the experimental menus screen does not
98
- // inherit templateLock={ 'all' }.
99
- templateLock: false,
100
98
  __experimentalLayout: LAYOUT,
101
99
  placeholder: showPlaceholder ? placeholder : undefined
102
100
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/inner-blocks.js"],"names":["ALLOWED_BLOCKS","DEFAULT_BLOCK","name","LAYOUT","type","alignments","NavigationInnerBlocks","clientId","hasCustomPlaceholder","orientation","isImmediateParentOfSelectedBlock","selectedBlockHasChildren","isSelected","select","getBlockCount","hasSelectedInnerBlock","getSelectedBlockClientId","blockEditorStore","selectedBlockId","blocks","onInput","onChange","shouldDirectInsert","every","parentOrChildHasSelection","placeholder","hasMenuItems","length","showPlaceholder","innerBlocksProps","className","value","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","renderAppender","InnerBlocks","ButtonBlockAppender","templateLock","__experimentalLayout","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tuseInnerBlocksProps,\n\tInnerBlocks,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport PlaceholderPreview from './placeholder/placeholder-preview';\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/search',\n\t'core/social-links',\n\t'core/page-list',\n\t'core/spacer',\n\t'core/home-link',\n\t'core/site-title',\n\t'core/site-logo',\n\t'core/navigation-submenu',\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\nconst LAYOUT = {\n\ttype: 'default',\n\talignments: [],\n};\n\nexport default function NavigationInnerBlocks( {\n\tclientId,\n\thasCustomPlaceholder,\n\torientation,\n} ) {\n\tconst {\n\t\tisImmediateParentOfSelectedBlock,\n\t\tselectedBlockHasChildren,\n\t\tisSelected,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\treturn {\n\t\t\t\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\tselectedBlockHasChildren: !! getBlockCount( selectedBlockId ),\n\n\t\t\t\t// This prop is already available but computing it here ensures it's\n\t\t\t\t// fresh compared to isImmediateParentOfSelectedBlock.\n\t\t\t\tisSelected: selectedBlockId === clientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_navigation'\n\t);\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\n\n\t// When the block is selected itself or has a top level item selected that\n\t// doesn't itself have children, show the standard appender. Else show no\n\t// appender.\n\tconst parentOrChildHasSelection =\n\t\tisSelected ||\n\t\t( isImmediateParentOfSelectedBlock && ! selectedBlockHasChildren );\n\n\tconst placeholder = useMemo( () => <PlaceholderPreview />, [] );\n\n\tconst hasMenuItems = !! blocks?.length;\n\n\t// If there is a `ref` attribute pointing to a `wp_navigation` but\n\t// that menu has no **items** (i.e. empty) then show a placeholder.\n\t// The block must also be selected else the placeholder will display\n\t// alongside the appender.\n\tconst showPlaceholder =\n\t\t! hasCustomPlaceholder && ! hasMenuItems && ! isSelected;\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\tvalue: blocks,\n\t\t\tonInput,\n\t\t\tonChange,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t\torientation,\n\n\t\t\t// As an exception to other blocks which feature nesting, show\n\t\t\t// the block appender even when a child block is selected.\n\t\t\t// This should be a temporary fix, to be replaced by improvements to\n\t\t\t// the sibling inserter.\n\t\t\t// See https://github.com/WordPress/gutenberg/issues/37572.\n\t\t\trenderAppender:\n\t\t\t\tisSelected ||\n\t\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\t\tparentOrChildHasSelection\n\t\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t\t: false,\n\n\t\t\t// Template lock set to false here so that the Nav\n\t\t\t// Block on the experimental menus screen does not\n\t\t\t// inherit templateLock={ 'all' }.\n\t\t\ttemplateLock: false,\n\t\t\t__experimentalLayout: LAYOUT,\n\t\t\tplaceholder: showPlaceholder ? placeholder : undefined,\n\t\t}\n\t);\n\n\treturn <div { ...innerBlocksProps } />;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/inner-blocks.js"],"names":["ALLOWED_BLOCKS","DEFAULT_BLOCK","name","LAYOUT","type","alignments","NavigationInnerBlocks","clientId","hasCustomPlaceholder","orientation","templateLock","isImmediateParentOfSelectedBlock","selectedBlockHasChildren","isSelected","select","getBlockCount","hasSelectedInnerBlock","getSelectedBlockClientId","blockEditorStore","selectedBlockId","blocks","onInput","onChange","shouldDirectInsert","every","parentOrChildHasSelection","placeholder","hasMenuItems","length","showPlaceholder","innerBlocksProps","className","value","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","renderAppender","InnerBlocks","ButtonBlockAppender","__experimentalLayout","undefined"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEntityBlockEditor } from '@wordpress/core-data';\nimport {\n\tuseInnerBlocksProps,\n\tInnerBlocks,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport PlaceholderPreview from './placeholder/placeholder-preview';\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/search',\n\t'core/social-links',\n\t'core/page-list',\n\t'core/spacer',\n\t'core/home-link',\n\t'core/site-title',\n\t'core/site-logo',\n\t'core/navigation-submenu',\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\nconst LAYOUT = {\n\ttype: 'default',\n\talignments: [],\n};\n\nexport default function NavigationInnerBlocks( {\n\tclientId,\n\thasCustomPlaceholder,\n\torientation,\n\ttemplateLock,\n} ) {\n\tconst {\n\t\tisImmediateParentOfSelectedBlock,\n\t\tselectedBlockHasChildren,\n\t\tisSelected,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockCount,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedBlockId = getSelectedBlockClientId();\n\n\t\t\treturn {\n\t\t\t\tisImmediateParentOfSelectedBlock: hasSelectedInnerBlock(\n\t\t\t\t\tclientId,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\tselectedBlockHasChildren: !! getBlockCount( selectedBlockId ),\n\n\t\t\t\t// This prop is already available but computing it here ensures it's\n\t\t\t\t// fresh compared to isImmediateParentOfSelectedBlock.\n\t\t\t\tisSelected: selectedBlockId === clientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_navigation'\n\t);\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\n\n\t// When the block is selected itself or has a top level item selected that\n\t// doesn't itself have children, show the standard appender. Else show no\n\t// appender.\n\tconst parentOrChildHasSelection =\n\t\tisSelected ||\n\t\t( isImmediateParentOfSelectedBlock && ! selectedBlockHasChildren );\n\n\tconst placeholder = useMemo( () => <PlaceholderPreview />, [] );\n\n\tconst hasMenuItems = !! blocks?.length;\n\n\t// If there is a `ref` attribute pointing to a `wp_navigation` but\n\t// that menu has no **items** (i.e. empty) then show a placeholder.\n\t// The block must also be selected else the placeholder will display\n\t// alongside the appender.\n\tconst showPlaceholder =\n\t\t! hasCustomPlaceholder && ! hasMenuItems && ! isSelected;\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\tvalue: blocks,\n\t\t\tonInput,\n\t\t\tonChange,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t\torientation,\n\t\t\ttemplateLock,\n\n\t\t\t// As an exception to other blocks which feature nesting, show\n\t\t\t// the block appender even when a child block is selected.\n\t\t\t// This should be a temporary fix, to be replaced by improvements to\n\t\t\t// the sibling inserter.\n\t\t\t// See https://github.com/WordPress/gutenberg/issues/37572.\n\t\t\trenderAppender:\n\t\t\t\tisSelected ||\n\t\t\t\t( isImmediateParentOfSelectedBlock &&\n\t\t\t\t\t! selectedBlockHasChildren ) ||\n\t\t\t\t// Show the appender while dragging to allow inserting element between item and the appender.\n\t\t\t\tparentOrChildHasSelection\n\t\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t\t: false,\n\t\t\t__experimentalLayout: LAYOUT,\n\t\t\tplaceholder: showPlaceholder ? placeholder : undefined,\n\t\t}\n\t);\n\n\treturn <div { ...innerBlocksProps } />;\n}\n"]}
@@ -130,6 +130,8 @@ function UnsavedInnerBlocks(_ref) {
130
130
  });
131
131
  }, [isDisabled, isSaving, hasResolvedDraftNavigationMenus, hasResolvedNavigationMenus, draftNavigationMenus, navigationMenus, hasSelection, createNavigationMenu, blocks]);
132
132
  const Wrapper = isSaving ? _components.Disabled : 'div';
133
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(Wrapper, innerBlocksProps), isSaving && (0, _element.createElement)(_components.Spinner, null));
133
+ return (0, _element.createElement)(_element.Fragment, null, isSaving ? (0, _element.createElement)(_components.Spinner, {
134
+ className: 'wp-block-navigation__uncontrolled-inner-blocks-loading-indicator'
135
+ }) : (0, _element.createElement)(Wrapper, innerBlocksProps));
134
136
  }
135
137
  //# sourceMappingURL=unsaved-inner-blocks.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/unsaved-inner-blocks.js"],"names":["EMPTY_OBJECT","DRAFT_MENU_PARAMS","status","per_page","DEFAULT_BLOCK","name","ALLOWED_BLOCKS","UnsavedInnerBlocks","blocks","clientId","hasSavedUnsavedInnerBlocks","onSave","hasSelection","originalBlocks","current","innerBlocksAreDirty","shouldDirectInsert","every","isDisabled","Disabled","Context","savingLock","innerBlocksProps","className","renderAppender","undefined","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","isSaving","draftNavigationMenus","hasResolvedDraftNavigationMenus","select","getEntityRecords","hasFinishedResolution","isSavingEntityRecord","coreStore","hasResolvedNavigationMenus","navigationMenus","create","createNavigationMenu","then","menu","Wrapper"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps } from '@wordpress/block-editor';\nimport { Disabled, Spinner } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useEffect, useRef, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport useCreateNavigationMenu from './use-create-navigation-menu';\n\nconst EMPTY_OBJECT = {};\nconst DRAFT_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ status: 'draft', per_page: -1 },\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/search',\n\t'core/social-links',\n\t'core/page-list',\n\t'core/spacer',\n\t'core/home-link',\n\t'core/site-title',\n\t'core/site-logo',\n\t'core/navigation-submenu',\n];\n\nexport default function UnsavedInnerBlocks( {\n\tblocks,\n\tclientId,\n\thasSavedUnsavedInnerBlocks,\n\tonSave,\n\thasSelection,\n} ) {\n\tconst originalBlocks = useRef();\n\n\tuseEffect( () => {\n\t\t// Initially store the uncontrolled inner blocks for\n\t\t// dirty state comparison.\n\t\tif ( ! originalBlocks?.current ) {\n\t\t\toriginalBlocks.current = blocks;\n\t\t}\n\t}, [ blocks ] );\n\n\t// If the current inner blocks object is different in any way\n\t// from the original inner blocks from the post content then the\n\t// user has made changes to the inner blocks. At this point the inner\n\t// blocks can be considered \"dirty\".\n\t// We also make sure the current innerBlocks had a chance to be set.\n\tconst innerBlocksAreDirty =\n\t\t!! originalBlocks.current && blocks !== originalBlocks.current;\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\n\n\t// The block will be disabled in a block preview, use this as a way of\n\t// avoiding the side-effects of this component for block previews.\n\tconst isDisabled = useContext( Disabled.Context );\n\tconst savingLock = useRef( false );\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\trenderAppender: hasSelection ? undefined : false,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t}\n\t);\n\n\tconst { isSaving, draftNavigationMenus, hasResolvedDraftNavigationMenus } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tif ( isDisabled ) {\n\t\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t\t}\n\n\t\t\t\tconst {\n\t\t\t\t\tgetEntityRecords,\n\t\t\t\t\thasFinishedResolution,\n\t\t\t\t\tisSavingEntityRecord,\n\t\t\t\t} = select( coreStore );\n\n\t\t\t\treturn {\n\t\t\t\t\tisSaving: isSavingEntityRecord(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'wp_navigation'\n\t\t\t\t\t),\n\t\t\t\t\tdraftNavigationMenus: getEntityRecords(\n\t\t\t\t\t\t...DRAFT_MENU_PARAMS\n\t\t\t\t\t),\n\t\t\t\t\thasResolvedDraftNavigationMenus: hasFinishedResolution(\n\t\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\t\tDRAFT_MENU_PARAMS\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ isDisabled ]\n\t\t);\n\n\tconst { hasResolvedNavigationMenus, navigationMenus } = useNavigationMenu();\n\n\tconst { create: createNavigationMenu } =\n\t\tuseCreateNavigationMenu( clientId );\n\n\t// Automatically save the uncontrolled blocks.\n\tuseEffect( () => {\n\t\t// The block will be disabled when used in a BlockPreview.\n\t\t// In this case avoid automatic creation of a wp_navigation post.\n\t\t// Otherwise the user will be spammed with lots of menus!\n\t\t//\n\t\t// Also ensure other navigation menus have loaded so an\n\t\t// accurate name can be created.\n\t\t//\n\t\t// Don't try saving when another save is already\n\t\t// in progress.\n\t\t//\n\t\t// And finally only create the menu when the block is selected,\n\t\t// which is an indication they want to start editing.\n\t\tif (\n\t\t\tisDisabled ||\n\t\t\thasSavedUnsavedInnerBlocks ||\n\t\t\tisSaving ||\n\t\t\tsavingLock.current ||\n\t\t\t! hasResolvedDraftNavigationMenus ||\n\t\t\t! hasResolvedNavigationMenus ||\n\t\t\t! hasSelection ||\n\t\t\t! innerBlocksAreDirty\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsavingLock.current = true;\n\t\tcreateNavigationMenu( null, blocks ).then( ( menu ) => {\n\t\t\tonSave( menu );\n\t\t\tsavingLock.current = false;\n\t\t} );\n\t}, [\n\t\tisDisabled,\n\t\tisSaving,\n\t\thasResolvedDraftNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tdraftNavigationMenus,\n\t\tnavigationMenus,\n\t\thasSelection,\n\t\tcreateNavigationMenu,\n\t\tblocks,\n\t] );\n\n\tconst Wrapper = isSaving ? Disabled : 'div';\n\n\treturn (\n\t\t<>\n\t\t\t<Wrapper { ...innerBlocksProps } />\n\t\t\t{ isSaving && <Spinner /> }\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/unsaved-inner-blocks.js"],"names":["EMPTY_OBJECT","DRAFT_MENU_PARAMS","status","per_page","DEFAULT_BLOCK","name","ALLOWED_BLOCKS","UnsavedInnerBlocks","blocks","clientId","hasSavedUnsavedInnerBlocks","onSave","hasSelection","originalBlocks","current","innerBlocksAreDirty","shouldDirectInsert","every","isDisabled","Disabled","Context","savingLock","innerBlocksProps","className","renderAppender","undefined","allowedBlocks","__experimentalDefaultBlock","__experimentalDirectInsert","isSaving","draftNavigationMenus","hasResolvedDraftNavigationMenus","select","getEntityRecords","hasFinishedResolution","isSavingEntityRecord","coreStore","hasResolvedNavigationMenus","navigationMenus","create","createNavigationMenu","then","menu","Wrapper"],"mappings":";;;;;;;;;AAOA;;AAJA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AAbA;AACA;AACA;;AAOA;AACA;AACA;AAIA,MAAMA,YAAY,GAAG,EAArB;AACA,MAAMC,iBAAiB,GAAG,CACzB,UADyB,EAEzB,eAFyB,EAGzB;AAAEC,EAAAA,MAAM,EAAE,OAAV;AAAmBC,EAAAA,QAAQ,EAAE,CAAC;AAA9B,CAHyB,CAA1B;AAMA,MAAMC,aAAa,GAAG;AACrBC,EAAAA,IAAI,EAAE;AADe,CAAtB;AAIA,MAAMC,cAAc,GAAG,CACtB,sBADsB,EAEtB,aAFsB,EAGtB,mBAHsB,EAItB,gBAJsB,EAKtB,aALsB,EAMtB,gBANsB,EAOtB,iBAPsB,EAQtB,gBARsB,EAStB,yBATsB,CAAvB;;AAYe,SAASC,kBAAT,OAMX;AAAA,MANwC;AAC3CC,IAAAA,MAD2C;AAE3CC,IAAAA,QAF2C;AAG3CC,IAAAA,0BAH2C;AAI3CC,IAAAA,MAJ2C;AAK3CC,IAAAA;AAL2C,GAMxC;AACH,QAAMC,cAAc,GAAG,sBAAvB;AAEA,0BAAW,MAAM;AAChB;AACA;AACA,QAAK,EAAEA,cAAF,aAAEA,cAAF,eAAEA,cAAc,CAAEC,OAAlB,CAAL,EAAiC;AAChCD,MAAAA,cAAc,CAACC,OAAf,GAAyBN,MAAzB;AACA;AACD,GAND,EAMG,CAAEA,MAAF,CANH,EAHG,CAWH;AACA;AACA;AACA;AACA;;AACA,QAAMO,mBAAmB,GACxB,CAAC,CAAEF,cAAc,CAACC,OAAlB,IAA6BN,MAAM,KAAKK,cAAc,CAACC,OADxD;AAGA,QAAME,kBAAkB,GAAG,sBAC1B,MACCR,MAAM,CAACS,KAAP,CACC;AAAA,QAAE;AAAEZ,MAAAA;AAAF,KAAF;AAAA,WACCA,IAAI,KAAK,sBAAT,IACAA,IAAI,KAAK,yBADT,IAEAA,IAAI,KAAK,gBAHV;AAAA,GADD,CAFyB,EAQ1B,CAAEG,MAAF,CAR0B,CAA3B,CAnBG,CA8BH;AACA;;AACA,QAAMU,UAAU,GAAG,yBAAYC,qBAASC,OAArB,CAAnB;AACA,QAAMC,UAAU,GAAG,qBAAQ,KAAR,CAAnB;AAEA,QAAMC,gBAAgB,GAAG,sCACxB;AACCC,IAAAA,SAAS,EAAE;AADZ,GADwB,EAIxB;AACCC,IAAAA,cAAc,EAAEZ,YAAY,GAAGa,SAAH,GAAe,KAD5C;AAECC,IAAAA,aAAa,EAAEpB,cAFhB;AAGCqB,IAAAA,0BAA0B,EAAEvB,aAH7B;AAICwB,IAAAA,0BAA0B,EAAEZ;AAJ7B,GAJwB,CAAzB;AAYA,QAAM;AAAEa,IAAAA,QAAF;AAAYC,IAAAA,oBAAZ;AAAkCC,IAAAA;AAAlC,MACL,qBACGC,MAAF,IAAc;AACb,QAAKd,UAAL,EAAkB;AACjB,aAAOlB,YAAP;AACA;;AAED,UAAM;AACLiC,MAAAA,gBADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEI,eAAF,CAJV;AAMA,WAAO;AACNP,MAAAA,QAAQ,EAAEM,oBAAoB,CAC7B,UAD6B,EAE7B,eAF6B,CADxB;AAKNL,MAAAA,oBAAoB,EAAEG,gBAAgB,CACrC,GAAGhC,iBADkC,CALhC;AAQN8B,MAAAA,+BAA+B,EAAEG,qBAAqB,CACrD,kBADqD,EAErDjC,iBAFqD;AARhD,KAAP;AAaA,GAzBF,EA0BC,CAAEiB,UAAF,CA1BD,CADD;AA8BA,QAAM;AAAEmB,IAAAA,0BAAF;AAA8BC,IAAAA;AAA9B,MAAkD,iCAAxD;AAEA,QAAM;AAAEC,IAAAA,MAAM,EAAEC;AAAV,MACL,sCAAyB/B,QAAzB,CADD,CA/EG,CAkFH;;AACA,0BAAW,MAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QACCS,UAAU,IACVR,0BADA,IAEAmB,QAFA,IAGAR,UAAU,CAACP,OAHX,IAIA,CAAEiB,+BAJF,IAKA,CAAEM,0BALF,IAMA,CAAEzB,YANF,IAOA,CAAEG,mBARH,EASE;AACD;AACA;;AAEDM,IAAAA,UAAU,CAACP,OAAX,GAAqB,IAArB;AACA0B,IAAAA,oBAAoB,CAAE,IAAF,EAAQhC,MAAR,CAApB,CAAqCiC,IAArC,CAA6CC,IAAF,IAAY;AACtD/B,MAAAA,MAAM,CAAE+B,IAAF,CAAN;AACArB,MAAAA,UAAU,CAACP,OAAX,GAAqB,KAArB;AACA,KAHD;AAIA,GA/BD,EA+BG,CACFI,UADE,EAEFW,QAFE,EAGFE,+BAHE,EAIFM,0BAJE,EAKFP,oBALE,EAMFQ,eANE,EAOF1B,YAPE,EAQF4B,oBARE,EASFhC,MATE,CA/BH;AA2CA,QAAMmC,OAAO,GAAGd,QAAQ,GAAGV,oBAAH,GAAc,KAAtC;AAEA,SACC,qDACGU,QAAQ,GACT,4BAAC,mBAAD;AACC,IAAA,SAAS,EACR;AAFF,IADS,GAOT,4BAAC,OAAD,EAAcP,gBAAd,CARF,CADD;AAaA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useInnerBlocksProps } from '@wordpress/block-editor';\nimport { Disabled, Spinner } from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useEffect, useRef, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useNavigationMenu from '../use-navigation-menu';\nimport useCreateNavigationMenu from './use-create-navigation-menu';\n\nconst EMPTY_OBJECT = {};\nconst DRAFT_MENU_PARAMS = [\n\t'postType',\n\t'wp_navigation',\n\t{ status: 'draft', per_page: -1 },\n];\n\nconst DEFAULT_BLOCK = {\n\tname: 'core/navigation-link',\n};\n\nconst ALLOWED_BLOCKS = [\n\t'core/navigation-link',\n\t'core/search',\n\t'core/social-links',\n\t'core/page-list',\n\t'core/spacer',\n\t'core/home-link',\n\t'core/site-title',\n\t'core/site-logo',\n\t'core/navigation-submenu',\n];\n\nexport default function UnsavedInnerBlocks( {\n\tblocks,\n\tclientId,\n\thasSavedUnsavedInnerBlocks,\n\tonSave,\n\thasSelection,\n} ) {\n\tconst originalBlocks = useRef();\n\n\tuseEffect( () => {\n\t\t// Initially store the uncontrolled inner blocks for\n\t\t// dirty state comparison.\n\t\tif ( ! originalBlocks?.current ) {\n\t\t\toriginalBlocks.current = blocks;\n\t\t}\n\t}, [ blocks ] );\n\n\t// If the current inner blocks object is different in any way\n\t// from the original inner blocks from the post content then the\n\t// user has made changes to the inner blocks. At this point the inner\n\t// blocks can be considered \"dirty\".\n\t// We also make sure the current innerBlocks had a chance to be set.\n\tconst innerBlocksAreDirty =\n\t\t!! originalBlocks.current && blocks !== originalBlocks.current;\n\n\tconst shouldDirectInsert = useMemo(\n\t\t() =>\n\t\t\tblocks.every(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\tname === 'core/navigation-link' ||\n\t\t\t\t\tname === 'core/navigation-submenu' ||\n\t\t\t\t\tname === 'core/page-list'\n\t\t\t),\n\t\t[ blocks ]\n\t);\n\n\t// The block will be disabled in a block preview, use this as a way of\n\t// avoiding the side-effects of this component for block previews.\n\tconst isDisabled = useContext( Disabled.Context );\n\tconst savingLock = useRef( false );\n\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tclassName: 'wp-block-navigation__container',\n\t\t},\n\t\t{\n\t\t\trenderAppender: hasSelection ? undefined : false,\n\t\t\tallowedBlocks: ALLOWED_BLOCKS,\n\t\t\t__experimentalDefaultBlock: DEFAULT_BLOCK,\n\t\t\t__experimentalDirectInsert: shouldDirectInsert,\n\t\t}\n\t);\n\n\tconst { isSaving, draftNavigationMenus, hasResolvedDraftNavigationMenus } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tif ( isDisabled ) {\n\t\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t\t}\n\n\t\t\t\tconst {\n\t\t\t\t\tgetEntityRecords,\n\t\t\t\t\thasFinishedResolution,\n\t\t\t\t\tisSavingEntityRecord,\n\t\t\t\t} = select( coreStore );\n\n\t\t\t\treturn {\n\t\t\t\t\tisSaving: isSavingEntityRecord(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'wp_navigation'\n\t\t\t\t\t),\n\t\t\t\t\tdraftNavigationMenus: getEntityRecords(\n\t\t\t\t\t\t...DRAFT_MENU_PARAMS\n\t\t\t\t\t),\n\t\t\t\t\thasResolvedDraftNavigationMenus: hasFinishedResolution(\n\t\t\t\t\t\t'getEntityRecords',\n\t\t\t\t\t\tDRAFT_MENU_PARAMS\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ isDisabled ]\n\t\t);\n\n\tconst { hasResolvedNavigationMenus, navigationMenus } = useNavigationMenu();\n\n\tconst { create: createNavigationMenu } =\n\t\tuseCreateNavigationMenu( clientId );\n\n\t// Automatically save the uncontrolled blocks.\n\tuseEffect( () => {\n\t\t// The block will be disabled when used in a BlockPreview.\n\t\t// In this case avoid automatic creation of a wp_navigation post.\n\t\t// Otherwise the user will be spammed with lots of menus!\n\t\t//\n\t\t// Also ensure other navigation menus have loaded so an\n\t\t// accurate name can be created.\n\t\t//\n\t\t// Don't try saving when another save is already\n\t\t// in progress.\n\t\t//\n\t\t// And finally only create the menu when the block is selected,\n\t\t// which is an indication they want to start editing.\n\t\tif (\n\t\t\tisDisabled ||\n\t\t\thasSavedUnsavedInnerBlocks ||\n\t\t\tisSaving ||\n\t\t\tsavingLock.current ||\n\t\t\t! hasResolvedDraftNavigationMenus ||\n\t\t\t! hasResolvedNavigationMenus ||\n\t\t\t! hasSelection ||\n\t\t\t! innerBlocksAreDirty\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tsavingLock.current = true;\n\t\tcreateNavigationMenu( null, blocks ).then( ( menu ) => {\n\t\t\tonSave( menu );\n\t\t\tsavingLock.current = false;\n\t\t} );\n\t}, [\n\t\tisDisabled,\n\t\tisSaving,\n\t\thasResolvedDraftNavigationMenus,\n\t\thasResolvedNavigationMenus,\n\t\tdraftNavigationMenus,\n\t\tnavigationMenus,\n\t\thasSelection,\n\t\tcreateNavigationMenu,\n\t\tblocks,\n\t] );\n\n\tconst Wrapper = isSaving ? Disabled : 'div';\n\n\treturn (\n\t\t<>\n\t\t\t{ isSaving ? (\n\t\t\t\t<Spinner\n\t\t\t\t\tclassName={\n\t\t\t\t\t\t'wp-block-navigation__uncontrolled-inner-blocks-loading-indicator'\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Wrapper { ...innerBlocksProps } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
@@ -32,8 +32,11 @@ const CLASSIC_MENU_CONVERSION_ERROR = 'error';
32
32
  exports.CLASSIC_MENU_CONVERSION_ERROR = CLASSIC_MENU_CONVERSION_ERROR;
33
33
  const CLASSIC_MENU_CONVERSION_PENDING = 'pending';
34
34
  exports.CLASSIC_MENU_CONVERSION_PENDING = CLASSIC_MENU_CONVERSION_PENDING;
35
- const CLASSIC_MENU_CONVERSION_IDLE = 'idle';
35
+ const CLASSIC_MENU_CONVERSION_IDLE = 'idle'; // This is needed to ensure that multiple components using this hook
36
+ // do not import the same classic menu twice.
37
+
36
38
  exports.CLASSIC_MENU_CONVERSION_IDLE = CLASSIC_MENU_CONVERSION_IDLE;
39
+ let classicMenuBeingConvertedId = null;
37
40
 
38
41
  function useConvertClassicToBlockMenu(clientId) {
39
42
  /*
@@ -51,6 +54,7 @@ function useConvertClassicToBlockMenu(clientId) {
51
54
  const [error, setError] = (0, _element.useState)(null);
52
55
 
53
56
  async function convertClassicMenuToBlockMenu(menuId, menuName) {
57
+ let postStatus = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'publish';
54
58
  let navigationMenu;
55
59
  let classicMenuItems; // 1. Fetch the classic Menu items.
56
60
 
@@ -79,7 +83,7 @@ function useConvertClassicToBlockMenu(clientId) {
79
83
  } = (0, _menuItemsToBlocks.default)(classicMenuItems); // 3. Create the `wp_navigation` Post with the blocks.
80
84
 
81
85
  try {
82
- navigationMenu = await createNavigationMenu(menuName, innerBlocks);
86
+ navigationMenu = await createNavigationMenu(menuName, innerBlocks, postStatus);
83
87
  /**
84
88
  * Immediately trigger editEntityRecord to change the wp_navigation post status to 'publish'.
85
89
  * This status change causes the menu to be displayed on the front of the site and sets the post state to be "dirty".
@@ -89,7 +93,7 @@ function useConvertClassicToBlockMenu(clientId) {
89
93
  */
90
94
 
91
95
  await editEntityRecord('postType', 'wp_navigation', navigationMenu.id, {
92
- status: 'publish'
96
+ status: postStatus
93
97
  }, {
94
98
  throwOnError: true
95
99
  });
@@ -103,7 +107,15 @@ function useConvertClassicToBlockMenu(clientId) {
103
107
  return navigationMenu;
104
108
  }
105
109
 
106
- const convert = (0, _element.useCallback)(async (menuId, menuName) => {
110
+ const convert = (0, _element.useCallback)(async (menuId, menuName, postStatus) => {
111
+ // Check whether this classic menu is being imported already.
112
+ if (classicMenuBeingConvertedId === menuId) {
113
+ return;
114
+ } // Set the ID for the currently importing classic menu.
115
+
116
+
117
+ classicMenuBeingConvertedId = menuId;
118
+
107
119
  if (!menuId || !menuName) {
108
120
  setError('Unable to convert menu. Missing menu details.');
109
121
  setStatus(CLASSIC_MENU_CONVERSION_ERROR);
@@ -112,12 +124,17 @@ function useConvertClassicToBlockMenu(clientId) {
112
124
 
113
125
  setStatus(CLASSIC_MENU_CONVERSION_PENDING);
114
126
  setError(null);
115
- return await convertClassicMenuToBlockMenu(menuId, menuName).then(navigationMenu => {
116
- setStatus(CLASSIC_MENU_CONVERSION_SUCCESS);
127
+ return await convertClassicMenuToBlockMenu(menuId, menuName, postStatus).then(navigationMenu => {
128
+ setStatus(CLASSIC_MENU_CONVERSION_SUCCESS); // Reset the ID for the currently importing classic menu.
129
+
130
+ classicMenuBeingConvertedId = null;
117
131
  return navigationMenu;
118
132
  }).catch(err => {
119
- setError(err === null || err === void 0 ? void 0 : err.message);
120
- setStatus(CLASSIC_MENU_CONVERSION_ERROR); // Rethrow error for debugging.
133
+ setError(err === null || err === void 0 ? void 0 : err.message); // Reset the ID for the currently importing classic menu.
134
+
135
+ setStatus(CLASSIC_MENU_CONVERSION_ERROR); // Reset the ID for the currently importing classic menu.
136
+
137
+ classicMenuBeingConvertedId = null; // Rethrow error for debugging.
121
138
 
122
139
  throw new Error((0, _i18n.sprintf)( // translators: %s: the name of a menu (e.g. Header navigation).
123
140
  (0, _i18n.__)(`Unable to create Navigation Menu "%s".`), menuName), {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/use-convert-classic-menu-to-block-menu.js"],"names":["CLASSIC_MENU_CONVERSION_SUCCESS","CLASSIC_MENU_CONVERSION_ERROR","CLASSIC_MENU_CONVERSION_PENDING","CLASSIC_MENU_CONVERSION_IDLE","useConvertClassicToBlockMenu","clientId","create","createNavigationMenu","registry","editEntityRecord","coreStore","status","setStatus","error","setError","convertClassicMenuToBlockMenu","menuId","menuName","navigationMenu","classicMenuItems","resolveSelect","getMenuItems","menus","per_page","context","err","Error","cause","innerBlocks","id","throwOnError","convert","then","catch","message"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRegistry, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useCreateNavigationMenu from './use-create-navigation-menu';\nimport menuItemsToBlocks from '../menu-items-to-blocks';\n\nexport const CLASSIC_MENU_CONVERSION_SUCCESS = 'success';\nexport const CLASSIC_MENU_CONVERSION_ERROR = 'error';\nexport const CLASSIC_MENU_CONVERSION_PENDING = 'pending';\nexport const CLASSIC_MENU_CONVERSION_IDLE = 'idle';\n\nfunction useConvertClassicToBlockMenu( clientId ) {\n\t/*\n\t * The wp_navigation post is created as a draft so the changes on the frontend and\n\t * the site editor are not permanent without a save interaction done by the user.\n\t */\n\tconst { create: createNavigationMenu } = useCreateNavigationMenu(\n\t\tclientId,\n\t\t'draft'\n\t);\n\tconst registry = useRegistry();\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tconst [ status, setStatus ] = useState( CLASSIC_MENU_CONVERSION_IDLE );\n\tconst [ error, setError ] = useState( null );\n\n\tasync function convertClassicMenuToBlockMenu( menuId, menuName ) {\n\t\tlet navigationMenu;\n\t\tlet classicMenuItems;\n\n\t\t// 1. Fetch the classic Menu items.\n\t\ttry {\n\t\t\tclassicMenuItems = await registry\n\t\t\t\t.resolveSelect( coreStore )\n\t\t\t\t.getMenuItems( {\n\t\t\t\t\tmenus: menuId,\n\t\t\t\t\tper_page: -1,\n\t\t\t\t\tcontext: 'view',\n\t\t\t\t} );\n\t\t} catch ( err ) {\n\t\t\tthrow new Error(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\tmenuName\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\t// Handle offline response which resolves to `null`.\n\t\tif ( classicMenuItems === null ) {\n\t\t\tthrow new Error(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\tmenuName\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t// 2. Convert the classic items into blocks.\n\t\tconst { innerBlocks } = menuItemsToBlocks( classicMenuItems );\n\n\t\t// 3. Create the `wp_navigation` Post with the blocks.\n\t\ttry {\n\t\t\tnavigationMenu = await createNavigationMenu(\n\t\t\t\tmenuName,\n\t\t\t\tinnerBlocks\n\t\t\t);\n\n\t\t\t/**\n\t\t\t * Immediately trigger editEntityRecord to change the wp_navigation post status to 'publish'.\n\t\t\t * This status change causes the menu to be displayed on the front of the site and sets the post state to be \"dirty\".\n\t\t\t * The problem being solved is if saveEditedEntityRecord was used here, the menu would be updated on the frontend and the editor _automatically_,\n\t\t\t * without user interaction.\n\t\t\t * If the user abandons the site editor without saving, there would still be a wp_navigation post created as draft.\n\t\t\t */\n\t\t\tawait editEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tnavigationMenu.id,\n\t\t\t\t{\n\t\t\t\t\tstatus: 'publish',\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t} catch ( err ) {\n\t\t\tthrow new Error(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\tmenuName\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\treturn navigationMenu;\n\t}\n\n\tconst convert = useCallback( async ( menuId, menuName ) => {\n\t\tif ( ! menuId || ! menuName ) {\n\t\t\tsetError( 'Unable to convert menu. Missing menu details.' );\n\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\t\t\treturn;\n\t\t}\n\n\t\tsetStatus( CLASSIC_MENU_CONVERSION_PENDING );\n\t\tsetError( null );\n\n\t\treturn await convertClassicMenuToBlockMenu( menuId, menuName )\n\t\t\t.then( ( navigationMenu ) => {\n\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_SUCCESS );\n\t\t\t\treturn navigationMenu;\n\t\t\t} )\n\t\t\t.catch( ( err ) => {\n\t\t\t\tsetError( err?.message );\n\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\n\t\t\t\t// Rethrow error for debugging.\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\t\tmenuName\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} );\n\t}, [] );\n\n\treturn {\n\t\tconvert,\n\t\tstatus,\n\t\terror,\n\t};\n}\n\nexport default useConvertClassicToBlockMenu;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/use-convert-classic-menu-to-block-menu.js"],"names":["CLASSIC_MENU_CONVERSION_SUCCESS","CLASSIC_MENU_CONVERSION_ERROR","CLASSIC_MENU_CONVERSION_PENDING","CLASSIC_MENU_CONVERSION_IDLE","classicMenuBeingConvertedId","useConvertClassicToBlockMenu","clientId","create","createNavigationMenu","registry","editEntityRecord","coreStore","status","setStatus","error","setError","convertClassicMenuToBlockMenu","menuId","menuName","postStatus","navigationMenu","classicMenuItems","resolveSelect","getMenuItems","menus","per_page","context","err","Error","cause","innerBlocks","id","throwOnError","convert","then","catch","message"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRegistry, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState, useCallback } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport useCreateNavigationMenu from './use-create-navigation-menu';\nimport menuItemsToBlocks from '../menu-items-to-blocks';\n\nexport const CLASSIC_MENU_CONVERSION_SUCCESS = 'success';\nexport const CLASSIC_MENU_CONVERSION_ERROR = 'error';\nexport const CLASSIC_MENU_CONVERSION_PENDING = 'pending';\nexport const CLASSIC_MENU_CONVERSION_IDLE = 'idle';\n\n// This is needed to ensure that multiple components using this hook\n// do not import the same classic menu twice.\nlet classicMenuBeingConvertedId = null;\n\nfunction useConvertClassicToBlockMenu( clientId ) {\n\t/*\n\t * The wp_navigation post is created as a draft so the changes on the frontend and\n\t * the site editor are not permanent without a save interaction done by the user.\n\t */\n\tconst { create: createNavigationMenu } = useCreateNavigationMenu(\n\t\tclientId,\n\t\t'draft'\n\t);\n\tconst registry = useRegistry();\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\n\tconst [ status, setStatus ] = useState( CLASSIC_MENU_CONVERSION_IDLE );\n\tconst [ error, setError ] = useState( null );\n\n\tasync function convertClassicMenuToBlockMenu(\n\t\tmenuId,\n\t\tmenuName,\n\t\tpostStatus = 'publish'\n\t) {\n\t\tlet navigationMenu;\n\t\tlet classicMenuItems;\n\n\t\t// 1. Fetch the classic Menu items.\n\t\ttry {\n\t\t\tclassicMenuItems = await registry\n\t\t\t\t.resolveSelect( coreStore )\n\t\t\t\t.getMenuItems( {\n\t\t\t\t\tmenus: menuId,\n\t\t\t\t\tper_page: -1,\n\t\t\t\t\tcontext: 'view',\n\t\t\t\t} );\n\t\t} catch ( err ) {\n\t\t\tthrow new Error(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\tmenuName\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\t// Handle offline response which resolves to `null`.\n\t\tif ( classicMenuItems === null ) {\n\t\t\tthrow new Error(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( `Unable to fetch classic menu \"%s\" from API.` ),\n\t\t\t\t\tmenuName\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t// 2. Convert the classic items into blocks.\n\t\tconst { innerBlocks } = menuItemsToBlocks( classicMenuItems );\n\n\t\t// 3. Create the `wp_navigation` Post with the blocks.\n\t\ttry {\n\t\t\tnavigationMenu = await createNavigationMenu(\n\t\t\t\tmenuName,\n\t\t\t\tinnerBlocks,\n\t\t\t\tpostStatus\n\t\t\t);\n\n\t\t\t/**\n\t\t\t * Immediately trigger editEntityRecord to change the wp_navigation post status to 'publish'.\n\t\t\t * This status change causes the menu to be displayed on the front of the site and sets the post state to be \"dirty\".\n\t\t\t * The problem being solved is if saveEditedEntityRecord was used here, the menu would be updated on the frontend and the editor _automatically_,\n\t\t\t * without user interaction.\n\t\t\t * If the user abandons the site editor without saving, there would still be a wp_navigation post created as draft.\n\t\t\t */\n\t\t\tawait editEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_navigation',\n\t\t\t\tnavigationMenu.id,\n\t\t\t\t{\n\t\t\t\t\tstatus: postStatus,\n\t\t\t\t},\n\t\t\t\t{ throwOnError: true }\n\t\t\t);\n\t\t} catch ( err ) {\n\t\t\tthrow new Error(\n\t\t\t\tsprintf(\n\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\tmenuName\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tcause: err,\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\treturn navigationMenu;\n\t}\n\n\tconst convert = useCallback( async ( menuId, menuName, postStatus ) => {\n\t\t// Check whether this classic menu is being imported already.\n\t\tif ( classicMenuBeingConvertedId === menuId ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Set the ID for the currently importing classic menu.\n\t\tclassicMenuBeingConvertedId = menuId;\n\n\t\tif ( ! menuId || ! menuName ) {\n\t\t\tsetError( 'Unable to convert menu. Missing menu details.' );\n\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\t\t\treturn;\n\t\t}\n\n\t\tsetStatus( CLASSIC_MENU_CONVERSION_PENDING );\n\t\tsetError( null );\n\n\t\treturn await convertClassicMenuToBlockMenu(\n\t\t\tmenuId,\n\t\t\tmenuName,\n\t\t\tpostStatus\n\t\t)\n\t\t\t.then( ( navigationMenu ) => {\n\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_SUCCESS );\n\t\t\t\t// Reset the ID for the currently importing classic menu.\n\t\t\t\tclassicMenuBeingConvertedId = null;\n\t\t\t\treturn navigationMenu;\n\t\t\t} )\n\t\t\t.catch( ( err ) => {\n\t\t\t\tsetError( err?.message );\n\t\t\t\t// Reset the ID for the currently importing classic menu.\n\t\t\t\tsetStatus( CLASSIC_MENU_CONVERSION_ERROR );\n\n\t\t\t\t// Reset the ID for the currently importing classic menu.\n\t\t\t\tclassicMenuBeingConvertedId = null;\n\n\t\t\t\t// Rethrow error for debugging.\n\t\t\t\tthrow new Error(\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t// translators: %s: the name of a menu (e.g. Header navigation).\n\t\t\t\t\t\t__( `Unable to create Navigation Menu \"%s\".` ),\n\t\t\t\t\t\tmenuName\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t} );\n\t}, [] );\n\n\treturn {\n\t\tconvert,\n\t\tstatus,\n\t\terror,\n\t};\n}\n\nexport default useConvertClassicToBlockMenu;\n"]}
@@ -35,7 +35,6 @@ const CREATE_NAVIGATION_MENU_IDLE = 'idle';
35
35
  exports.CREATE_NAVIGATION_MENU_IDLE = CREATE_NAVIGATION_MENU_IDLE;
36
36
 
37
37
  function useCreateNavigationMenu(clientId) {
38
- let postStatus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'publish';
39
38
  const [status, setStatus] = (0, _element.useState)(CREATE_NAVIGATION_MENU_IDLE);
40
39
  const [value, setValue] = (0, _element.useState)(null);
41
40
  const [error, setError] = (0, _element.useState)(null);
@@ -48,6 +47,7 @@ function useCreateNavigationMenu(clientId) {
48
47
  const create = (0, _element.useCallback)(async function () {
49
48
  let title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
50
49
  let blocks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
50
+ let postStatus = arguments.length > 2 ? arguments[2] : undefined;
51
51
 
52
52
  // Guard against creating Navigations without a title.
53
53
  // Note you can pass no title, but if one is passed it must be
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/use-create-navigation-menu.js"],"names":["CREATE_NAVIGATION_MENU_SUCCESS","CREATE_NAVIGATION_MENU_ERROR","CREATE_NAVIGATION_MENU_PENDING","CREATE_NAVIGATION_MENU_IDLE","useCreateNavigationMenu","clientId","postStatus","status","setStatus","value","setValue","error","setError","saveEntityRecord","coreStore","generateDefaultTitle","create","title","blocks","Error","catch","err","message","cause","record","content","then","response","serialize","isIdle","isPending","isSuccess","isError"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { serialize } from '@wordpress/blocks';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useGenerateDefaultNavigationTitle from './use-generate-default-navigation-title';\n\nexport const CREATE_NAVIGATION_MENU_SUCCESS = 'success';\nexport const CREATE_NAVIGATION_MENU_ERROR = 'error';\nexport const CREATE_NAVIGATION_MENU_PENDING = 'pending';\nexport const CREATE_NAVIGATION_MENU_IDLE = 'idle';\n\nexport default function useCreateNavigationMenu(\n\tclientId,\n\tpostStatus = 'publish'\n) {\n\tconst [ status, setStatus ] = useState( CREATE_NAVIGATION_MENU_IDLE );\n\tconst [ value, setValue ] = useState( null );\n\tconst [ error, setError ] = useState( null );\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst generateDefaultTitle = useGenerateDefaultNavigationTitle( clientId );\n\n\t// This callback uses data from the two placeholder steps and only creates\n\t// a new navigation menu when the user completes the final step.\n\tconst create = useCallback(\n\t\tasync ( title = null, blocks = [] ) => {\n\t\t\t// Guard against creating Navigations without a title.\n\t\t\t// Note you can pass no title, but if one is passed it must be\n\t\t\t// a string otherwise the title may end up being empty.\n\t\t\tif ( title && typeof title !== 'string' ) {\n\t\t\t\tsetError(\n\t\t\t\t\t'Invalid title supplied when creating Navigation Menu.'\n\t\t\t\t);\n\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_ERROR );\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Value of supplied title argument was not a string.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetStatus( CREATE_NAVIGATION_MENU_PENDING );\n\t\t\tsetValue( null );\n\t\t\tsetError( null );\n\n\t\t\tif ( ! title ) {\n\t\t\t\ttitle = await generateDefaultTitle().catch( ( err ) => {\n\t\t\t\t\tsetError( err?.message );\n\t\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_ERROR );\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Failed to create title when saving new Navigation Menu.',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcause: err,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t\tconst record = {\n\t\t\t\ttitle,\n\t\t\t\tcontent: serialize( blocks ),\n\t\t\t\tstatus: postStatus,\n\t\t\t};\n\n\t\t\t// Return affords ability to await on this function directly\n\t\t\treturn saveEntityRecord( 'postType', 'wp_navigation', record )\n\t\t\t\t.then( ( response ) => {\n\t\t\t\t\tsetValue( response );\n\t\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_SUCCESS );\n\t\t\t\t\treturn response;\n\t\t\t\t} )\n\t\t\t\t.catch( ( err ) => {\n\t\t\t\t\tsetError( err?.message );\n\t\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_ERROR );\n\t\t\t\t\tthrow new Error( 'Unable to save new Navigation Menu', {\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t},\n\t\t[ serialize, saveEntityRecord ]\n\t);\n\n\treturn {\n\t\tcreate,\n\t\tstatus,\n\t\tvalue,\n\t\terror,\n\t\tisIdle: status === CREATE_NAVIGATION_MENU_IDLE,\n\t\tisPending: status === CREATE_NAVIGATION_MENU_PENDING,\n\t\tisSuccess: status === CREATE_NAVIGATION_MENU_SUCCESS,\n\t\tisError: status === CREATE_NAVIGATION_MENU_ERROR,\n\t};\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/edit/use-create-navigation-menu.js"],"names":["CREATE_NAVIGATION_MENU_SUCCESS","CREATE_NAVIGATION_MENU_ERROR","CREATE_NAVIGATION_MENU_PENDING","CREATE_NAVIGATION_MENU_IDLE","useCreateNavigationMenu","clientId","status","setStatus","value","setValue","error","setError","saveEntityRecord","coreStore","generateDefaultTitle","create","title","blocks","postStatus","Error","catch","err","message","cause","record","content","then","response","serialize","isIdle","isPending","isSuccess","isError"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { serialize } from '@wordpress/blocks';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState, useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useGenerateDefaultNavigationTitle from './use-generate-default-navigation-title';\n\nexport const CREATE_NAVIGATION_MENU_SUCCESS = 'success';\nexport const CREATE_NAVIGATION_MENU_ERROR = 'error';\nexport const CREATE_NAVIGATION_MENU_PENDING = 'pending';\nexport const CREATE_NAVIGATION_MENU_IDLE = 'idle';\n\nexport default function useCreateNavigationMenu( clientId ) {\n\tconst [ status, setStatus ] = useState( CREATE_NAVIGATION_MENU_IDLE );\n\tconst [ value, setValue ] = useState( null );\n\tconst [ error, setError ] = useState( null );\n\n\tconst { saveEntityRecord } = useDispatch( coreStore );\n\tconst generateDefaultTitle = useGenerateDefaultNavigationTitle( clientId );\n\n\t// This callback uses data from the two placeholder steps and only creates\n\t// a new navigation menu when the user completes the final step.\n\tconst create = useCallback(\n\t\tasync ( title = null, blocks = [], postStatus ) => {\n\t\t\t// Guard against creating Navigations without a title.\n\t\t\t// Note you can pass no title, but if one is passed it must be\n\t\t\t// a string otherwise the title may end up being empty.\n\t\t\tif ( title && typeof title !== 'string' ) {\n\t\t\t\tsetError(\n\t\t\t\t\t'Invalid title supplied when creating Navigation Menu.'\n\t\t\t\t);\n\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_ERROR );\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Value of supplied title argument was not a string.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetStatus( CREATE_NAVIGATION_MENU_PENDING );\n\t\t\tsetValue( null );\n\t\t\tsetError( null );\n\n\t\t\tif ( ! title ) {\n\t\t\t\ttitle = await generateDefaultTitle().catch( ( err ) => {\n\t\t\t\t\tsetError( err?.message );\n\t\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_ERROR );\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'Failed to create title when saving new Navigation Menu.',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcause: err,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t\tconst record = {\n\t\t\t\ttitle,\n\t\t\t\tcontent: serialize( blocks ),\n\t\t\t\tstatus: postStatus,\n\t\t\t};\n\n\t\t\t// Return affords ability to await on this function directly\n\t\t\treturn saveEntityRecord( 'postType', 'wp_navigation', record )\n\t\t\t\t.then( ( response ) => {\n\t\t\t\t\tsetValue( response );\n\t\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_SUCCESS );\n\t\t\t\t\treturn response;\n\t\t\t\t} )\n\t\t\t\t.catch( ( err ) => {\n\t\t\t\t\tsetError( err?.message );\n\t\t\t\t\tsetStatus( CREATE_NAVIGATION_MENU_ERROR );\n\t\t\t\t\tthrow new Error( 'Unable to save new Navigation Menu', {\n\t\t\t\t\t\tcause: err,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t},\n\t\t[ serialize, saveEntityRecord ]\n\t);\n\n\treturn {\n\t\tcreate,\n\t\tstatus,\n\t\tvalue,\n\t\terror,\n\t\tisIdle: status === CREATE_NAVIGATION_MENU_IDLE,\n\t\tisPending: status === CREATE_NAVIGATION_MENU_PENDING,\n\t\tisSuccess: status === CREATE_NAVIGATION_MENU_SUCCESS,\n\t\tisError: status === CREATE_NAVIGATION_MENU_ERROR,\n\t};\n}\n"]}
@@ -95,6 +95,10 @@ const metadata = {
95
95
  maxNestingLevel: {
96
96
  type: "number",
97
97
  "default": 5
98
+ },
99
+ templateLock: {
100
+ type: ["string", "boolean"],
101
+ "enum": ["all", "insert", "contentOnly", false]
98
102
  }
99
103
  },
100
104
  providesContext: {
@@ -116,7 +120,6 @@ const metadata = {
116
120
  },
117
121
  supports: {
118
122
  align: ["wide", "full"],
119
- anchor: true,
120
123
  html: false,
121
124
  inserter: true,
122
125
  typography: {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/navigation/index.js"],"names":["name","metadata","settings","icon","example","innerBlocks","attributes","label","url","edit","save","deprecated","init"],"mappings":";;;;;;;;;AAGA;;AACA;;AAKA;;AAEA;;AACA;;AACA;;AAbA;AACA;AACA;;AAIA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM;AAAEA,EAAAA;AAAF,IAAWC,QAAjB;;AAIO,MAAMC,QAAQ,GAAG;AACvBC,EAAAA,IAAI,EAAJA,iBADuB;AAEvBC,EAAAA,OAAO,EAAE;AACRC,IAAAA,WAAW,EAAE,CACZ;AACCL,MAAAA,IAAI,EAAE,sBADP;AAECM,MAAAA,UAAU,EAAE;AACX;AACAC,QAAAA,KAAK,EAAE,cAAI,MAAJ,CAFI;AAGXC,QAAAA,GAAG,EAAE;AAHM;AAFb,KADY,EASZ;AACCR,MAAAA,IAAI,EAAE,sBADP;AAECM,MAAAA,UAAU,EAAE;AACX;AACAC,QAAAA,KAAK,EAAE,cAAI,OAAJ,CAFI;AAGXC,QAAAA,GAAG,EAAE;AAHM;AAFb,KATY,EAiBZ;AACCR,MAAAA,IAAI,EAAE,sBADP;AAECM,MAAAA,UAAU,EAAE;AACX;AACAC,QAAAA,KAAK,EAAE,cAAI,SAAJ,CAFI;AAGXC,QAAAA,GAAG,EAAE;AAHM;AAFb,KAjBY;AADL,GAFc;AA8BvBC,EAAAA,IAAI,EAAJA,aA9BuB;AA+BvBC,EAAAA,IAAI,EAAJA,aA/BuB;AAgCvBC,EAAAA,UAAU,EAAVA;AAhCuB,CAAjB;;;AAmCA,MAAMC,IAAI,GAAG,MAAM,wBAAW;AAAEZ,EAAAA,IAAF;AAAQC,EAAAA,QAAR;AAAkBC,EAAAA;AAAlB,CAAX,CAAnB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { navigation as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\nimport deprecated from './deprecated';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/navigation-link',\n\t\t\t\tattributes: {\n\t\t\t\t\t// translators: 'Home' as in a website's home page.\n\t\t\t\t\tlabel: __( 'Home' ),\n\t\t\t\t\turl: 'https://make.wordpress.org/',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/navigation-link',\n\t\t\t\tattributes: {\n\t\t\t\t\t// translators: 'About' as in a website's about page.\n\t\t\t\t\tlabel: __( 'About' ),\n\t\t\t\t\turl: 'https://make.wordpress.org/',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/navigation-link',\n\t\t\t\tattributes: {\n\t\t\t\t\t// translators: 'Contact' as in a website's contact page.\n\t\t\t\t\tlabel: __( 'Contact' ),\n\t\t\t\t\turl: 'https://make.wordpress.org/',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/navigation/index.js"],"names":["name","metadata","settings","icon","example","innerBlocks","attributes","label","url","edit","save","deprecated","init"],"mappings":";;;;;;;;;AAGA;;AACA;;AAKA;;AAEA;;AACA;;AACA;;AAbA;AACA;AACA;;AAIA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM;AAAEA,EAAAA;AAAF,IAAWC,QAAjB;;AAIO,MAAMC,QAAQ,GAAG;AACvBC,EAAAA,IAAI,EAAJA,iBADuB;AAEvBC,EAAAA,OAAO,EAAE;AACRC,IAAAA,WAAW,EAAE,CACZ;AACCL,MAAAA,IAAI,EAAE,sBADP;AAECM,MAAAA,UAAU,EAAE;AACX;AACAC,QAAAA,KAAK,EAAE,cAAI,MAAJ,CAFI;AAGXC,QAAAA,GAAG,EAAE;AAHM;AAFb,KADY,EASZ;AACCR,MAAAA,IAAI,EAAE,sBADP;AAECM,MAAAA,UAAU,EAAE;AACX;AACAC,QAAAA,KAAK,EAAE,cAAI,OAAJ,CAFI;AAGXC,QAAAA,GAAG,EAAE;AAHM;AAFb,KATY,EAiBZ;AACCR,MAAAA,IAAI,EAAE,sBADP;AAECM,MAAAA,UAAU,EAAE;AACX;AACAC,QAAAA,KAAK,EAAE,cAAI,SAAJ,CAFI;AAGXC,QAAAA,GAAG,EAAE;AAHM;AAFb,KAjBY;AADL,GAFc;AA8BvBC,EAAAA,IAAI,EAAJA,aA9BuB;AA+BvBC,EAAAA,IAAI,EAAJA,aA/BuB;AAgCvBC,EAAAA,UAAU,EAAVA;AAhCuB,CAAjB;;;AAmCA,MAAMC,IAAI,GAAG,MAAM,wBAAW;AAAEZ,EAAAA,IAAF;AAAQC,EAAAA,QAAR;AAAkBC,EAAAA;AAAlB,CAAX,CAAnB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { navigation as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\nimport deprecated from './deprecated';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/navigation-link',\n\t\t\t\tattributes: {\n\t\t\t\t\t// translators: 'Home' as in a website's home page.\n\t\t\t\t\tlabel: __( 'Home' ),\n\t\t\t\t\turl: 'https://make.wordpress.org/',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/navigation-link',\n\t\t\t\tattributes: {\n\t\t\t\t\t// translators: 'About' as in a website's about page.\n\t\t\t\t\tlabel: __( 'About' ),\n\t\t\t\t\turl: 'https://make.wordpress.org/',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/navigation-link',\n\t\t\t\tattributes: {\n\t\t\t\t\t// translators: 'Contact' as in a website's contact page.\n\t\t\t\t\tlabel: __( 'Contact' ),\n\t\t\t\t\turl: 'https://make.wordpress.org/',\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t},\n\tedit,\n\tsave,\n\tdeprecated,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"]}
@@ -12,6 +12,8 @@ var _element = require("@wordpress/element");
12
12
 
13
13
  var _classnames = _interopRequireDefault(require("classnames"));
14
14
 
15
+ var _escapeHtml = _interopRequireDefault(require("escape-html"));
16
+
15
17
  var _lodash = require("lodash");
16
18
 
17
19
  var _blocks = require("@wordpress/blocks");
@@ -341,7 +343,7 @@ const updateNavigationLinkBlockAttributes = function () {
341
343
  // - https://github.com/WordPress/gutenberg/pull/41063
342
344
  // - https://github.com/WordPress/gutenberg/pull/18617.
343
345
 
344
- const label = useNewLabel ? (0, _lodash.escape)(newLabel) : originalLabel || (0, _lodash.escape)(newUrlWithoutHttp); // In https://github.com/WordPress/gutenberg/pull/24670 we decided to use "tag" in favor of "post_tag"
346
+ const label = useNewLabel ? (0, _escapeHtml.default)(newLabel) : originalLabel || (0, _escapeHtml.default)(newUrlWithoutHttp); // In https://github.com/WordPress/gutenberg/pull/24670 we decided to use "tag" in favor of "post_tag"
345
347
 
346
348
  const type = newType === 'post_tag' ? 'tag' : newType.replace('-', '_');
347
349
  const isBuiltInType = ['post', 'page', 'tag', 'category'].indexOf(type) > -1;
@@ -542,7 +544,7 @@ function NavigationLinkEdit(_ref2) {
542
544
  const [popoverAnchor, setPopoverAnchor] = (0, _element.useState)(null);
543
545
  const listItemRef = (0, _element.useRef)(null);
544
546
  const isDraggingWithin = useIsDraggingWithin(listItemRef);
545
- const itemLabelPlaceholder = (0, _i18n.__)('Add link…');
547
+ const itemLabelPlaceholder = (0, _i18n.__)('Add label…');
546
548
  const ref = (0, _element.useRef)();
547
549
  const pagesPermissions = (0, _coreData.useResourcePermissions)('pages');
548
550
  const postsPermissions = (0, _coreData.useResourcePermissions)('posts');
@@ -830,7 +832,7 @@ function NavigationLinkEdit(_ref2) {
830
832
  `${(0, _lodash.unescape)(label)} ${placeholderText}`.trim()), (0, _element.createElement)("span", {
831
833
  className: "wp-block-navigation-link__missing_text-tooltip"
832
834
  }, tooltipText))))), isLinkOpen && (0, _element.createElement)(_components.Popover, {
833
- position: "bottom center",
835
+ placement: "bottom",
834
836
  onClose: () => setIsLinkOpen(false),
835
837
  anchor: popoverAnchor,
836
838
  shift: true