@wordpress/block-library 11.0.0 → 11.0.2-next.v.202609171837.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 (434) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +7 -7
  3. package/build/archives/edit.cjs.map +3 -3
  4. package/build/audio/edit.cjs.map +3 -3
  5. package/build/avatar/hooks.cjs.map +2 -2
  6. package/build/button/edit.cjs.map +2 -2
  7. package/build/categories/edit.cjs.map +3 -3
  8. package/build/code/block.json +1 -0
  9. package/build/code/save.cjs.map +2 -2
  10. package/build/comment-template/hooks.cjs.map +2 -2
  11. package/build/cover/edit/index.cjs.map +2 -2
  12. package/build/cover/edit/inspector-controls.cjs.map +2 -2
  13. package/build/cover/transforms.cjs.map +2 -2
  14. package/build/details/block.json +1 -0
  15. package/build/details/index.cjs.map +2 -2
  16. package/build/embed/embed-controls.cjs.map +2 -2
  17. package/build/file/deprecated.cjs.map +2 -2
  18. package/build/file/edit.cjs.map +2 -2
  19. package/build/file/inspector.cjs.map +3 -3
  20. package/build/file/save.cjs.map +2 -2
  21. package/build/footnotes/block.json +1 -0
  22. package/build/footnotes/edit.cjs.map +2 -2
  23. package/build/gallery/dynamic-gallery.cjs.map +3 -3
  24. package/build/gallery/edit.cjs +64 -37
  25. package/build/gallery/edit.cjs.map +3 -3
  26. package/build/gallery/{flex-styles.cjs → gallery-styles.cjs} +31 -32
  27. package/build/gallery/gallery-styles.cjs.map +7 -0
  28. package/build/gallery/responsive-styles.cjs +27 -5
  29. package/build/gallery/responsive-styles.cjs.map +2 -2
  30. package/build/heading/block.json +2 -0
  31. package/build/heading/index.cjs.map +2 -2
  32. package/build/html/modal.cjs +3 -6
  33. package/build/html/modal.cjs.map +2 -2
  34. package/build/image/edit.cjs.map +2 -2
  35. package/build/image/image.cjs.map +2 -2
  36. package/build/index.cjs.map +2 -2
  37. package/build/latest-comments/edit.cjs.map +3 -3
  38. package/build/latest-posts/edit.cjs.map +2 -2
  39. package/build/list/ordered-list-settings.cjs.map +3 -3
  40. package/build/list-item/hooks/use-enter.cjs.map +2 -2
  41. package/build/math/block.json +2 -0
  42. package/build/math/deprecated.cjs +29 -12
  43. package/build/math/deprecated.cjs.map +2 -2
  44. package/build/math/edit.cjs +67 -46
  45. package/build/math/edit.cjs.map +2 -2
  46. package/build/math/save.cjs +2 -2
  47. package/build/math/save.cjs.map +2 -2
  48. package/build/media-text/constants.cjs +3 -0
  49. package/build/media-text/constants.cjs.map +2 -2
  50. package/build/media-text/deprecated.cjs.map +2 -2
  51. package/build/media-text/edit.cjs +40 -0
  52. package/build/media-text/edit.cjs.map +3 -3
  53. package/build/media-text/image-fill.cjs.map +2 -2
  54. package/build/media-text/media-container.cjs +3 -3
  55. package/build/media-text/media-container.cjs.map +2 -2
  56. package/build/navigation/edit/index.cjs.map +2 -2
  57. package/build/navigation/edit/menu-inspector-controls.cjs.map +2 -2
  58. package/build/navigation/edit/overlay-template-part-selector.cjs.map +3 -3
  59. package/build/navigation/edit/responsive-wrapper.cjs.map +2 -2
  60. package/build/navigation/edit/use-generate-default-navigation-title.cjs.map +2 -2
  61. package/build/navigation/view.cjs +2 -2
  62. package/build/navigation/view.cjs.map +2 -2
  63. package/build/navigation-link/edit.cjs.map +2 -2
  64. package/build/navigation-link/shared/invalid-draft-display.cjs.map +2 -2
  65. package/build/navigation-submenu/edit.cjs.map +2 -2
  66. package/build/paragraph/block.json +1 -0
  67. package/build/paragraph/edit.cjs.map +2 -2
  68. package/build/paragraph/index.cjs +6 -0
  69. package/build/paragraph/index.cjs.map +3 -3
  70. package/build/playlist/edit.cjs +2 -1
  71. package/build/playlist/edit.cjs.map +3 -3
  72. package/build/post-author/edit.cjs.map +3 -3
  73. package/build/post-author-name/edit.cjs.map +2 -2
  74. package/build/post-content/block.json +1 -0
  75. package/build/post-date/edit.cjs.map +2 -2
  76. package/build/post-excerpt/block.json +1 -0
  77. package/build/post-excerpt/edit.cjs.map +2 -2
  78. package/build/post-featured-image/edit.cjs.map +2 -2
  79. package/build/post-navigation-link/edit.cjs.map +3 -3
  80. package/build/post-time-to-read/edit.cjs.map +2 -2
  81. package/build/pullquote/deprecated.cjs.map +2 -2
  82. package/build/query/deprecated.cjs.map +2 -2
  83. package/build/query/edit/inspector-controls/index.cjs.map +3 -3
  84. package/build/query/edit/inspector-controls/order-control.cjs.map +3 -3
  85. package/build/query/edit/inspector-controls/sticky-control.cjs.map +3 -3
  86. package/build/query/view.cjs.map +2 -2
  87. package/build/query-title/use-archive-label.cjs.map +2 -2
  88. package/build/quote/deprecated.cjs.map +2 -2
  89. package/build/quote/transforms.cjs.map +2 -2
  90. package/build/search/edit.cjs.map +3 -3
  91. package/build/separator/edit.cjs.map +3 -3
  92. package/build/social-links/edit.cjs.map +3 -3
  93. package/build/table/state.cjs.map +2 -2
  94. package/build/table-of-contents/edit.cjs.map +3 -3
  95. package/build/table-of-contents/utils.cjs.map +2 -2
  96. package/build/tabs/use-tab-actions.cjs.map +2 -2
  97. package/build/tag-cloud/edit.cjs.map +3 -3
  98. package/build/template-part/edit/advanced-controls.cjs.map +3 -3
  99. package/build/template-part/edit/import-controls.cjs.map +3 -3
  100. package/build/template-part/edit/index.cjs.map +2 -2
  101. package/build/template-part/edit/inner-blocks.cjs.map +2 -2
  102. package/build/template-part/edit/placeholder.cjs.map +2 -2
  103. package/build/term-count/use-term-count.cjs.map +2 -2
  104. package/build/term-description/use-term-description.cjs.map +2 -2
  105. package/build/term-name/use-term-name.cjs.map +2 -2
  106. package/build/terms-query/edit/inspector-controls/index.cjs.map +2 -2
  107. package/build/terms-query/edit/inspector-controls/inherit-control.cjs.map +2 -2
  108. package/build/terms-query/edit/inspector-controls/order-control.cjs.map +3 -3
  109. package/build/terms-query/edit/inspector-controls/taxonomy-control.cjs.map +3 -3
  110. package/build/utils/hooks.cjs.map +2 -2
  111. package/build/utils/media-control.cjs +5 -1
  112. package/build/utils/media-control.cjs.map +2 -2
  113. package/build/utils/poster-image.cjs.map +2 -2
  114. package/build/verse/block.json +1 -0
  115. package/build/video/edit-common-settings.cjs.map +3 -3
  116. package/build/video/tracks-editor.cjs.map +3 -3
  117. package/build-module/archives/edit.mjs +2 -2
  118. package/build-module/archives/edit.mjs.map +2 -2
  119. package/build-module/audio/edit.mjs +2 -2
  120. package/build-module/audio/edit.mjs.map +2 -2
  121. package/build-module/avatar/hooks.mjs.map +2 -2
  122. package/build-module/button/edit.mjs.map +2 -2
  123. package/build-module/categories/edit.mjs +2 -2
  124. package/build-module/categories/edit.mjs.map +2 -2
  125. package/build-module/code/block.json +1 -0
  126. package/build-module/code/save.mjs.map +2 -2
  127. package/build-module/comment-template/hooks.mjs.map +2 -2
  128. package/build-module/cover/edit/index.mjs.map +2 -2
  129. package/build-module/cover/edit/inspector-controls.mjs.map +2 -2
  130. package/build-module/cover/transforms.mjs.map +2 -2
  131. package/build-module/details/block.json +1 -0
  132. package/build-module/details/index.mjs.map +2 -2
  133. package/build-module/embed/embed-controls.mjs.map +2 -2
  134. package/build-module/file/deprecated.mjs.map +2 -2
  135. package/build-module/file/edit.mjs.map +2 -2
  136. package/build-module/file/inspector.mjs +2 -2
  137. package/build-module/file/inspector.mjs.map +2 -2
  138. package/build-module/file/save.mjs.map +2 -2
  139. package/build-module/footnotes/block.json +1 -0
  140. package/build-module/footnotes/edit.mjs.map +2 -2
  141. package/build-module/gallery/dynamic-gallery.mjs +2 -2
  142. package/build-module/gallery/dynamic-gallery.mjs.map +2 -2
  143. package/build-module/gallery/edit.mjs +67 -40
  144. package/build-module/gallery/edit.mjs.map +2 -2
  145. package/build-module/gallery/{flex-styles.mjs → gallery-styles.mjs} +29 -30
  146. package/build-module/gallery/gallery-styles.mjs.map +7 -0
  147. package/build-module/gallery/responsive-styles.mjs +25 -4
  148. package/build-module/gallery/responsive-styles.mjs.map +2 -2
  149. package/build-module/heading/block.json +2 -0
  150. package/build-module/heading/index.mjs.map +2 -2
  151. package/build-module/html/modal.mjs +3 -6
  152. package/build-module/html/modal.mjs.map +2 -2
  153. package/build-module/image/edit.mjs.map +2 -2
  154. package/build-module/image/image.mjs.map +2 -2
  155. package/build-module/index.mjs.map +2 -2
  156. package/build-module/latest-comments/edit.mjs +2 -2
  157. package/build-module/latest-comments/edit.mjs.map +2 -2
  158. package/build-module/latest-posts/edit.mjs.map +2 -2
  159. package/build-module/list/ordered-list-settings.mjs +2 -2
  160. package/build-module/list/ordered-list-settings.mjs.map +2 -2
  161. package/build-module/list-item/hooks/use-enter.mjs.map +2 -2
  162. package/build-module/math/block.json +2 -0
  163. package/build-module/math/deprecated.mjs +29 -12
  164. package/build-module/math/deprecated.mjs.map +2 -2
  165. package/build-module/math/edit.mjs +68 -47
  166. package/build-module/math/edit.mjs.map +2 -2
  167. package/build-module/math/save.mjs +2 -2
  168. package/build-module/math/save.mjs.map +2 -2
  169. package/build-module/media-text/constants.mjs +2 -0
  170. package/build-module/media-text/constants.mjs.map +2 -2
  171. package/build-module/media-text/deprecated.mjs.map +2 -2
  172. package/build-module/media-text/edit.mjs +42 -1
  173. package/build-module/media-text/edit.mjs.map +2 -2
  174. package/build-module/media-text/image-fill.mjs.map +2 -2
  175. package/build-module/media-text/media-container.mjs +1 -1
  176. package/build-module/media-text/media-container.mjs.map +2 -2
  177. package/build-module/navigation/edit/index.mjs.map +2 -2
  178. package/build-module/navigation/edit/menu-inspector-controls.mjs.map +2 -2
  179. package/build-module/navigation/edit/overlay-template-part-selector.mjs +2 -2
  180. package/build-module/navigation/edit/overlay-template-part-selector.mjs.map +2 -2
  181. package/build-module/navigation/edit/responsive-wrapper.mjs.map +2 -2
  182. package/build-module/navigation/edit/use-generate-default-navigation-title.mjs.map +2 -2
  183. package/build-module/navigation/view.mjs +2 -2
  184. package/build-module/navigation/view.mjs.map +2 -2
  185. package/build-module/navigation-link/edit.mjs.map +2 -2
  186. package/build-module/navigation-link/shared/invalid-draft-display.mjs.map +2 -2
  187. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  188. package/build-module/paragraph/block.json +1 -0
  189. package/build-module/paragraph/edit.mjs.map +2 -2
  190. package/build-module/paragraph/index.mjs +6 -0
  191. package/build-module/paragraph/index.mjs.map +2 -2
  192. package/build-module/playlist/edit.mjs +5 -4
  193. package/build-module/playlist/edit.mjs.map +2 -2
  194. package/build-module/post-author/edit.mjs +2 -2
  195. package/build-module/post-author/edit.mjs.map +2 -2
  196. package/build-module/post-author-name/edit.mjs.map +2 -2
  197. package/build-module/post-content/block.json +1 -0
  198. package/build-module/post-date/edit.mjs.map +2 -2
  199. package/build-module/post-excerpt/block.json +1 -0
  200. package/build-module/post-excerpt/edit.mjs.map +2 -2
  201. package/build-module/post-featured-image/edit.mjs.map +2 -2
  202. package/build-module/post-navigation-link/edit.mjs +2 -2
  203. package/build-module/post-navigation-link/edit.mjs.map +2 -2
  204. package/build-module/post-time-to-read/edit.mjs.map +2 -2
  205. package/build-module/pullquote/deprecated.mjs.map +2 -2
  206. package/build-module/query/deprecated.mjs.map +2 -2
  207. package/build-module/query/edit/inspector-controls/index.mjs +2 -2
  208. package/build-module/query/edit/inspector-controls/index.mjs.map +2 -2
  209. package/build-module/query/edit/inspector-controls/order-control.mjs +2 -2
  210. package/build-module/query/edit/inspector-controls/order-control.mjs.map +2 -2
  211. package/build-module/query/edit/inspector-controls/sticky-control.mjs +2 -2
  212. package/build-module/query/edit/inspector-controls/sticky-control.mjs.map +2 -2
  213. package/build-module/query/view.mjs.map +2 -2
  214. package/build-module/query-title/use-archive-label.mjs.map +2 -2
  215. package/build-module/quote/deprecated.mjs.map +2 -2
  216. package/build-module/quote/transforms.mjs.map +2 -2
  217. package/build-module/search/edit.mjs +3 -3
  218. package/build-module/search/edit.mjs.map +2 -2
  219. package/build-module/separator/edit.mjs +5 -2
  220. package/build-module/separator/edit.mjs.map +2 -2
  221. package/build-module/social-links/edit.mjs +2 -2
  222. package/build-module/social-links/edit.mjs.map +2 -2
  223. package/build-module/table/state.mjs.map +2 -2
  224. package/build-module/table-of-contents/edit.mjs +2 -2
  225. package/build-module/table-of-contents/edit.mjs.map +2 -2
  226. package/build-module/table-of-contents/utils.mjs.map +2 -2
  227. package/build-module/tabs/use-tab-actions.mjs.map +2 -2
  228. package/build-module/tag-cloud/edit.mjs +2 -2
  229. package/build-module/tag-cloud/edit.mjs.map +2 -2
  230. package/build-module/template-part/edit/advanced-controls.mjs +5 -2
  231. package/build-module/template-part/edit/advanced-controls.mjs.map +2 -2
  232. package/build-module/template-part/edit/import-controls.mjs +2 -2
  233. package/build-module/template-part/edit/import-controls.mjs.map +2 -2
  234. package/build-module/template-part/edit/index.mjs.map +2 -2
  235. package/build-module/template-part/edit/inner-blocks.mjs.map +2 -2
  236. package/build-module/template-part/edit/placeholder.mjs.map +2 -2
  237. package/build-module/term-count/use-term-count.mjs.map +2 -2
  238. package/build-module/term-description/use-term-description.mjs.map +2 -2
  239. package/build-module/term-name/use-term-name.mjs.map +2 -2
  240. package/build-module/terms-query/edit/inspector-controls/index.mjs.map +2 -2
  241. package/build-module/terms-query/edit/inspector-controls/inherit-control.mjs.map +2 -2
  242. package/build-module/terms-query/edit/inspector-controls/order-control.mjs +2 -2
  243. package/build-module/terms-query/edit/inspector-controls/order-control.mjs.map +2 -2
  244. package/build-module/terms-query/edit/inspector-controls/taxonomy-control.mjs +2 -2
  245. package/build-module/terms-query/edit/inspector-controls/taxonomy-control.mjs.map +2 -2
  246. package/build-module/utils/hooks.mjs.map +2 -2
  247. package/build-module/utils/media-control.mjs +5 -1
  248. package/build-module/utils/media-control.mjs.map +2 -2
  249. package/build-module/utils/poster-image.mjs.map +2 -2
  250. package/build-module/verse/block.json +1 -0
  251. package/build-module/video/edit-common-settings.mjs +2 -2
  252. package/build-module/video/edit-common-settings.mjs.map +2 -2
  253. package/build-module/video/tracks-editor.mjs +2 -2
  254. package/build-module/video/tracks-editor.mjs.map +2 -2
  255. package/build-style/button/style-rtl.css +2 -1
  256. package/build-style/button/style.css +2 -1
  257. package/build-style/columns/style-rtl.css +1 -1
  258. package/build-style/columns/style.css +1 -1
  259. package/build-style/comments/editor-rtl.css +1 -1
  260. package/build-style/comments/editor.css +1 -1
  261. package/build-style/comments/style-rtl.css +1 -1
  262. package/build-style/comments/style.css +1 -1
  263. package/build-style/common-rtl.css +1 -1
  264. package/build-style/common.css +1 -1
  265. package/build-style/cover/style-rtl.css +6 -0
  266. package/build-style/cover/style.css +6 -0
  267. package/build-style/editor-rtl.css +9 -5
  268. package/build-style/editor.css +9 -5
  269. package/build-style/embed/editor-rtl.css +2 -1
  270. package/build-style/embed/editor.css +2 -1
  271. package/build-style/gallery/style-rtl.css +1 -2
  272. package/build-style/gallery/style.css +1 -2
  273. package/build-style/image/style-rtl.css +6 -9
  274. package/build-style/image/style.css +6 -9
  275. package/build-style/math/editor-rtl.css +5 -0
  276. package/build-style/math/editor.css +5 -0
  277. package/build-style/navigation/editor-rtl.css +1 -0
  278. package/build-style/navigation/editor.css +1 -0
  279. package/build-style/navigation/style-rtl.css +1 -1
  280. package/build-style/navigation/style.css +1 -1
  281. package/build-style/post-title/style-rtl.css +2 -2
  282. package/build-style/post-title/style.css +2 -2
  283. package/build-style/query-pagination/editor-rtl.css +0 -3
  284. package/build-style/query-pagination/editor.css +0 -3
  285. package/build-style/search/theme-rtl.css +1 -1
  286. package/build-style/search/theme.css +1 -1
  287. package/build-style/style-rtl.css +23 -19
  288. package/build-style/style.css +23 -19
  289. package/build-style/theme-rtl.css +1 -1
  290. package/build-style/theme.css +1 -1
  291. package/build-style/verse/style-rtl.css +2 -1
  292. package/build-style/verse/style.css +2 -1
  293. package/package.json +40 -40
  294. package/src/archives/edit.jsx +2 -2
  295. package/src/audio/edit.jsx +2 -2
  296. package/src/avatar/hooks.js +2 -2
  297. package/src/button/edit.jsx +1 -1
  298. package/src/button/style.scss +2 -2
  299. package/src/calendar/index.php +1 -1
  300. package/src/categories/edit.jsx +2 -2
  301. package/src/code/README.md +1 -0
  302. package/src/code/block.json +1 -0
  303. package/src/code/save.jsx +1 -1
  304. package/src/columns/style.scss +2 -3
  305. package/src/comment-template/hooks.js +1 -1
  306. package/src/comments/style.scss +1 -1
  307. package/src/common.scss +1 -2
  308. package/src/cover/edit/index.jsx +2 -2
  309. package/src/cover/edit/inspector-controls.jsx +2 -2
  310. package/src/cover/style.scss +10 -0
  311. package/src/cover/test/{edit.jsdom.test.js → edit.browser.test.js} +104 -145
  312. package/src/cover/transforms.js +3 -3
  313. package/src/details/README.md +1 -0
  314. package/src/details/block.json +1 -0
  315. package/src/details/index.js +1 -1
  316. package/src/embed/editor.scss +2 -2
  317. package/src/embed/embed-controls.jsx +2 -2
  318. package/src/file/deprecated.jsx +3 -3
  319. package/src/file/edit.jsx +5 -3
  320. package/src/file/inspector.jsx +3 -3
  321. package/src/file/save.jsx +2 -2
  322. package/src/footnotes/README.md +1 -0
  323. package/src/footnotes/block.json +1 -0
  324. package/src/footnotes/edit.jsx +1 -1
  325. package/src/gallery/dynamic-gallery.jsx +4 -4
  326. package/src/gallery/edit.jsx +121 -68
  327. package/src/gallery/gallery-styles.js +117 -0
  328. package/src/gallery/index.php +181 -67
  329. package/src/gallery/responsive-styles.js +59 -5
  330. package/src/gallery/test/edit.jsdom.test.js +71 -3
  331. package/src/gallery/test/responsive-styles.js +59 -5
  332. package/src/heading/README.md +2 -0
  333. package/src/heading/block.json +2 -0
  334. package/src/heading/index.js +2 -2
  335. package/src/html/modal.jsx +0 -3
  336. package/src/image/edit.jsx +1 -1
  337. package/src/image/image.jsx +7 -7
  338. package/src/image/index.php +10 -4
  339. package/src/image/style.scss +1 -0
  340. package/src/image/test/use-open-image-media-editor-modal.jsdom.test.js +1 -1
  341. package/src/index.jsx +1 -1
  342. package/src/latest-comments/edit.jsx +2 -2
  343. package/src/latest-posts/edit.jsx +1 -1
  344. package/src/list/ordered-list-settings.jsx +2 -2
  345. package/src/list-item/hooks/use-enter.js +1 -1
  346. package/src/math/README.md +2 -2
  347. package/src/math/block.json +2 -0
  348. package/src/math/deprecated.jsx +38 -12
  349. package/src/math/edit.jsx +49 -20
  350. package/src/math/editor.scss +5 -0
  351. package/src/math/save.jsx +20 -4
  352. package/src/media-text/constants.js +1 -0
  353. package/src/media-text/deprecated.jsx +3 -3
  354. package/src/media-text/edit.jsx +48 -3
  355. package/src/media-text/image-fill.js +2 -2
  356. package/src/media-text/media-container.jsx +1 -1
  357. package/src/navigation/edit/index.jsx +1 -1
  358. package/src/navigation/edit/menu-inspector-controls.jsx +2 -2
  359. package/src/navigation/edit/overlay-template-part-selector.jsx +3 -3
  360. package/src/navigation/edit/responsive-wrapper.jsx +1 -1
  361. package/src/navigation/edit/use-generate-default-navigation-title.js +2 -2
  362. package/src/navigation/editor.scss +1 -0
  363. package/src/navigation/index.php +12 -0
  364. package/src/navigation/style.scss +1 -1
  365. package/src/navigation/test/use-navigation-menu.jsdom.test.js +6 -28
  366. package/src/navigation/test/view.jsdom.test.js +23 -0
  367. package/src/navigation/view.js +9 -6
  368. package/src/navigation-link/edit.jsx +1 -1
  369. package/src/navigation-link/shared/invalid-draft-display.jsx +2 -2
  370. package/src/navigation-link/test/__snapshots__/hooks.jsdom.test.js.snap +41 -11
  371. package/src/navigation-submenu/edit.jsx +1 -1
  372. package/src/paragraph/README.md +1 -0
  373. package/src/paragraph/block.json +1 -0
  374. package/src/paragraph/edit.jsx +1 -1
  375. package/src/paragraph/index.js +7 -0
  376. package/src/pattern/index.php +2 -2
  377. package/src/playlist/edit.jsx +6 -4
  378. package/src/playlist-track/test/edit.jsdom.test.jsx +2 -3
  379. package/src/post-author/edit.jsx +2 -2
  380. package/src/post-author-name/edit.jsx +1 -1
  381. package/src/post-content/README.md +1 -0
  382. package/src/post-content/block.json +1 -0
  383. package/src/post-date/edit.jsx +2 -2
  384. package/src/post-excerpt/README.md +1 -0
  385. package/src/post-excerpt/block.json +1 -0
  386. package/src/post-excerpt/edit.jsx +1 -1
  387. package/src/post-featured-image/edit.jsx +2 -2
  388. package/src/post-navigation-link/edit.jsx +4 -4
  389. package/src/post-time-to-read/edit.jsx +2 -2
  390. package/src/post-title/style.scss +2 -3
  391. package/src/pullquote/deprecated.jsx +1 -1
  392. package/src/query/deprecated.jsx +1 -1
  393. package/src/query/edit/inspector-controls/index.jsx +4 -4
  394. package/src/query/edit/inspector-controls/order-control.jsx +2 -2
  395. package/src/query/edit/inspector-controls/sticky-control.jsx +2 -2
  396. package/src/query/view.js +6 -9
  397. package/src/query-pagination/editor.scss +0 -3
  398. package/src/query-title/use-archive-label.js +1 -1
  399. package/src/quote/deprecated.jsx +2 -2
  400. package/src/quote/transforms.js +3 -3
  401. package/src/search/edit.jsx +6 -6
  402. package/src/search/theme.scss +1 -1
  403. package/src/separator/edit.jsx +7 -4
  404. package/src/social-links/edit.jsx +2 -2
  405. package/src/table/state.js +1 -1
  406. package/src/table-of-contents/edit.jsx +6 -6
  407. package/src/table-of-contents/utils.ts +2 -2
  408. package/src/tabs/use-tab-actions.js +1 -1
  409. package/src/tag-cloud/edit.jsx +2 -2
  410. package/src/template-part/edit/advanced-controls.jsx +5 -2
  411. package/src/template-part/edit/import-controls.jsx +2 -2
  412. package/src/template-part/edit/index.jsx +2 -2
  413. package/src/template-part/edit/inner-blocks.jsx +1 -1
  414. package/src/template-part/edit/placeholder.jsx +2 -2
  415. package/src/term-count/use-term-count.js +1 -1
  416. package/src/term-description/use-term-description.js +1 -1
  417. package/src/term-name/use-term-name.js +1 -1
  418. package/src/terms-query/edit/inspector-controls/index.jsx +2 -2
  419. package/src/terms-query/edit/inspector-controls/inherit-control.jsx +1 -1
  420. package/src/terms-query/edit/inspector-controls/order-control.jsx +2 -2
  421. package/src/terms-query/edit/inspector-controls/taxonomy-control.jsx +2 -2
  422. package/src/utils/hooks.js +1 -1
  423. package/src/utils/media-control.jsx +16 -10
  424. package/src/utils/poster-image.jsx +2 -2
  425. package/src/utils/test/waveform-player.jsdom.test.jsx +36 -38
  426. package/src/utils/test/{waveform-utils.jsdom.test.js → waveform-utils.browser.test.js} +64 -44
  427. package/src/verse/README.md +1 -0
  428. package/src/verse/block.json +1 -0
  429. package/src/verse/style.scss +2 -2
  430. package/src/video/edit-common-settings.jsx +3 -3
  431. package/src/video/tracks-editor.jsx +2 -2
  432. package/build/gallery/flex-styles.cjs.map +0 -7
  433. package/build-module/gallery/flex-styles.mjs.map +0 -7
  434. package/src/gallery/flex-styles.js +0 -99
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/social-links/edit.jsx"],
4
- "sourcesContent": ["import clsx from 'clsx';\nimport { useEffect } from '@wordpress/element';\nimport {\n\tuseInnerBlocksProps,\n\tuseBlockProps,\n\tInspectorControls,\n\tContrastChecker,\n\twithColors,\n\tInnerBlocks,\n\t__experimentalColorGradientSettingsDropdown as ColorGradientSettingsDropdown,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tToggleControl,\n\tSelectControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { unlock } from '../lock-unlock';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst sizeOptions = [\n\t{ label: __( 'Default' ), value: '' },\n\t{ label: __( 'Small' ), value: 'has-small-icon-size' },\n\t{ label: __( 'Normal' ), value: 'has-normal-icon-size' },\n\t{ label: __( 'Large' ), value: 'has-large-icon-size' },\n\t{ label: __( 'Huge' ), value: 'has-huge-icon-size' },\n];\n\nexport function SocialLinksEdit( props ) {\n\tconst {\n\t\tclientId,\n\t\tattributes,\n\t\ticonBackgroundColor,\n\t\ticonColor,\n\t\tisSelected,\n\t\tsetAttributes,\n\t\tsetIconBackgroundColor,\n\t\tsetIconColor,\n\t} = props;\n\n\tconst {\n\t\ticonBackgroundColorValue,\n\t\ticonColorValue,\n\t\topenInNewTab,\n\t\tshowLabels,\n\t\tsize,\n\t} = attributes;\n\n\tconst { hasSocialIcons, hasSelectedChild, hasSelectedStyleState } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockCount,\n\t\t\t\t\thasSelectedInnerBlock,\n\t\t\t\t\thasSelectedStyleState: hasSelectedBlockStyleState,\n\t\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\t\treturn {\n\t\t\t\t\thasSocialIcons: getBlockCount( clientId ) > 0,\n\t\t\t\t\thasSelectedChild: hasSelectedInnerBlock( clientId ),\n\t\t\t\t\thasSelectedStyleState:\n\t\t\t\t\t\thasSelectedBlockStyleState( clientId ),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\n\tconst hasAnySelected = isSelected || hasSelectedChild;\n\n\tconst logosOnly = attributes.className?.includes( 'is-style-logos-only' );\n\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\t// Remove icon background color when logos only style is selected or\n\t// restore it when any other style is selected.\n\tuseEffect( () => {\n\t\tif ( logosOnly ) {\n\t\t\tlet restore;\n\t\t\tsetAttributes( ( prev ) => {\n\t\t\t\trestore = {\n\t\t\t\t\ticonBackgroundColor: prev.iconBackgroundColor,\n\t\t\t\t\ticonBackgroundColorValue: prev.iconBackgroundColorValue,\n\t\t\t\t\tcustomIconBackgroundColor: prev.customIconBackgroundColor,\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\ticonBackgroundColor: undefined,\n\t\t\t\t\ticonBackgroundColorValue: undefined,\n\t\t\t\t\tcustomIconBackgroundColor: undefined,\n\t\t\t\t};\n\t\t\t} );\n\n\t\t\treturn () => setAttributes( { ...restore } );\n\t\t}\n\t}, [ logosOnly, setAttributes ] );\n\n\t// Fallback color values are used maintain selections in case switching\n\t// themes and named colors in palette do not match.\n\tconst className = clsx( size, {\n\t\t'has-visible-labels': showLabels,\n\t\t'has-icon-color': iconColor.color || iconColorValue,\n\t\t'has-icon-background-color':\n\t\t\ticonBackgroundColor.color || iconBackgroundColorValue,\n\t} );\n\n\tconst blockProps = useBlockProps( { className } );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: false,\n\t\torientation: attributes.layout?.orientation ?? 'horizontal',\n\t\t__experimentalAppenderTagName: 'li',\n\t\trenderAppender:\n\t\t\t! hasSocialIcons || hasAnySelected\n\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t: undefined,\n\t} );\n\n\tconst colorSettings = [\n\t\t{\n\t\t\t// Use custom attribute as fallback to prevent loss of named color selection when\n\t\t\t// switching themes to a new theme that does not have a matching named color.\n\t\t\tvalue: iconColor.color || iconColorValue,\n\t\t\tonChange: ( colorValue ) => {\n\t\t\t\tsetIconColor( colorValue );\n\t\t\t\tsetAttributes( { iconColorValue: colorValue } );\n\t\t\t},\n\t\t\tlabel: __( 'Icon color' ),\n\t\t\tresetAllFilter: () => {\n\t\t\t\tsetIconColor( undefined );\n\t\t\t\tsetAttributes( { iconColorValue: undefined } );\n\t\t\t},\n\t\t},\n\t];\n\n\tif ( ! logosOnly ) {\n\t\tcolorSettings.push( {\n\t\t\t// Use custom attribute as fallback to prevent loss of named color selection when\n\t\t\t// switching themes to a new theme that does not have a matching named color.\n\t\t\tvalue: iconBackgroundColor.color || iconBackgroundColorValue,\n\t\t\tonChange: ( colorValue ) => {\n\t\t\t\tsetIconBackgroundColor( colorValue );\n\t\t\t\tsetAttributes( {\n\t\t\t\t\ticonBackgroundColorValue: colorValue,\n\t\t\t\t} );\n\t\t\t},\n\t\t\tlabel: __( 'Icon background' ),\n\t\t\tresetAllFilter: () => {\n\t\t\t\tsetIconBackgroundColor( undefined );\n\t\t\t\tsetAttributes( { iconBackgroundColorValue: undefined } );\n\t\t\t},\n\t\t} );\n\t}\n\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\tconst showColorControls =\n\t\tcolorGradientSettings.hasColorsOrGradients && ! hasSelectedStyleState;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\topenInNewTab: false,\n\t\t\t\t\t\t\tshowLabels: false,\n\t\t\t\t\t\t\tsize: undefined,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! size }\n\t\t\t\t\t\tlabel={ __( 'Icon size' ) }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { size: undefined } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Icon size' ) }\n\t\t\t\t\t\t\tonChange={ ( newSize ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tsize: newSize === '' ? undefined : newSize,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ size ?? '' }\n\t\t\t\t\t\t\toptions={ sizeOptions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tlabel={ __( 'Show text' ) }\n\t\t\t\t\t\thasValue={ () => !! showLabels }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { showLabels: false } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Show text' ) }\n\t\t\t\t\t\t\tchecked={ showLabels }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { showLabels: ! showLabels } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tlabel={ __( 'Open links in new tab' ) }\n\t\t\t\t\t\thasValue={ () => !! openInNewTab }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { openInNewTab: false } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Open links in new tab' ) }\n\t\t\t\t\t\t\tchecked={ openInNewTab }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\topenInNewTab: ! openInNewTab,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t{ showColorControls && (\n\t\t\t\t<InspectorControls group=\"color\">\n\t\t\t\t\t{ colorSettings.map(\n\t\t\t\t\t\t( { onChange, label, value, resetAllFilter } ) => (\n\t\t\t\t\t\t\t<ColorGradientSettingsDropdown\n\t\t\t\t\t\t\t\tkey={ `social-links-color-${ label }` }\n\t\t\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\t\t\tsettings={ [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcolorValue: value,\n\t\t\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\t\t\tonColorChange: onChange,\n\t\t\t\t\t\t\t\t\t\tisShownByDefault: true,\n\t\t\t\t\t\t\t\t\t\tresetAllFilter,\n\t\t\t\t\t\t\t\t\t\tenableAlpha: true,\n\t\t\t\t\t\t\t\t\t\tclearable: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! logosOnly && (\n\t\t\t\t\t\t<ContrastChecker\n\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\ttextColor: iconColorValue,\n\t\t\t\t\t\t\t\tbackgroundColor: iconBackgroundColorValue,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tisLargeText={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t<ul { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nconst iconColorAttributes = {\n\ticonColor: 'icon-color',\n\ticonBackgroundColor: 'icon-background-color',\n};\n\nexport default withColors( iconColorAttributes )( SocialLinksEdit );\n"],
5
- "mappings": "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",
6
- "names": ["blockEditorStore", "clsx", "useMultipleOriginColorsAndGradients", "ToolsPanel", "ToolsPanelItem", "ColorGradientSettingsDropdown"]
4
+ "sourcesContent": ["import clsx from 'clsx';\nimport { useEffect } from '@wordpress/element';\nimport {\n\tuseInnerBlocksProps,\n\tuseBlockProps,\n\tInspectorControls,\n\tContrastChecker,\n\twithColors,\n\tInnerBlocks,\n\t__experimentalColorGradientSettingsDropdown as ColorGradientSettingsDropdown,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tToggleControl,\n\tSelectControl as WCSelectControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { unlock } from '../lock-unlock';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst sizeOptions = [\n\t{ label: __( 'Default' ), value: '' },\n\t{ label: __( 'Small' ), value: 'has-small-icon-size' },\n\t{ label: __( 'Normal' ), value: 'has-normal-icon-size' },\n\t{ label: __( 'Large' ), value: 'has-large-icon-size' },\n\t{ label: __( 'Huge' ), value: 'has-huge-icon-size' },\n];\n\nexport function SocialLinksEdit( props ) {\n\tconst {\n\t\tclientId,\n\t\tattributes,\n\t\ticonBackgroundColor,\n\t\ticonColor,\n\t\tisSelected,\n\t\tsetAttributes,\n\t\tsetIconBackgroundColor,\n\t\tsetIconColor,\n\t} = props;\n\n\tconst {\n\t\ticonBackgroundColorValue,\n\t\ticonColorValue,\n\t\topenInNewTab,\n\t\tshowLabels,\n\t\tsize,\n\t} = attributes;\n\n\tconst { hasSocialIcons, hasSelectedChild, hasSelectedStyleState } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockCount,\n\t\t\t\t\thasSelectedInnerBlock,\n\t\t\t\t\thasSelectedStyleState: hasSelectedBlockStyleState,\n\t\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\t\treturn {\n\t\t\t\t\thasSocialIcons: getBlockCount( clientId ) > 0,\n\t\t\t\t\thasSelectedChild: hasSelectedInnerBlock( clientId ),\n\t\t\t\t\thasSelectedStyleState:\n\t\t\t\t\t\thasSelectedBlockStyleState( clientId ),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\n\tconst hasAnySelected = isSelected || hasSelectedChild;\n\n\tconst logosOnly = attributes.className?.includes( 'is-style-logos-only' );\n\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\t// Remove icon background color when logos only style is selected or\n\t// restore it when any other style is selected.\n\tuseEffect( () => {\n\t\tif ( logosOnly ) {\n\t\t\tlet restore;\n\t\t\tsetAttributes( ( prev ) => {\n\t\t\t\trestore = {\n\t\t\t\t\ticonBackgroundColor: prev.iconBackgroundColor,\n\t\t\t\t\ticonBackgroundColorValue: prev.iconBackgroundColorValue,\n\t\t\t\t\tcustomIconBackgroundColor: prev.customIconBackgroundColor,\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\ticonBackgroundColor: undefined,\n\t\t\t\t\ticonBackgroundColorValue: undefined,\n\t\t\t\t\tcustomIconBackgroundColor: undefined,\n\t\t\t\t};\n\t\t\t} );\n\n\t\t\treturn () => setAttributes( { ...restore } );\n\t\t}\n\t}, [ logosOnly, setAttributes ] );\n\n\t// Fallback color values are used maintain selections in case switching\n\t// themes and named colors in palette do not match.\n\tconst className = clsx( size, {\n\t\t'has-visible-labels': showLabels,\n\t\t'has-icon-color': iconColor.color || iconColorValue,\n\t\t'has-icon-background-color':\n\t\t\ticonBackgroundColor.color || iconBackgroundColorValue,\n\t} );\n\n\tconst blockProps = useBlockProps( { className } );\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplateLock: false,\n\t\torientation: attributes.layout?.orientation ?? 'horizontal',\n\t\t__experimentalAppenderTagName: 'li',\n\t\trenderAppender:\n\t\t\t! hasSocialIcons || hasAnySelected\n\t\t\t\t? InnerBlocks.ButtonBlockAppender\n\t\t\t\t: undefined,\n\t} );\n\n\tconst colorSettings = [\n\t\t{\n\t\t\t// Use custom attribute as fallback to prevent loss of named color selection when\n\t\t\t// switching themes to a new theme that does not have a matching named color.\n\t\t\tvalue: iconColor.color || iconColorValue,\n\t\t\tonChange: ( colorValue ) => {\n\t\t\t\tsetIconColor( colorValue );\n\t\t\t\tsetAttributes( { iconColorValue: colorValue } );\n\t\t\t},\n\t\t\tlabel: __( 'Icon color' ),\n\t\t\tresetAllFilter: () => {\n\t\t\t\tsetIconColor( undefined );\n\t\t\t\tsetAttributes( { iconColorValue: undefined } );\n\t\t\t},\n\t\t},\n\t];\n\n\tif ( ! logosOnly ) {\n\t\tcolorSettings.push( {\n\t\t\t// Use custom attribute as fallback to prevent loss of named color selection when\n\t\t\t// switching themes to a new theme that does not have a matching named color.\n\t\t\tvalue: iconBackgroundColor.color || iconBackgroundColorValue,\n\t\t\tonChange: ( colorValue ) => {\n\t\t\t\tsetIconBackgroundColor( colorValue );\n\t\t\t\tsetAttributes( {\n\t\t\t\t\ticonBackgroundColorValue: colorValue,\n\t\t\t\t} );\n\t\t\t},\n\t\t\tlabel: __( 'Icon background' ),\n\t\t\tresetAllFilter: () => {\n\t\t\t\tsetIconBackgroundColor( undefined );\n\t\t\t\tsetAttributes( { iconBackgroundColorValue: undefined } );\n\t\t\t},\n\t\t} );\n\t}\n\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\tconst showColorControls =\n\t\tcolorGradientSettings.hasColorsOrGradients && ! hasSelectedStyleState;\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\topenInNewTab: false,\n\t\t\t\t\t\t\tshowLabels: false,\n\t\t\t\t\t\t\tsize: undefined,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! size }\n\t\t\t\t\t\tlabel={ __( 'Icon size' ) }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { size: undefined } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<WCSelectControl\n\t\t\t\t\t\t\tlabel={ __( 'Icon size' ) }\n\t\t\t\t\t\t\tonChange={ ( newSize ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tsize: newSize === '' ? undefined : newSize,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ size ?? '' }\n\t\t\t\t\t\t\toptions={ sizeOptions }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tlabel={ __( 'Show text' ) }\n\t\t\t\t\t\thasValue={ () => !! showLabels }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { showLabels: false } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Show text' ) }\n\t\t\t\t\t\t\tchecked={ showLabels }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { showLabels: ! showLabels } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\tlabel={ __( 'Open links in new tab' ) }\n\t\t\t\t\t\thasValue={ () => !! openInNewTab }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { openInNewTab: false } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tlabel={ __( 'Open links in new tab' ) }\n\t\t\t\t\t\t\tchecked={ openInNewTab }\n\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\topenInNewTab: ! openInNewTab,\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t{ showColorControls && (\n\t\t\t\t<InspectorControls group=\"color\">\n\t\t\t\t\t{ colorSettings.map(\n\t\t\t\t\t\t( { onChange, label, value, resetAllFilter } ) => (\n\t\t\t\t\t\t\t<ColorGradientSettingsDropdown\n\t\t\t\t\t\t\t\tkey={ `social-links-color-${ label }` }\n\t\t\t\t\t\t\t\t__experimentalIsRenderedInSidebar\n\t\t\t\t\t\t\t\tsettings={ [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcolorValue: value,\n\t\t\t\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\t\t\t\tonColorChange: onChange,\n\t\t\t\t\t\t\t\t\t\tisShownByDefault: true,\n\t\t\t\t\t\t\t\t\t\tresetAllFilter,\n\t\t\t\t\t\t\t\t\t\tenableAlpha: true,\n\t\t\t\t\t\t\t\t\t\tclearable: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t\t\t\t\t{ ...colorGradientSettings }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! logosOnly && (\n\t\t\t\t\t\t<ContrastChecker\n\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\ttextColor: iconColorValue,\n\t\t\t\t\t\t\t\tbackgroundColor: iconBackgroundColorValue,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tisLargeText={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</InspectorControls>\n\t\t\t) }\n\t\t\t<ul { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n\nconst iconColorAttributes = {\n\ticonColor: 'icon-color',\n\ticonBackgroundColor: 'icon-background-color',\n};\n\nexport default withColors( iconColorAttributes )( SocialLinksEdit );\n"],
5
+ "mappings": "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",
6
+ "names": ["blockEditorStore", "clsx", "useMultipleOriginColorsAndGradients", "ToolsPanel", "ToolsPanelItem", "WCSelectControl", "ColorGradientSettingsDropdown"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/table/state.js"],
4
- "sourcesContent": ["const INHERITED_COLUMN_ATTRIBUTES = [ 'align' ];\n\n/**\n * Creates a table state.\n *\n * @param {Object} options\n * @param {number} options.rowCount Row count for the table to create.\n * @param {number} options.columnCount Column count for the table to create.\n *\n * @return {Object} New table state.\n */\nexport function createTable( { rowCount, columnCount } ) {\n\treturn {\n\t\tbody: Array.from( { length: rowCount } ).map( () => ( {\n\t\t\tcells: Array.from( { length: columnCount } ).map( () => ( {\n\t\t\t\tcontent: '',\n\t\t\t\ttag: 'td',\n\t\t\t} ) ),\n\t\t} ) ),\n\t};\n}\n\n/**\n * Returns the first row in the table.\n *\n * @param {Object} state Current table state.\n *\n * @return {Object | undefined} The first table row.\n */\nexport function getFirstRow( state ) {\n\tif ( ! isEmptyTableSection( state.head ) ) {\n\t\treturn state.head[ 0 ];\n\t}\n\tif ( ! isEmptyTableSection( state.body ) ) {\n\t\treturn state.body[ 0 ];\n\t}\n\tif ( ! isEmptyTableSection( state.foot ) ) {\n\t\treturn state.foot[ 0 ];\n\t}\n}\n\n/**\n * Gets an attribute for a cell.\n *\n * @param {Object} state Current table state.\n * @param {Object} cellLocation The location of the cell\n * @param {string} attributeName The name of the attribute to get the value of.\n *\n * @return {*} The attribute value.\n */\nexport function getCellAttribute( state, cellLocation, attributeName ) {\n\tconst { sectionName, rowIndex, columnIndex } = cellLocation;\n\treturn state[ sectionName ]?.[ rowIndex ]?.cells?.[ columnIndex ]?.[\n\t\tattributeName\n\t];\n}\n\n/**\n * Returns updated cell attributes after applying the `updateCell` function to the selection.\n *\n * @param {Object} state The block attributes.\n * @param {Object} selection The selection of cells to update.\n * @param {Function} updateCell A function to update the selected cell attributes.\n *\n * @return {Object} New table state including the updated cells.\n */\nexport function updateSelectedCell( state, selection, updateCell ) {\n\tif ( ! selection ) {\n\t\treturn state;\n\t}\n\n\tconst tableSections = Object.fromEntries(\n\t\tObject.entries( state ).filter( ( [ key ] ) =>\n\t\t\t[ 'head', 'body', 'foot' ].includes( key )\n\t\t)\n\t);\n\tconst { sectionName: selectionSectionName, rowIndex: selectionRowIndex } =\n\t\tselection;\n\n\treturn Object.fromEntries(\n\t\tObject.entries( tableSections ).map( ( [ sectionName, section ] ) => {\n\t\t\tif (\n\t\t\t\tselectionSectionName &&\n\t\t\t\tselectionSectionName !== sectionName\n\t\t\t) {\n\t\t\t\treturn [ sectionName, section ];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\tsectionName,\n\t\t\t\tsection.map( ( row, rowIndex ) => {\n\t\t\t\t\tif ( selectionRowIndex && selectionRowIndex !== rowIndex ) {\n\t\t\t\t\t\treturn row;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcells: row.cells.map(\n\t\t\t\t\t\t\t( cellAttributes, columnIndex ) => {\n\t\t\t\t\t\t\t\tconst cellLocation = {\n\t\t\t\t\t\t\t\t\tsectionName,\n\t\t\t\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\t\t\t\trowIndex,\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t! isCellSelected( cellLocation, selection )\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn cellAttributes;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn updateCell( cellAttributes );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t} ),\n\t\t\t];\n\t\t} )\n\t);\n}\n\n/**\n * Returns whether the cell at `cellLocation` is included in the selection `selection`.\n *\n * @param {Object} cellLocation An object containing cell location properties.\n * @param {Object} selection An object containing selection properties.\n *\n * @return {boolean} True if the cell is selected, false otherwise.\n */\nexport function isCellSelected( cellLocation, selection ) {\n\tif ( ! cellLocation || ! selection ) {\n\t\treturn false;\n\t}\n\n\tswitch ( selection.type ) {\n\t\tcase 'column':\n\t\t\treturn (\n\t\t\t\tselection.type === 'column' &&\n\t\t\t\tcellLocation.columnIndex === selection.columnIndex\n\t\t\t);\n\t\tcase 'cell':\n\t\t\treturn (\n\t\t\t\tselection.type === 'cell' &&\n\t\t\t\tcellLocation.sectionName === selection.sectionName &&\n\t\t\t\tcellLocation.columnIndex === selection.columnIndex &&\n\t\t\t\tcellLocation.rowIndex === selection.rowIndex\n\t\t\t);\n\t}\n}\n\n/**\n * Inserts a row in the table state.\n *\n * @param {Object} state Current table state.\n * @param {Object} options\n * @param {string} options.sectionName Section in which to insert the row.\n * @param {number} options.rowIndex Row index at which to insert the row.\n * @param {number} options.columnCount Column count for the table to create.\n *\n * @return {Object} New table state.\n */\nexport function insertRow( state, { sectionName, rowIndex, columnCount } ) {\n\tconst firstRow = getFirstRow( state );\n\tconst cellCount =\n\t\tcolumnCount === undefined ? firstRow?.cells?.length : columnCount;\n\n\t// Bail early if the function cannot determine how many cells to add.\n\tif ( ! cellCount ) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\t[ sectionName ]: [\n\t\t\t...state[ sectionName ].slice( 0, rowIndex ),\n\t\t\t{\n\t\t\t\tcells: Array.from( { length: cellCount } ).map(\n\t\t\t\t\t( _, index ) => {\n\t\t\t\t\t\tconst firstCellInColumn =\n\t\t\t\t\t\t\tfirstRow?.cells?.[ index ] ?? {};\n\n\t\t\t\t\t\tconst inheritedAttributes = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries( firstCellInColumn ).filter(\n\t\t\t\t\t\t\t\t( [ key ] ) =>\n\t\t\t\t\t\t\t\t\tINHERITED_COLUMN_ATTRIBUTES.includes( key )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...inheritedAttributes,\n\t\t\t\t\t\t\tcontent: '',\n\t\t\t\t\t\t\ttag: sectionName === 'head' ? 'th' : 'td',\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\t...state[ sectionName ].slice( rowIndex ),\n\t\t],\n\t};\n}\n\n/**\n * Deletes a row from the table state.\n *\n * @param {Object} state Current table state.\n * @param {Object} options\n * @param {string} options.sectionName Section in which to delete the row.\n * @param {number} options.rowIndex Row index to delete.\n *\n * @return {Object} New table state.\n */\nexport function deleteRow( state, { sectionName, rowIndex } ) {\n\treturn {\n\t\t[ sectionName ]: state[ sectionName ].filter(\n\t\t\t( row, index ) => index !== rowIndex\n\t\t),\n\t};\n}\n\n/**\n * Inserts a column in the table state.\n *\n * @param {Object} state Current table state.\n * @param {Object} options\n * @param {number} options.columnIndex Column index at which to insert the column.\n *\n * @return {Object} New table state.\n */\nexport function insertColumn( state, { columnIndex } ) {\n\tconst tableSections = Object.fromEntries(\n\t\tObject.entries( state ).filter( ( [ key ] ) =>\n\t\t\t[ 'head', 'body', 'foot' ].includes( key )\n\t\t)\n\t);\n\n\treturn Object.fromEntries(\n\t\tObject.entries( tableSections ).map( ( [ sectionName, section ] ) => {\n\t\t\t// Bail early if the table section is empty.\n\t\t\tif ( isEmptyTableSection( section ) ) {\n\t\t\t\treturn [ sectionName, section ];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\tsectionName,\n\t\t\t\tsection.map( ( row ) => {\n\t\t\t\t\t// Bail early if the row is empty or it's an attempt to insert past\n\t\t\t\t\t// the last possible index of the array.\n\t\t\t\t\tif ( isEmptyRow( row ) || row.cells.length < columnIndex ) {\n\t\t\t\t\t\treturn row;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcells: [\n\t\t\t\t\t\t\t...row.cells.slice( 0, columnIndex ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontent: '',\n\t\t\t\t\t\t\t\ttag: sectionName === 'head' ? 'th' : 'td',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...row.cells.slice( columnIndex ),\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} )\n\t);\n}\n\n/**\n * Deletes a column from the table state.\n *\n * @param {Object} state Current table state.\n * @param {Object} options\n * @param {number} options.columnIndex Column index to delete.\n *\n * @return {Object} New table state.\n */\nexport function deleteColumn( state, { columnIndex } ) {\n\tconst tableSections = Object.fromEntries(\n\t\tObject.entries( state ).filter( ( [ key ] ) =>\n\t\t\t[ 'head', 'body', 'foot' ].includes( key )\n\t\t)\n\t);\n\n\treturn Object.fromEntries(\n\t\tObject.entries( tableSections ).map( ( [ sectionName, section ] ) => {\n\t\t\t// Bail early if the table section is empty.\n\t\t\tif ( isEmptyTableSection( section ) ) {\n\t\t\t\treturn [ sectionName, section ];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\tsectionName,\n\t\t\t\tsection\n\t\t\t\t\t.map( ( row ) => ( {\n\t\t\t\t\t\tcells:\n\t\t\t\t\t\t\trow.cells.length >= columnIndex\n\t\t\t\t\t\t\t\t? row.cells.filter(\n\t\t\t\t\t\t\t\t\t\t( cell, index ) => index !== columnIndex\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: row.cells,\n\t\t\t\t\t} ) )\n\t\t\t\t\t.filter( ( row ) => row.cells.length ),\n\t\t\t];\n\t\t} )\n\t);\n}\n\n/**\n * Toggles the existence of a section.\n *\n * @param {Object} state Current table state.\n * @param {string} sectionName Name of the section to toggle.\n *\n * @return {Object} New table state.\n */\nexport function toggleSection( state, sectionName ) {\n\t// Section exists, replace it with an empty row to remove it.\n\tif ( ! isEmptyTableSection( state[ sectionName ] ) ) {\n\t\treturn { [ sectionName ]: [] };\n\t}\n\n\t// Get the length of the first row of the body to use when creating the header.\n\tconst columnCount = state.body?.[ 0 ]?.cells?.length ?? 1;\n\n\t// Section doesn't exist, insert an empty row to create the section.\n\treturn insertRow( state, { sectionName, rowIndex: 0, columnCount } );\n}\n\n/**\n * Determines whether a table section is empty.\n *\n * @param {Object} section Table section state.\n *\n * @return {boolean} True if the table section is empty, false otherwise.\n */\nexport function isEmptyTableSection( section ) {\n\treturn ! section || ! section.length || section.every( isEmptyRow );\n}\n\n/**\n * Determines whether a table row is empty.\n *\n * @param {Object} row Table row state.\n *\n * @return {boolean} True if the table section is empty, false otherwise.\n */\nexport function isEmptyRow( row ) {\n\treturn ! ( row.cells && row.cells.length );\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["const INHERITED_COLUMN_ATTRIBUTES = [ 'align' ];\n\n/**\n * Creates a table state.\n *\n * @param {Object} options\n * @param {number} options.rowCount Row count for the table to create.\n * @param {number} options.columnCount Column count for the table to create.\n *\n * @return {Object} New table state.\n */\nexport function createTable( { rowCount, columnCount } ) {\n\treturn {\n\t\tbody: Array.from( { length: rowCount } ).map( () => ( {\n\t\t\tcells: Array.from( { length: columnCount } ).map( () => ( {\n\t\t\t\tcontent: '',\n\t\t\t\ttag: 'td',\n\t\t\t} ) ),\n\t\t} ) ),\n\t};\n}\n\n/**\n * Returns the first row in the table.\n *\n * @param {Object} state Current table state.\n *\n * @return {Object | undefined} The first table row.\n */\nexport function getFirstRow( state ) {\n\tif ( ! isEmptyTableSection( state.head ) ) {\n\t\treturn state.head[ 0 ];\n\t}\n\tif ( ! isEmptyTableSection( state.body ) ) {\n\t\treturn state.body[ 0 ];\n\t}\n\tif ( ! isEmptyTableSection( state.foot ) ) {\n\t\treturn state.foot[ 0 ];\n\t}\n}\n\n/**\n * Gets an attribute for a cell.\n *\n * @param {Object} state Current table state.\n * @param {Object} cellLocation The location of the cell\n * @param {string} attributeName The name of the attribute to get the value of.\n *\n * @return {*} The attribute value.\n */\nexport function getCellAttribute( state, cellLocation, attributeName ) {\n\tconst { sectionName, rowIndex, columnIndex } = cellLocation;\n\treturn state[ sectionName ]?.[ rowIndex ]?.cells?.[ columnIndex ]?.[\n\t\tattributeName\n\t];\n}\n\n/**\n * Returns updated cell attributes after applying the `updateCell` function to the selection.\n *\n * @param {Object} state The block attributes.\n * @param {Object} selection The selection of cells to update.\n * @param {Function} updateCell A function to update the selected cell attributes.\n *\n * @return {Object} New table state including the updated cells.\n */\nexport function updateSelectedCell( state, selection, updateCell ) {\n\tif ( ! selection ) {\n\t\treturn state;\n\t}\n\n\tconst tableSections = Object.fromEntries(\n\t\tObject.entries( state ).filter( ( [ key ] ) =>\n\t\t\t[ 'head', 'body', 'foot' ].includes( key )\n\t\t)\n\t);\n\tconst { sectionName: selectionSectionName, rowIndex: selectionRowIndex } =\n\t\tselection;\n\n\treturn Object.fromEntries(\n\t\tObject.entries( tableSections ).map( ( [ sectionName, section ] ) => {\n\t\t\tif (\n\t\t\t\tselectionSectionName &&\n\t\t\t\tselectionSectionName !== sectionName\n\t\t\t) {\n\t\t\t\treturn [ sectionName, section ];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\tsectionName,\n\t\t\t\tsection.map( ( row, rowIndex ) => {\n\t\t\t\t\tif ( selectionRowIndex && selectionRowIndex !== rowIndex ) {\n\t\t\t\t\t\treturn row;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcells: row.cells.map(\n\t\t\t\t\t\t\t( cellAttributes, columnIndex ) => {\n\t\t\t\t\t\t\t\tconst cellLocation = {\n\t\t\t\t\t\t\t\t\tsectionName,\n\t\t\t\t\t\t\t\t\tcolumnIndex,\n\t\t\t\t\t\t\t\t\trowIndex,\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t! isCellSelected( cellLocation, selection )\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\treturn cellAttributes;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn updateCell( cellAttributes );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t} ),\n\t\t\t];\n\t\t} )\n\t);\n}\n\n/**\n * Returns whether the cell at `cellLocation` is included in the selection `selection`.\n *\n * @param {Object} cellLocation An object containing cell location properties.\n * @param {Object} selection An object containing selection properties.\n *\n * @return {boolean} True if the cell is selected, false otherwise.\n */\nexport function isCellSelected( cellLocation, selection ) {\n\tif ( ! cellLocation || ! selection ) {\n\t\treturn false;\n\t}\n\n\tswitch ( selection.type ) {\n\t\tcase 'column':\n\t\t\treturn (\n\t\t\t\tselection.type === 'column' &&\n\t\t\t\tcellLocation.columnIndex === selection.columnIndex\n\t\t\t);\n\t\tcase 'cell':\n\t\t\treturn (\n\t\t\t\tselection.type === 'cell' &&\n\t\t\t\tcellLocation.sectionName === selection.sectionName &&\n\t\t\t\tcellLocation.columnIndex === selection.columnIndex &&\n\t\t\t\tcellLocation.rowIndex === selection.rowIndex\n\t\t\t);\n\t}\n}\n\n/**\n * Inserts a row in the table state.\n *\n * @param {Object} state Current table state.\n * @param {Object} options\n * @param {string} options.sectionName Section in which to insert the row.\n * @param {number} options.rowIndex Row index at which to insert the row.\n * @param {number} options.columnCount Column count for the table to create.\n *\n * @return {Object} New table state.\n */\nexport function insertRow( state, { sectionName, rowIndex, columnCount } ) {\n\tconst firstRow = getFirstRow( state );\n\tconst cellCount =\n\t\tcolumnCount === undefined ? firstRow?.cells?.length : columnCount;\n\n\t// Bail early if the function cannot determine how many cells to add.\n\tif ( ! cellCount ) {\n\t\treturn state;\n\t}\n\n\treturn {\n\t\t[ sectionName ]: [\n\t\t\t...state[ sectionName ].slice( 0, rowIndex ),\n\t\t\t{\n\t\t\t\tcells: Array.from( { length: cellCount } ).map(\n\t\t\t\t\t( _, index ) => {\n\t\t\t\t\t\tconst firstCellInColumn =\n\t\t\t\t\t\t\tfirstRow?.cells?.[ index ] ?? {};\n\n\t\t\t\t\t\tconst inheritedAttributes = Object.fromEntries(\n\t\t\t\t\t\t\tObject.entries( firstCellInColumn ).filter(\n\t\t\t\t\t\t\t\t( [ key ] ) =>\n\t\t\t\t\t\t\t\t\tINHERITED_COLUMN_ATTRIBUTES.includes( key )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...inheritedAttributes,\n\t\t\t\t\t\t\tcontent: '',\n\t\t\t\t\t\t\ttag: sectionName === 'head' ? 'th' : 'td',\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\t...state[ sectionName ].slice( rowIndex ),\n\t\t],\n\t};\n}\n\n/**\n * Deletes a row from the table state.\n *\n * @param {Object} state Current table state.\n * @param {Object} options\n * @param {string} options.sectionName Section in which to delete the row.\n * @param {number} options.rowIndex Row index to delete.\n *\n * @return {Object} New table state.\n */\nexport function deleteRow( state, { sectionName, rowIndex } ) {\n\treturn {\n\t\t[ sectionName ]: state[ sectionName ].filter(\n\t\t\t( row, index ) => index !== rowIndex\n\t\t),\n\t};\n}\n\n/**\n * Inserts a column in the table state.\n *\n * @param {Object} state Current table state.\n * @param {Object} options\n * @param {number} options.columnIndex Column index at which to insert the column.\n *\n * @return {Object} New table state.\n */\nexport function insertColumn( state, { columnIndex } ) {\n\tconst tableSections = Object.fromEntries(\n\t\tObject.entries( state ).filter( ( [ key ] ) =>\n\t\t\t[ 'head', 'body', 'foot' ].includes( key )\n\t\t)\n\t);\n\n\treturn Object.fromEntries(\n\t\tObject.entries( tableSections ).map( ( [ sectionName, section ] ) => {\n\t\t\t// Bail early if the table section is empty.\n\t\t\tif ( isEmptyTableSection( section ) ) {\n\t\t\t\treturn [ sectionName, section ];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\tsectionName,\n\t\t\t\tsection.map( ( row ) => {\n\t\t\t\t\t// Bail early if the row is empty or it's an attempt to insert past\n\t\t\t\t\t// the last possible index of the array.\n\t\t\t\t\tif ( isEmptyRow( row ) || row.cells.length < columnIndex ) {\n\t\t\t\t\t\treturn row;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcells: [\n\t\t\t\t\t\t\t...row.cells.slice( 0, columnIndex ),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcontent: '',\n\t\t\t\t\t\t\t\ttag: sectionName === 'head' ? 'th' : 'td',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...row.cells.slice( columnIndex ),\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} )\n\t);\n}\n\n/**\n * Deletes a column from the table state.\n *\n * @param {Object} state Current table state.\n * @param {Object} options\n * @param {number} options.columnIndex Column index to delete.\n *\n * @return {Object} New table state.\n */\nexport function deleteColumn( state, { columnIndex } ) {\n\tconst tableSections = Object.fromEntries(\n\t\tObject.entries( state ).filter( ( [ key ] ) =>\n\t\t\t[ 'head', 'body', 'foot' ].includes( key )\n\t\t)\n\t);\n\n\treturn Object.fromEntries(\n\t\tObject.entries( tableSections ).map( ( [ sectionName, section ] ) => {\n\t\t\t// Bail early if the table section is empty.\n\t\t\tif ( isEmptyTableSection( section ) ) {\n\t\t\t\treturn [ sectionName, section ];\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\tsectionName,\n\t\t\t\tsection\n\t\t\t\t\t.map( ( row ) => ( {\n\t\t\t\t\t\tcells:\n\t\t\t\t\t\t\trow.cells.length >= columnIndex\n\t\t\t\t\t\t\t\t? row.cells.filter(\n\t\t\t\t\t\t\t\t\t\t( cell, index ) => index !== columnIndex\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: row.cells,\n\t\t\t\t\t} ) )\n\t\t\t\t\t.filter( ( row ) => row.cells.length ),\n\t\t\t];\n\t\t} )\n\t);\n}\n\n/**\n * Toggles the existence of a section.\n *\n * @param {Object} state Current table state.\n * @param {string} sectionName Name of the section to toggle.\n *\n * @return {Object} New table state.\n */\nexport function toggleSection( state, sectionName ) {\n\t// Section exists, replace it with an empty row to remove it.\n\tif ( ! isEmptyTableSection( state[ sectionName ] ) ) {\n\t\treturn { [ sectionName ]: [] };\n\t}\n\n\t// Get the length of the first row of the body to use when creating the header.\n\tconst columnCount = state.body?.[ 0 ]?.cells?.length ?? 1;\n\n\t// Section doesn't exist, insert an empty row to create the section.\n\treturn insertRow( state, { sectionName, rowIndex: 0, columnCount } );\n}\n\n/**\n * Determines whether a table section is empty.\n *\n * @param {Object} section Table section state.\n *\n * @return {boolean} True if the table section is empty, false otherwise.\n */\nexport function isEmptyTableSection( section ) {\n\treturn ! section || ! section.length || section.every( isEmptyRow );\n}\n\n/**\n * Determines whether a table row is empty.\n *\n * @param {Object} row Table row state.\n *\n * @return {boolean} True if the table section is empty, false otherwise.\n */\nexport function isEmptyRow( row ) {\n\treturn ! ( row.cells && row.cells.length );\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/table-of-contents/edit.jsx"],
4
- "sourcesContent": ["import {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tstore as blockEditorStore,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tPlaceholder,\n\tToggleControl,\n\tSelectControl,\n\tToolbarButton,\n\tToolbarGroup,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __, isRTL } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { store as noticeStore } from '@wordpress/notices';\nimport {\n\ttableOfContents as icon,\n\tformatListBullets,\n\tformatListBulletsRTL,\n\tformatListNumbered,\n\tformatListNumberedRTL,\n} from '@wordpress/icons';\nimport TableOfContentsList from './list';\nimport { createListItemBlocks, linearToNestedHeadingList } from './utils';\nimport { useObserveHeadings } from './hooks';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\n/** @typedef {import('./utils').HeadingData} HeadingData */\n\nfunction TableOfContentsToolbar( {\n\tclientId,\n\theadingTree,\n\tordered,\n\tsetAttributes,\n} ) {\n\tconst canInsertList = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn canInsertBlockType( 'core/list', rootClientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst [ isConfirmingDetach, setIsConfirmingDetach ] = useState( false );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tisRTL() ? formatListBulletsRTL : formatListBullets\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitle={ __( 'Unordered' ) }\n\t\t\t\t\t\tdescription={ __( 'Convert to unordered list' ) }\n\t\t\t\t\t\tonClick={ () => setAttributes( { ordered: false } ) }\n\t\t\t\t\t\tisActive={ ordered === false }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tisRTL() ? formatListNumberedRTL : formatListNumbered\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitle={ __( 'Ordered' ) }\n\t\t\t\t\t\tdescription={ __( 'Convert to ordered list' ) }\n\t\t\t\t\t\tonClick={ () => setAttributes( { ordered: true } ) }\n\t\t\t\t\t\tisActive={ ordered === true }\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t{ canInsertList && (\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ () => setIsConfirmingDetach( true ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t{ isConfirmingDetach && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen\n\t\t\t\t\ttitle={ __( 'Detach Table of Contents' ) }\n\t\t\t\t\t__experimentalHideHeader={ false }\n\t\t\t\t\tconfirmButtonText={ __( 'Detach' ) }\n\t\t\t\t\tonConfirm={ () => {\n\t\t\t\t\t\tsetIsConfirmingDetach( false );\n\t\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t'core/list',\n\t\t\t\t\t\t\t\t{ ordered },\n\t\t\t\t\t\t\t\tcreateListItemBlocks( headingTree, ordered )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => setIsConfirmingDetach( false ) }\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'The Table of Contents block lists the headings in the post. Detaching will enable you to edit, reorder, or remove entries. However, new headings will no longer be added automatically.'\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default function TableOfContentsEdit( {\n\tattributes: {\n\t\theadings = [],\n\t\tonlyIncludeCurrentPage,\n\t\tmaxLevel,\n\t\tordered = true,\n\t},\n\tclientId,\n\tsetAttributes,\n} ) {\n\tuseObserveHeadings( clientId );\n\n\tconst blockProps = useBlockProps();\n\tconst instanceId = useInstanceId(\n\t\tTableOfContentsEdit,\n\t\t'table-of-contents'\n\t);\n\n\t// If a user clicks to a link prevent redirection and show a warning.\n\tconst { createWarningNotice } = useDispatch( noticeStore );\n\tconst showRedirectionPreventedNotice = ( event ) => {\n\t\tevent.preventDefault();\n\t\tcreateWarningNotice( __( 'Links are disabled in the editor.' ), {\n\t\t\tid: `block-library/core/table-of-contents/redirection-prevented/${ instanceId }`,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t};\n\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst headingTree = linearToNestedHeadingList( headings );\n\n\tconst toolbarControls = (\n\t\t<TableOfContentsToolbar\n\t\t\tclientId={ clientId }\n\t\t\theadingTree={ headingTree }\n\t\t\tordered={ ordered }\n\t\t\tsetAttributes={ setAttributes }\n\t\t/>\n\t);\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\tresetAll={ () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tonlyIncludeCurrentPage: false,\n\t\t\t\t\t\tmaxLevel: undefined,\n\t\t\t\t\t\tordered: true,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! onlyIncludeCurrentPage }\n\t\t\t\t\tlabel={ __( 'Only include current page' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { onlyIncludeCurrentPage: false } )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Only include current page' ) }\n\t\t\t\t\t\tchecked={ onlyIncludeCurrentPage }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { onlyIncludeCurrentPage: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tonlyIncludeCurrentPage\n\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t'Only including headings from the current page (if the post is paginated).'\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t'Include headings from all pages (if the post is paginated).'\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! maxLevel }\n\t\t\t\t\tlabel={ __( 'Limit heading levels' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { maxLevel: undefined } )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Include headings down to level' ) }\n\t\t\t\t\t\tvalue={ maxLevel || '' }\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ value: '', label: __( 'All levels' ) },\n\t\t\t\t\t\t\t{ value: '1', label: __( 'Heading 1' ) },\n\t\t\t\t\t\t\t{ value: '2', label: __( 'Heading 2' ) },\n\t\t\t\t\t\t\t{ value: '3', label: __( 'Heading 3' ) },\n\t\t\t\t\t\t\t{ value: '4', label: __( 'Heading 4' ) },\n\t\t\t\t\t\t\t{ value: '5', label: __( 'Heading 5' ) },\n\t\t\t\t\t\t\t{ value: '6', label: __( 'Heading 6' ) },\n\t\t\t\t\t\t] }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tmaxLevel: value ? parseInt( value ) : undefined,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t! maxLevel\n\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t'Including all heading levels in the table of contents.'\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t'Only include headings up to and including this level.'\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</ToolsPanel>\n\t\t</InspectorControls>\n\t);\n\n\t// If there are no headings or the only heading is empty.\n\t// Note that the toolbar controls are intentionally omitted since the\n\t// \"Detach\" option is useless to the placeholder state.\n\tif ( headings.length === 0 ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\t\tlabel={ __( 'Table of Contents' ) }\n\t\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t\t'Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ inspectorControls }\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst ListTag = ordered ? 'ol' : 'ul';\n\n\treturn (\n\t\t<>\n\t\t\t<nav { ...blockProps }>\n\t\t\t\t<ListTag>\n\t\t\t\t\t<TableOfContentsList\n\t\t\t\t\t\tnestedHeadingList={ headingTree }\n\t\t\t\t\t\tdisableLinkActivation\n\t\t\t\t\t\tonClick={ showRedirectionPreventedNotice }\n\t\t\t\t\t\tordered={ ordered }\n\t\t\t\t\t/>\n\t\t\t\t</ListTag>\n\t\t\t</nav>\n\t\t\t{ toolbarControls }\n\t\t\t{ inspectorControls }\n\t\t</>\n\t);\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_hooks", "blockEditorStore", "ConfirmDialog", "noticeStore", "ToolsPanel", "ToolsPanelItem", "icon", "TableOfContentsList"]
4
+ "sourcesContent": ["import {\n\tBlockControls,\n\tBlockIcon,\n\tInspectorControls,\n\tstore as blockEditorStore,\n\tuseBlockProps,\n} from '@wordpress/block-editor';\nimport { createBlock } from '@wordpress/blocks';\nimport {\n\tPlaceholder,\n\tToggleControl,\n\tSelectControl as WCSelectControl,\n\tToolbarButton,\n\tToolbarGroup,\n\t__experimentalConfirmDialog as ConfirmDialog,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __, isRTL } from '@wordpress/i18n';\nimport { useInstanceId } from '@wordpress/compose';\nimport { store as noticeStore } from '@wordpress/notices';\nimport {\n\ttableOfContents as icon,\n\tformatListBullets,\n\tformatListBulletsRTL,\n\tformatListNumbered,\n\tformatListNumberedRTL,\n} from '@wordpress/icons';\nimport TableOfContentsList from './list';\nimport { createListItemBlocks, linearToNestedHeadingList } from './utils';\nimport { useObserveHeadings } from './hooks';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\n/** @typedef {import('./utils').HeadingData} HeadingData */\n\nfunction TableOfContentsToolbar( {\n\tclientId,\n\theadingTree,\n\tordered,\n\tsetAttributes,\n} ) {\n\tconst canInsertList = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockRootClientId, canInsertBlockType } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\treturn canInsertBlockType( 'core/list', rootClientId );\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\tconst [ isConfirmingDetach, setIsConfirmingDetach ] = useState( false );\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tisRTL() ? formatListBulletsRTL : formatListBullets\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitle={ __( 'Unordered' ) }\n\t\t\t\t\t\tdescription={ __( 'Convert to unordered list' ) }\n\t\t\t\t\t\tonClick={ () => setAttributes( { ordered: false } ) }\n\t\t\t\t\t\tisActive={ ordered === false }\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tisRTL() ? formatListNumberedRTL : formatListNumbered\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitle={ __( 'Ordered' ) }\n\t\t\t\t\t\tdescription={ __( 'Convert to ordered list' ) }\n\t\t\t\t\t\tonClick={ () => setAttributes( { ordered: true } ) }\n\t\t\t\t\t\tisActive={ ordered === true }\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t\t{ canInsertList && (\n\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\tonClick={ () => setIsConfirmingDetach( true ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Detach' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t\t{ isConfirmingDetach && (\n\t\t\t\t<ConfirmDialog\n\t\t\t\t\tisOpen\n\t\t\t\t\ttitle={ __( 'Detach Table of Contents' ) }\n\t\t\t\t\t__experimentalHideHeader={ false }\n\t\t\t\t\tconfirmButtonText={ __( 'Detach' ) }\n\t\t\t\t\tonConfirm={ () => {\n\t\t\t\t\t\tsetIsConfirmingDetach( false );\n\t\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t'core/list',\n\t\t\t\t\t\t\t\t{ ordered },\n\t\t\t\t\t\t\t\tcreateListItemBlocks( headingTree, ordered )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t\tonCancel={ () => setIsConfirmingDetach( false ) }\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'The Table of Contents block lists the headings in the post. Detaching will enable you to edit, reorder, or remove entries. However, new headings will no longer be added automatically.'\n\t\t\t\t\t) }\n\t\t\t\t</ConfirmDialog>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default function TableOfContentsEdit( {\n\tattributes: {\n\t\theadings = [],\n\t\tonlyIncludeCurrentPage,\n\t\tmaxLevel,\n\t\tordered = true,\n\t},\n\tclientId,\n\tsetAttributes,\n} ) {\n\tuseObserveHeadings( clientId );\n\n\tconst blockProps = useBlockProps();\n\tconst instanceId = useInstanceId(\n\t\tTableOfContentsEdit,\n\t\t'table-of-contents'\n\t);\n\n\t// If a user clicks to a link prevent redirection and show a warning.\n\tconst { createWarningNotice } = useDispatch( noticeStore );\n\tconst showRedirectionPreventedNotice = ( event ) => {\n\t\tevent.preventDefault();\n\t\tcreateWarningNotice( __( 'Links are disabled in the editor.' ), {\n\t\t\tid: `block-library/core/table-of-contents/redirection-prevented/${ instanceId }`,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t};\n\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst headingTree = linearToNestedHeadingList( headings );\n\n\tconst toolbarControls = (\n\t\t<TableOfContentsToolbar\n\t\t\tclientId={ clientId }\n\t\t\theadingTree={ headingTree }\n\t\t\tordered={ ordered }\n\t\t\tsetAttributes={ setAttributes }\n\t\t/>\n\t);\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\tresetAll={ () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\tonlyIncludeCurrentPage: false,\n\t\t\t\t\t\tmaxLevel: undefined,\n\t\t\t\t\t\tordered: true,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! onlyIncludeCurrentPage }\n\t\t\t\t\tlabel={ __( 'Only include current page' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { onlyIncludeCurrentPage: false } )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Only include current page' ) }\n\t\t\t\t\t\tchecked={ onlyIncludeCurrentPage }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { onlyIncludeCurrentPage: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\tonlyIncludeCurrentPage\n\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t'Only including headings from the current page (if the post is paginated).'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t'Include headings from all pages (if the post is paginated).'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => !! maxLevel }\n\t\t\t\t\tlabel={ __( 'Limit heading levels' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { maxLevel: undefined } )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<WCSelectControl\n\t\t\t\t\t\tlabel={ __( 'Include headings down to level' ) }\n\t\t\t\t\t\tvalue={ maxLevel || '' }\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ value: '', label: __( 'All levels' ) },\n\t\t\t\t\t\t\t{ value: '1', label: __( 'Heading 1' ) },\n\t\t\t\t\t\t\t{ value: '2', label: __( 'Heading 2' ) },\n\t\t\t\t\t\t\t{ value: '3', label: __( 'Heading 3' ) },\n\t\t\t\t\t\t\t{ value: '4', label: __( 'Heading 4' ) },\n\t\t\t\t\t\t\t{ value: '5', label: __( 'Heading 5' ) },\n\t\t\t\t\t\t\t{ value: '6', label: __( 'Heading 6' ) },\n\t\t\t\t\t\t] }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tmaxLevel: value ? parseInt( value ) : undefined,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t! maxLevel\n\t\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t\t'Including all heading levels in the table of contents.'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t\t'Only include headings up to and including this level.'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</ToolsPanel>\n\t\t</InspectorControls>\n\t);\n\n\t// If there are no headings or the only heading is empty.\n\t// Note that the toolbar controls are intentionally omitted since the\n\t// \"Detach\" option is useless to the placeholder state.\n\tif ( headings.length === 0 ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Placeholder\n\t\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\t\tlabel={ __( 'Table of Contents' ) }\n\t\t\t\t\t\tinstructions={ __(\n\t\t\t\t\t\t\t'Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ inspectorControls }\n\t\t\t</>\n\t\t);\n\t}\n\n\tconst ListTag = ordered ? 'ol' : 'ul';\n\n\treturn (\n\t\t<>\n\t\t\t<nav { ...blockProps }>\n\t\t\t\t<ListTag>\n\t\t\t\t\t<TableOfContentsList\n\t\t\t\t\t\tnestedHeadingList={ headingTree }\n\t\t\t\t\t\tdisableLinkActivation\n\t\t\t\t\t\tonClick={ showRedirectionPreventedNotice }\n\t\t\t\t\t\tordered={ ordered }\n\t\t\t\t\t/>\n\t\t\t\t</ListTag>\n\t\t\t</nav>\n\t\t\t{ toolbarControls }\n\t\t\t{ inspectorControls }\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_hooks", "blockEditorStore", "ConfirmDialog", "noticeStore", "ToolsPanel", "ToolsPanelItem", "WCSelectControl", "icon", "TableOfContentsList"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/table-of-contents/utils.ts"],
4
- "sourcesContent": ["import { createBlock } from '@wordpress/blocks';\nimport type { Block } from '@wordpress/blocks';\nimport { escapeAttribute, escapeEditableHTML } from '@wordpress/escape-html';\n\nexport interface HeadingData {\n\t/** The plain text content of the heading. */\n\tcontent: string;\n\t/** The heading level. */\n\tlevel: number;\n\t/** Link to the heading. */\n\tlink: string;\n}\n\nexport interface NestedHeadingData {\n\t/** The heading content, level, and link. */\n\theading: HeadingData;\n\t/** The sub-headings of this heading, if any. */\n\tchildren: NestedHeadingData[] | null;\n}\n\n/**\n * Takes a flat list of heading parameters and nests them based on each header's\n * immediate parent's level.\n *\n * @param headingList The flat list of headings to nest.\n *\n * @return The nested list of headings.\n */\nexport function linearToNestedHeadingList(\n\theadingList: HeadingData[]\n): NestedHeadingData[] {\n\tconst nestedHeadingList: NestedHeadingData[] = [];\n\n\theadingList.forEach( ( heading, key ) => {\n\t\tif ( heading.content === '' ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure we are only working with the same level as the first iteration in our set.\n\t\tif ( heading.level === headingList[ 0 ].level ) {\n\t\t\t// Check that the next iteration will return a value.\n\t\t\t// If it does and the next level is greater than the current level,\n\t\t\t// the next iteration becomes a child of the current iteration.\n\t\t\tif ( headingList[ key + 1 ]?.level > heading.level ) {\n\t\t\t\t// We must calculate the last index before the next iteration that\n\t\t\t\t// has the same level (siblings). We then use this index to slice\n\t\t\t\t// the array for use in recursion. This prevents duplicate nodes.\n\t\t\t\tlet endOfSlice = headingList.length;\n\t\t\t\tfor ( let i = key + 1; i < headingList.length; i++ ) {\n\t\t\t\t\tif ( headingList[ i ].level === heading.level ) {\n\t\t\t\t\t\tendOfSlice = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// We found a child node: Push a new node onto the return array\n\t\t\t\t// with children.\n\t\t\t\tnestedHeadingList.push( {\n\t\t\t\t\theading,\n\t\t\t\t\tchildren: linearToNestedHeadingList(\n\t\t\t\t\t\theadingList.slice( key + 1, endOfSlice )\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\t// No child node: Push a new node onto the return array.\n\t\t\t\tnestedHeadingList.push( {\n\t\t\t\t\theading,\n\t\t\t\t\tchildren: null,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn nestedHeadingList;\n}\n\n/**\n * Converts a nested heading list into `core/list-item` blocks, with\n * sub-headings nested in a `core/list` block inside their parent item.\n *\n * @param nestedHeadingList The nested list of headings.\n * @param ordered Whether nested lists are ordered.\n *\n * @return The list item blocks.\n */\nexport function createListItemBlocks(\n\tnestedHeadingList: NestedHeadingData[],\n\tordered: boolean\n): Block[] {\n\treturn nestedHeadingList.map(\n\t\t( { heading: { content, link }, children } ) =>\n\t\t\tcreateBlock(\n\t\t\t\t'core/list-item',\n\t\t\t\t{\n\t\t\t\t\t// Headings are plain text, and links can carry query args on\n\t\t\t\t\t// paginated posts, so both need escaping to become markup.\n\t\t\t\t\tcontent: link\n\t\t\t\t\t\t? `<a href=\"${ escapeAttribute(\n\t\t\t\t\t\t\t\tlink\n\t\t\t\t\t\t ) }\">${ escapeEditableHTML( content ) }</a>`\n\t\t\t\t\t\t: escapeEditableHTML( content ),\n\t\t\t\t},\n\t\t\t\tchildren?.length\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t'core/list',\n\t\t\t\t\t\t\t\t{ ordered },\n\t\t\t\t\t\t\t\tcreateListItemBlocks( children, ordered )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t ]\n\t\t\t\t\t: []\n\t\t\t)\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA4B;AAE5B,yBAAoD;AA0B7C,SAAS,0BACf,aACsB;AACtB,QAAM,oBAAyC,CAAC;AAEhD,cAAY,QAAS,CAAE,SAAS,QAAS;AACxC,QAAK,QAAQ,YAAY,IAAK;AAC7B;AAAA,IACD;AAGA,QAAK,QAAQ,UAAU,YAAa,CAAE,EAAE,OAAQ;AAI/C,UAAK,YAAa,MAAM,CAAE,GAAG,QAAQ,QAAQ,OAAQ;AAIpD,YAAI,aAAa,YAAY;AAC7B,iBAAU,IAAI,MAAM,GAAG,IAAI,YAAY,QAAQ,KAAM;AACpD,cAAK,YAAa,CAAE,EAAE,UAAU,QAAQ,OAAQ;AAC/C,yBAAa;AACb;AAAA,UACD;AAAA,QACD;AAIA,0BAAkB,KAAM;AAAA,UACvB;AAAA,UACA,UAAU;AAAA,YACT,YAAY,MAAO,MAAM,GAAG,UAAW;AAAA,UACxC;AAAA,QACD,CAAE;AAAA,MACH,OAAO;AAEN,0BAAkB,KAAM;AAAA,UACvB;AAAA,UACA,UAAU;AAAA,QACX,CAAE;AAAA,MACH;AAAA,IACD;AAAA,EACD,CAAE;AAEF,SAAO;AACR;AAWO,SAAS,qBACf,mBACA,SACU;AACV,SAAO,kBAAkB;AAAA,IACxB,CAAE,EAAE,SAAS,EAAE,SAAS,KAAK,GAAG,SAAS,UACxC;AAAA,MACC;AAAA,MACA;AAAA;AAAA;AAAA,QAGC,SAAS,OACN,gBAAa;AAAA,UACb;AAAA,QACA,CAAE,SAAM,uCAAoB,OAAQ,CAAE,aACtC,uCAAoB,OAAQ;AAAA,MAChC;AAAA,MACA,UAAU,SACP;AAAA,YACA;AAAA,UACC;AAAA,UACA,EAAE,QAAQ;AAAA,UACV,qBAAsB,UAAU,OAAQ;AAAA,QACzC;AAAA,MACA,IACA,CAAC;AAAA,IACL;AAAA,EACF;AACD;",
4
+ "sourcesContent": ["import { createBlock } from '@wordpress/blocks';\nimport type { Block } from '@wordpress/blocks';\nimport { escapeAttribute, escapeEditableHTML } from '@wordpress/escape-html';\n\nexport interface HeadingData {\n\t/** The plain text content of the heading. */\n\tcontent: string;\n\t/** The heading level. */\n\tlevel: number;\n\t/** Link to the heading. */\n\tlink: string;\n}\n\nexport interface NestedHeadingData {\n\t/** The heading content, level, and link. */\n\theading: HeadingData;\n\t/** The sub-headings of this heading, if any. */\n\tchildren: NestedHeadingData[] | null;\n}\n\n/**\n * Takes a flat list of heading parameters and nests them based on each header's\n * immediate parent's level.\n *\n * @param headingList The flat list of headings to nest.\n *\n * @return The nested list of headings.\n */\nexport function linearToNestedHeadingList(\n\theadingList: HeadingData[]\n): NestedHeadingData[] {\n\tconst nestedHeadingList: NestedHeadingData[] = [];\n\n\theadingList.forEach( ( heading, key ) => {\n\t\tif ( heading.content === '' ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure we are only working with the same level as the first iteration in our set.\n\t\tif ( heading.level === headingList[ 0 ].level ) {\n\t\t\t// Check that the next iteration will return a value.\n\t\t\t// If it does and the next level is greater than the current level,\n\t\t\t// the next iteration becomes a child of the current iteration.\n\t\t\tif ( headingList[ key + 1 ]?.level > heading.level ) {\n\t\t\t\t// We must calculate the last index before the next iteration that\n\t\t\t\t// has the same level (siblings). We then use this index to slice\n\t\t\t\t// the array for use in recursion. This prevents duplicate nodes.\n\t\t\t\tlet endOfSlice = headingList.length;\n\t\t\t\tfor ( let i = key + 1; i < headingList.length; i++ ) {\n\t\t\t\t\tif ( headingList[ i ].level === heading.level ) {\n\t\t\t\t\t\tendOfSlice = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// We found a child node: Push a new node onto the return array\n\t\t\t\t// with children.\n\t\t\t\tnestedHeadingList.push( {\n\t\t\t\t\theading,\n\t\t\t\t\tchildren: linearToNestedHeadingList(\n\t\t\t\t\t\theadingList.slice( key + 1, endOfSlice )\n\t\t\t\t\t),\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\t// No child node: Push a new node onto the return array.\n\t\t\t\tnestedHeadingList.push( {\n\t\t\t\t\theading,\n\t\t\t\t\tchildren: null,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn nestedHeadingList;\n}\n\n/**\n * Converts a nested heading list into `core/list-item` blocks, with\n * sub-headings nested in a `core/list` block inside their parent item.\n *\n * @param nestedHeadingList The nested list of headings.\n * @param ordered Whether nested lists are ordered.\n *\n * @return The list item blocks.\n */\nexport function createListItemBlocks(\n\tnestedHeadingList: NestedHeadingData[],\n\tordered: boolean\n): Block[] {\n\treturn nestedHeadingList.map(\n\t\t( { heading: { content, link }, children } ) =>\n\t\t\tcreateBlock(\n\t\t\t\t'core/list-item',\n\t\t\t\t{\n\t\t\t\t\t// Headings are plain text, and links can carry query args on\n\t\t\t\t\t// paginated posts, so both need escaping to become markup.\n\t\t\t\t\tcontent: link\n\t\t\t\t\t\t? `<a href=\"${ escapeAttribute(\n\t\t\t\t\t\t\t\tlink\n\t\t\t\t\t\t\t) }\">${ escapeEditableHTML( content ) }</a>`\n\t\t\t\t\t\t: escapeEditableHTML( content ),\n\t\t\t\t},\n\t\t\t\tchildren?.length\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t'core/list',\n\t\t\t\t\t\t\t\t{ ordered },\n\t\t\t\t\t\t\t\tcreateListItemBlocks( children, ordered )\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t]\n\t\t\t\t\t: []\n\t\t\t)\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA4B;AAE5B,yBAAoD;AA0B7C,SAAS,0BACf,aACsB;AACtB,QAAM,oBAAyC,CAAC;AAEhD,cAAY,QAAS,CAAE,SAAS,QAAS;AACxC,QAAK,QAAQ,YAAY,IAAK;AAC7B;AAAA,IACD;AAGA,QAAK,QAAQ,UAAU,YAAa,CAAE,EAAE,OAAQ;AAI/C,UAAK,YAAa,MAAM,CAAE,GAAG,QAAQ,QAAQ,OAAQ;AAIpD,YAAI,aAAa,YAAY;AAC7B,iBAAU,IAAI,MAAM,GAAG,IAAI,YAAY,QAAQ,KAAM;AACpD,cAAK,YAAa,CAAE,EAAE,UAAU,QAAQ,OAAQ;AAC/C,yBAAa;AACb;AAAA,UACD;AAAA,QACD;AAIA,0BAAkB,KAAM;AAAA,UACvB;AAAA,UACA,UAAU;AAAA,YACT,YAAY,MAAO,MAAM,GAAG,UAAW;AAAA,UACxC;AAAA,QACD,CAAE;AAAA,MACH,OAAO;AAEN,0BAAkB,KAAM;AAAA,UACvB;AAAA,UACA,UAAU;AAAA,QACX,CAAE;AAAA,MACH;AAAA,IACD;AAAA,EACD,CAAE;AAEF,SAAO;AACR;AAWO,SAAS,qBACf,mBACA,SACU;AACV,SAAO,kBAAkB;AAAA,IACxB,CAAE,EAAE,SAAS,EAAE,SAAS,KAAK,GAAG,SAAS,UACxC;AAAA,MACC;AAAA,MACA;AAAA;AAAA;AAAA,QAGC,SAAS,OACN,gBAAa;AAAA,UACb;AAAA,QACD,CAAE,SAAM,uCAAoB,OAAQ,CAAE,aACrC,uCAAoB,OAAQ;AAAA,MAChC;AAAA,MACA,UAAU,SACP;AAAA,YACA;AAAA,UACC;AAAA,UACA,EAAE,QAAQ;AAAA,UACV,qBAAsB,UAAU,OAAQ;AAAA,QACzC;AAAA,MACD,IACC,CAAC;AAAA,IACL;AAAA,EACF;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tabs/use-tab-actions.js"],
4
- "sourcesContent": ["import { createBlock } from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useDispatch, useRegistry } from '@wordpress/data';\n\n/**\n * Provides callbacks to insert, remove and move tabs for a tabs block.\n *\n * The hook intentionally avoids subscribing to the store: all data is derived\n * lazily inside the callbacks via `registry.select`, so consumers don't\n * re-render when the tab structure changes.\n *\n * @param {string|null} tabsClientId The client ID of the parent tabs block.\n * @return {{ insertTab: Function, removeTab: Function, moveTab: Function }} Tab action callbacks.\n */\nexport default function useTabActions( tabsClientId ) {\n\tconst registry = useRegistry();\n\tconst {\n\t\tinsertBlock,\n\t\tremoveBlock,\n\t\tmoveBlocksToPosition,\n\t\tupdateBlockAttributes,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\t// Derive the current tabs state at call time without subscribing.\n\tconst getTabsState = () => {\n\t\tconst { getBlocks, getBlockAttributes } =\n\t\t\tregistry.select( blockEditorStore );\n\n\t\tconst tabsAttributes = tabsClientId\n\t\t\t? getBlockAttributes( tabsClientId )\n\t\t\t: undefined;\n\t\tconst tabPanels = tabsClientId\n\t\t\t? getBlocks( tabsClientId ).find(\n\t\t\t\t\t( block ) => block.name === 'core/tab-panels'\n\t\t\t )\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\ttabPanelsClientId: tabPanels?.clientId ?? null,\n\t\t\ttabPanelBlocks: tabPanels?.innerBlocks ?? [],\n\t\t\tactiveIndex:\n\t\t\t\ttabsAttributes?.editorActiveTabIndex ??\n\t\t\t\ttabsAttributes?.activeTabIndex ??\n\t\t\t\t0,\n\t\t};\n\t};\n\n\t// Insert a new tab and make it active. Defaults to appending at the end.\n\tconst insertTab = ( atIndex ) => {\n\t\tconst { tabPanelsClientId, tabPanelBlocks } = getTabsState();\n\t\tif ( ! tabPanelsClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newIndex = atIndex ?? tabPanelBlocks.length;\n\t\tinsertBlock(\n\t\t\tcreateBlock( 'core/tab-panel' ),\n\t\t\tnewIndex,\n\t\t\ttabPanelsClientId,\n\t\t\tfalse\n\t\t);\n\n\t\t// Switch editor active tab to the new tab.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\teditorActiveTabIndex: newIndex,\n\t\t} );\n\t};\n\n\t// Remove a tab and move the active tab to an adjacent one. Defaults to the\n\t// currently active tab.\n\tconst removeTab = ( atIndex ) => {\n\t\tconst { tabPanelBlocks, activeIndex } = getTabsState();\n\t\tconst tabCount = tabPanelBlocks.length;\n\t\tif ( tabCount <= 1 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst removeIndex = atIndex ?? activeIndex;\n\t\tconst target = tabPanelBlocks[ removeIndex ];\n\t\tif ( ! target ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Calculate new active index after removal.\n\t\tconst newActiveIndex =\n\t\t\tremoveIndex >= tabCount - 1 ? tabCount - 2 : removeIndex;\n\n\t\t// Switch editor to the adjacent tab and remove the current one.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\teditorActiveTabIndex: newActiveIndex,\n\t\t} );\n\t\tremoveBlock( target.clientId, false );\n\t};\n\n\t// Move the active tab one position left or right by reordering the\n\t// underlying tab-panel. The tab-list labels follow their panel\n\t// automatically via useTabListItemsSync.\n\tconst moveTab = ( direction ) => {\n\t\tconst { tabPanelsClientId, tabPanelBlocks, activeIndex } =\n\t\t\tgetTabsState();\n\t\tif ( ! tabPanelsClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst toIndex = activeIndex + direction;\n\t\tconst target = tabPanelBlocks[ activeIndex ];\n\t\tif ( ! target || toIndex < 0 || toIndex >= tabPanelBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\teditorActiveTabIndex: toIndex,\n\t\t} );\n\t\tmoveBlocksToPosition(\n\t\t\t[ target.clientId ],\n\t\t\ttabPanelsClientId,\n\t\t\ttabPanelsClientId,\n\t\t\ttoIndex\n\t\t);\n\t};\n\n\treturn { insertTab, removeTab, moveTab };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA4B;AAC5B,0BAA0C;AAC1C,kBAAyC;AAY1B,SAAR,cAAgC,cAAe;AACrD,QAAM,eAAW,yBAAY;AAC7B,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI,yBAAa,oBAAAA,KAAiB;AAGlC,QAAM,eAAe,MAAM;AAC1B,UAAM,EAAE,WAAW,mBAAmB,IACrC,SAAS,OAAQ,oBAAAA,KAAiB;AAEnC,UAAM,iBAAiB,eACpB,mBAAoB,YAAa,IACjC;AACH,UAAM,YAAY,eACf,UAAW,YAAa,EAAE;AAAA,MAC1B,CAAE,UAAW,MAAM,SAAS;AAAA,IAC5B,IACA;AAEH,WAAO;AAAA,MACN,mBAAmB,WAAW,YAAY;AAAA,MAC1C,gBAAgB,WAAW,eAAe,CAAC;AAAA,MAC3C,aACC,gBAAgB,wBAChB,gBAAgB,kBAChB;AAAA,IACF;AAAA,EACD;AAGA,QAAM,YAAY,CAAE,YAAa;AAChC,UAAM,EAAE,mBAAmB,eAAe,IAAI,aAAa;AAC3D,QAAK,CAAE,mBAAoB;AAC1B;AAAA,IACD;AAEA,UAAM,WAAW,WAAW,eAAe;AAC3C;AAAA,UACC,2BAAa,gBAAiB;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAGA,4CAAwC;AACxC,0BAAuB,cAAc;AAAA,MACpC,sBAAsB;AAAA,IACvB,CAAE;AAAA,EACH;AAIA,QAAM,YAAY,CAAE,YAAa;AAChC,UAAM,EAAE,gBAAgB,YAAY,IAAI,aAAa;AACrD,UAAM,WAAW,eAAe;AAChC,QAAK,YAAY,GAAI;AACpB;AAAA,IACD;AAEA,UAAM,cAAc,WAAW;AAC/B,UAAM,SAAS,eAAgB,WAAY;AAC3C,QAAK,CAAE,QAAS;AACf;AAAA,IACD;AAGA,UAAM,iBACL,eAAe,WAAW,IAAI,WAAW,IAAI;AAG9C,4CAAwC;AACxC,0BAAuB,cAAc;AAAA,MACpC,sBAAsB;AAAA,IACvB,CAAE;AACF,gBAAa,OAAO,UAAU,KAAM;AAAA,EACrC;AAKA,QAAM,UAAU,CAAE,cAAe;AAChC,UAAM,EAAE,mBAAmB,gBAAgB,YAAY,IACtD,aAAa;AACd,QAAK,CAAE,mBAAoB;AAC1B;AAAA,IACD;AAEA,UAAM,UAAU,cAAc;AAC9B,UAAM,SAAS,eAAgB,WAAY;AAC3C,QAAK,CAAE,UAAU,UAAU,KAAK,WAAW,eAAe,QAAS;AAClE;AAAA,IACD;AAEA,4CAAwC;AACxC,0BAAuB,cAAc;AAAA,MACpC,sBAAsB;AAAA,IACvB,CAAE;AACF;AAAA,MACC,CAAE,OAAO,QAAS;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO,EAAE,WAAW,WAAW,QAAQ;AACxC;",
4
+ "sourcesContent": ["import { createBlock } from '@wordpress/blocks';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { useDispatch, useRegistry } from '@wordpress/data';\n\n/**\n * Provides callbacks to insert, remove and move tabs for a tabs block.\n *\n * The hook intentionally avoids subscribing to the store: all data is derived\n * lazily inside the callbacks via `registry.select`, so consumers don't\n * re-render when the tab structure changes.\n *\n * @param {string|null} tabsClientId The client ID of the parent tabs block.\n * @return {{ insertTab: Function, removeTab: Function, moveTab: Function }} Tab action callbacks.\n */\nexport default function useTabActions( tabsClientId ) {\n\tconst registry = useRegistry();\n\tconst {\n\t\tinsertBlock,\n\t\tremoveBlock,\n\t\tmoveBlocksToPosition,\n\t\tupdateBlockAttributes,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\t// Derive the current tabs state at call time without subscribing.\n\tconst getTabsState = () => {\n\t\tconst { getBlocks, getBlockAttributes } =\n\t\t\tregistry.select( blockEditorStore );\n\n\t\tconst tabsAttributes = tabsClientId\n\t\t\t? getBlockAttributes( tabsClientId )\n\t\t\t: undefined;\n\t\tconst tabPanels = tabsClientId\n\t\t\t? getBlocks( tabsClientId ).find(\n\t\t\t\t\t( block ) => block.name === 'core/tab-panels'\n\t\t\t\t)\n\t\t\t: undefined;\n\n\t\treturn {\n\t\t\ttabPanelsClientId: tabPanels?.clientId ?? null,\n\t\t\ttabPanelBlocks: tabPanels?.innerBlocks ?? [],\n\t\t\tactiveIndex:\n\t\t\t\ttabsAttributes?.editorActiveTabIndex ??\n\t\t\t\ttabsAttributes?.activeTabIndex ??\n\t\t\t\t0,\n\t\t};\n\t};\n\n\t// Insert a new tab and make it active. Defaults to appending at the end.\n\tconst insertTab = ( atIndex ) => {\n\t\tconst { tabPanelsClientId, tabPanelBlocks } = getTabsState();\n\t\tif ( ! tabPanelsClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newIndex = atIndex ?? tabPanelBlocks.length;\n\t\tinsertBlock(\n\t\t\tcreateBlock( 'core/tab-panel' ),\n\t\t\tnewIndex,\n\t\t\ttabPanelsClientId,\n\t\t\tfalse\n\t\t);\n\n\t\t// Switch editor active tab to the new tab.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\teditorActiveTabIndex: newIndex,\n\t\t} );\n\t};\n\n\t// Remove a tab and move the active tab to an adjacent one. Defaults to the\n\t// currently active tab.\n\tconst removeTab = ( atIndex ) => {\n\t\tconst { tabPanelBlocks, activeIndex } = getTabsState();\n\t\tconst tabCount = tabPanelBlocks.length;\n\t\tif ( tabCount <= 1 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst removeIndex = atIndex ?? activeIndex;\n\t\tconst target = tabPanelBlocks[ removeIndex ];\n\t\tif ( ! target ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Calculate new active index after removal.\n\t\tconst newActiveIndex =\n\t\t\tremoveIndex >= tabCount - 1 ? tabCount - 2 : removeIndex;\n\n\t\t// Switch editor to the adjacent tab and remove the current one.\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\teditorActiveTabIndex: newActiveIndex,\n\t\t} );\n\t\tremoveBlock( target.clientId, false );\n\t};\n\n\t// Move the active tab one position left or right by reordering the\n\t// underlying tab-panel. The tab-list labels follow their panel\n\t// automatically via useTabListItemsSync.\n\tconst moveTab = ( direction ) => {\n\t\tconst { tabPanelsClientId, tabPanelBlocks, activeIndex } =\n\t\t\tgetTabsState();\n\t\tif ( ! tabPanelsClientId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst toIndex = activeIndex + direction;\n\t\tconst target = tabPanelBlocks[ activeIndex ];\n\t\tif ( ! target || toIndex < 0 || toIndex >= tabPanelBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\tupdateBlockAttributes( tabsClientId, {\n\t\t\teditorActiveTabIndex: toIndex,\n\t\t} );\n\t\tmoveBlocksToPosition(\n\t\t\t[ target.clientId ],\n\t\t\ttabPanelsClientId,\n\t\t\ttabPanelsClientId,\n\t\t\ttoIndex\n\t\t);\n\t};\n\n\treturn { insertTab, removeTab, moveTab };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA4B;AAC5B,0BAA0C;AAC1C,kBAAyC;AAY1B,SAAR,cAAgC,cAAe;AACrD,QAAM,eAAW,yBAAY;AAC7B,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI,yBAAa,oBAAAA,KAAiB;AAGlC,QAAM,eAAe,MAAM;AAC1B,UAAM,EAAE,WAAW,mBAAmB,IACrC,SAAS,OAAQ,oBAAAA,KAAiB;AAEnC,UAAM,iBAAiB,eACpB,mBAAoB,YAAa,IACjC;AACH,UAAM,YAAY,eACf,UAAW,YAAa,EAAE;AAAA,MAC1B,CAAE,UAAW,MAAM,SAAS;AAAA,IAC7B,IACC;AAEH,WAAO;AAAA,MACN,mBAAmB,WAAW,YAAY;AAAA,MAC1C,gBAAgB,WAAW,eAAe,CAAC;AAAA,MAC3C,aACC,gBAAgB,wBAChB,gBAAgB,kBAChB;AAAA,IACF;AAAA,EACD;AAGA,QAAM,YAAY,CAAE,YAAa;AAChC,UAAM,EAAE,mBAAmB,eAAe,IAAI,aAAa;AAC3D,QAAK,CAAE,mBAAoB;AAC1B;AAAA,IACD;AAEA,UAAM,WAAW,WAAW,eAAe;AAC3C;AAAA,UACC,2BAAa,gBAAiB;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAGA,4CAAwC;AACxC,0BAAuB,cAAc;AAAA,MACpC,sBAAsB;AAAA,IACvB,CAAE;AAAA,EACH;AAIA,QAAM,YAAY,CAAE,YAAa;AAChC,UAAM,EAAE,gBAAgB,YAAY,IAAI,aAAa;AACrD,UAAM,WAAW,eAAe;AAChC,QAAK,YAAY,GAAI;AACpB;AAAA,IACD;AAEA,UAAM,cAAc,WAAW;AAC/B,UAAM,SAAS,eAAgB,WAAY;AAC3C,QAAK,CAAE,QAAS;AACf;AAAA,IACD;AAGA,UAAM,iBACL,eAAe,WAAW,IAAI,WAAW,IAAI;AAG9C,4CAAwC;AACxC,0BAAuB,cAAc;AAAA,MACpC,sBAAsB;AAAA,IACvB,CAAE;AACF,gBAAa,OAAO,UAAU,KAAM;AAAA,EACrC;AAKA,QAAM,UAAU,CAAE,cAAe;AAChC,UAAM,EAAE,mBAAmB,gBAAgB,YAAY,IACtD,aAAa;AACd,QAAK,CAAE,mBAAoB;AAC1B;AAAA,IACD;AAEA,UAAM,UAAU,cAAc;AAC9B,UAAM,SAAS,eAAgB,WAAY;AAC3C,QAAK,CAAE,UAAU,UAAU,KAAK,WAAW,eAAe,QAAS;AAClE;AAAA,IACD;AAEA,4CAAwC;AACxC,0BAAuB,cAAc;AAAA,MACpC,sBAAsB;AAAA,IACvB,CAAE;AACF;AAAA,MACC,CAAE,OAAO,QAAS;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO,EAAE,WAAW,WAAW,QAAQ;AACxC;",
6
6
  "names": ["blockEditorStore"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tag-cloud/edit.jsx"],
4
- "sourcesContent": ["import {\n\tFlex,\n\tFlexItem,\n\tToggleControl,\n\tSelectControl,\n\tSpinner,\n\tRangeControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSettings,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useServerSideRender } from '@wordpress/server-side-render';\nimport { useDisabled } from '@wordpress/compose';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\nimport HtmlRenderer from '../utils/html-renderer';\n\n/**\n * Minimum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MIN_TAGS = 1;\n\n/**\n * Maximum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MAX_TAGS = 100;\n\nconst MIN_FONT_SIZE = 0.1;\nconst MAX_FONT_SIZE = 100;\n\nfunction TagCloudEdit( { attributes, setAttributes, name } ) {\n\tconst {\n\t\ttaxonomy,\n\t\tshowTagCounts,\n\t\tnumberOfTags,\n\t\tsmallestFontSize,\n\t\tlargestFontSize,\n\t} = attributes;\n\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\t// The `pt` unit is used as the default value and is therefore\n\t// always considered an available unit.\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits\n\t\t\t? [ ...availableUnits, 'pt' ]\n\t\t\t: [ '%', 'px', 'em', 'rem', 'pt' ],\n\t} );\n\n\tconst taxonomies = useSelect(\n\t\t( select ) => select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t[]\n\t);\n\n\tconst getTaxonomyOptions = () => {\n\t\tconst selectOption = {\n\t\t\tlabel: __( '- Select -' ),\n\t\t\tvalue: '',\n\t\t\tdisabled: true,\n\t\t};\n\t\tconst taxonomyOptions = ( taxonomies ?? [] )\n\t\t\t.filter( ( tax ) => !! tax.show_cloud )\n\t\t\t.map( ( item ) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: item.slug,\n\t\t\t\t\tlabel: item.name,\n\t\t\t\t};\n\t\t\t} );\n\n\t\treturn [ selectOption, ...taxonomyOptions ];\n\t};\n\n\tconst onFontSizeChange = ( fontSizeLabel, newValue ) => {\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst [ quantity, newUnit ] =\n\t\t\tparseQuantityAndUnitFromRawValue( newValue );\n\t\tif ( ! Number.isFinite( quantity ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst updateObj = { [ fontSizeLabel ]: newValue };\n\t\t// We need to keep in sync the `unit` changes to both `smallestFontSize`\n\t\t// and `largestFontSize` attributes.\n\t\tObject.entries( {\n\t\t\tsmallestFontSize,\n\t\t\tlargestFontSize,\n\t\t} ).forEach( ( [ attribute, currentValue ] ) => {\n\t\t\tconst [ currentQuantity, currentUnit ] =\n\t\t\t\tparseQuantityAndUnitFromRawValue( currentValue );\n\t\t\t// Only add an update if the other font size attribute has a different unit.\n\t\t\tif ( attribute !== fontSizeLabel && currentUnit !== newUnit ) {\n\t\t\t\tupdateObj[ attribute ] = `${ currentQuantity }${ newUnit }`;\n\t\t\t}\n\t\t} );\n\t\tsetAttributes( updateObj );\n\t};\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\tresetAll={ () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\ttaxonomy: 'post_tag',\n\t\t\t\t\t\tshowTagCounts: false,\n\t\t\t\t\t\tnumberOfTags: 45,\n\t\t\t\t\t\tsmallestFontSize: '8pt',\n\t\t\t\t\t\tlargestFontSize: '22pt',\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => taxonomy !== 'post_tag' }\n\t\t\t\t\tlabel={ __( 'Taxonomy' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { taxonomy: 'post_tag' } )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Taxonomy' ) }\n\t\t\t\t\t\toptions={ getTaxonomyOptions() }\n\t\t\t\t\t\tvalue={ taxonomy }\n\t\t\t\t\t\tonChange={ ( selectedTaxonomy ) =>\n\t\t\t\t\t\t\tsetAttributes( { taxonomy: selectedTaxonomy } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () =>\n\t\t\t\t\t\tsmallestFontSize !== '8pt' || largestFontSize !== '22pt'\n\t\t\t\t\t}\n\t\t\t\t\tlabel={ __( 'Font size' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tsmallestFontSize: '8pt',\n\t\t\t\t\t\t\tlargestFontSize: '22pt',\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<Flex gap={ 4 }>\n\t\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Smallest size' ) }\n\t\t\t\t\t\t\t\tvalue={ smallestFontSize }\n\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\tonFontSizeChange(\n\t\t\t\t\t\t\t\t\t\t'smallestFontSize',\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Largest size' ) }\n\t\t\t\t\t\t\t\tvalue={ largestFontSize }\n\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\tonFontSizeChange(\n\t\t\t\t\t\t\t\t\t\t'largestFontSize',\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => numberOfTags !== 45 }\n\t\t\t\t\tlabel={ __( 'Number of tags' ) }\n\t\t\t\t\tonDeselect={ () => setAttributes( { numberOfTags: 45 } ) }\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Number of tags' ) }\n\t\t\t\t\t\tvalue={ numberOfTags }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { numberOfTags: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ MIN_TAGS }\n\t\t\t\t\t\tmax={ MAX_TAGS }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => showTagCounts !== false }\n\t\t\t\t\tlabel={ __( 'Show tag counts' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { showTagCounts: false } )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show tag counts' ) }\n\t\t\t\t\t\tchecked={ showTagCounts }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { showTagCounts: ! showTagCounts } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</ToolsPanel>\n\t\t</InspectorControls>\n\t);\n\n\tconst { content, status, error } = useServerSideRender( {\n\t\tattributes,\n\t\tskipBlockSupportAttributes: true,\n\t\tblock: name,\n\t} );\n\n\tconst disabledRef = useDisabled();\n\tconst blockProps = useBlockProps( { ref: disabledRef } );\n\n\treturn (\n\t\t<>\n\t\t\t{ inspectorControls }\n\t\t\t{ status === 'loading' && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ status === 'error' && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: error message returned when rendering the block. */\n\t\t\t\t\t\t\t__( 'Error: %s' ),\n\t\t\t\t\t\t\terror\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ status === 'success' && (\n\t\t\t\t<HtmlRenderer wrapperProps={ blockProps } html={ content } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default TagCloudEdit;\n"],
5
- "mappings": "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",
6
- "names": ["useCustomUnits", "coreStore", "parseQuantityAndUnitFromRawValue", "ToolsPanel", "ToolsPanelItem", "UnitControl", "HtmlRenderer"]
4
+ "sourcesContent": ["import {\n\tFlex,\n\tFlexItem,\n\tToggleControl,\n\tSelectControl as WCSelectControl,\n\tSpinner,\n\tRangeControl,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalUseCustomUnits as useCustomUnits,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tInspectorControls,\n\tuseBlockProps,\n\tuseSettings,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useServerSideRender } from '@wordpress/server-side-render';\nimport { useDisabled } from '@wordpress/compose';\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\nimport HtmlRenderer from '../utils/html-renderer';\n\n/**\n * Minimum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MIN_TAGS = 1;\n\n/**\n * Maximum number of tags a user can show using this block.\n *\n * @type {number}\n */\nconst MAX_TAGS = 100;\n\nconst MIN_FONT_SIZE = 0.1;\nconst MAX_FONT_SIZE = 100;\n\nfunction TagCloudEdit( { attributes, setAttributes, name } ) {\n\tconst {\n\t\ttaxonomy,\n\t\tshowTagCounts,\n\t\tnumberOfTags,\n\t\tsmallestFontSize,\n\t\tlargestFontSize,\n\t} = attributes;\n\n\tconst [ availableUnits ] = useSettings( 'spacing.units' );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\t// The `pt` unit is used as the default value and is therefore\n\t// always considered an available unit.\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: availableUnits\n\t\t\t? [ ...availableUnits, 'pt' ]\n\t\t\t: [ '%', 'px', 'em', 'rem', 'pt' ],\n\t} );\n\n\tconst taxonomies = useSelect(\n\t\t( select ) => select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t[]\n\t);\n\n\tconst getTaxonomyOptions = () => {\n\t\tconst selectOption = {\n\t\t\tlabel: __( '- Select -' ),\n\t\t\tvalue: '',\n\t\t\tdisabled: true,\n\t\t};\n\t\tconst taxonomyOptions = ( taxonomies ?? [] )\n\t\t\t.filter( ( tax ) => !! tax.show_cloud )\n\t\t\t.map( ( item ) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: item.slug,\n\t\t\t\t\tlabel: item.name,\n\t\t\t\t};\n\t\t\t} );\n\n\t\treturn [ selectOption, ...taxonomyOptions ];\n\t};\n\n\tconst onFontSizeChange = ( fontSizeLabel, newValue ) => {\n\t\t// eslint-disable-next-line @wordpress/no-unused-vars-before-return\n\t\tconst [ quantity, newUnit ] =\n\t\t\tparseQuantityAndUnitFromRawValue( newValue );\n\t\tif ( ! Number.isFinite( quantity ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst updateObj = { [ fontSizeLabel ]: newValue };\n\t\t// We need to keep in sync the `unit` changes to both `smallestFontSize`\n\t\t// and `largestFontSize` attributes.\n\t\tObject.entries( {\n\t\t\tsmallestFontSize,\n\t\t\tlargestFontSize,\n\t\t} ).forEach( ( [ attribute, currentValue ] ) => {\n\t\t\tconst [ currentQuantity, currentUnit ] =\n\t\t\t\tparseQuantityAndUnitFromRawValue( currentValue );\n\t\t\t// Only add an update if the other font size attribute has a different unit.\n\t\t\tif ( attribute !== fontSizeLabel && currentUnit !== newUnit ) {\n\t\t\t\tupdateObj[ attribute ] = `${ currentQuantity }${ newUnit }`;\n\t\t\t}\n\t\t} );\n\t\tsetAttributes( updateObj );\n\t};\n\n\tconst inspectorControls = (\n\t\t<InspectorControls>\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\tresetAll={ () => {\n\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\ttaxonomy: 'post_tag',\n\t\t\t\t\t\tshowTagCounts: false,\n\t\t\t\t\t\tnumberOfTags: 45,\n\t\t\t\t\t\tsmallestFontSize: '8pt',\n\t\t\t\t\t\tlargestFontSize: '22pt',\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => taxonomy !== 'post_tag' }\n\t\t\t\t\tlabel={ __( 'Taxonomy' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { taxonomy: 'post_tag' } )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<WCSelectControl\n\t\t\t\t\t\tlabel={ __( 'Taxonomy' ) }\n\t\t\t\t\t\toptions={ getTaxonomyOptions() }\n\t\t\t\t\t\tvalue={ taxonomy }\n\t\t\t\t\t\tonChange={ ( selectedTaxonomy ) =>\n\t\t\t\t\t\t\tsetAttributes( { taxonomy: selectedTaxonomy } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () =>\n\t\t\t\t\t\tsmallestFontSize !== '8pt' || largestFontSize !== '22pt'\n\t\t\t\t\t}\n\t\t\t\t\tlabel={ __( 'Font size' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tsmallestFontSize: '8pt',\n\t\t\t\t\t\t\tlargestFontSize: '22pt',\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<Flex gap={ 4 }>\n\t\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Smallest size' ) }\n\t\t\t\t\t\t\t\tvalue={ smallestFontSize }\n\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\tonFontSizeChange(\n\t\t\t\t\t\t\t\t\t\t'smallestFontSize',\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t<FlexItem isBlock>\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Largest size' ) }\n\t\t\t\t\t\t\t\tvalue={ largestFontSize }\n\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\tonFontSizeChange(\n\t\t\t\t\t\t\t\t\t\t'largestFontSize',\n\t\t\t\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\t\tmin={ MIN_FONT_SIZE }\n\t\t\t\t\t\t\t\tmax={ MAX_FONT_SIZE }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t</Flex>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => numberOfTags !== 45 }\n\t\t\t\t\tlabel={ __( 'Number of tags' ) }\n\t\t\t\t\tonDeselect={ () => setAttributes( { numberOfTags: 45 } ) }\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<RangeControl\n\t\t\t\t\t\tlabel={ __( 'Number of tags' ) }\n\t\t\t\t\t\tvalue={ numberOfTags }\n\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\tsetAttributes( { numberOfTags: value } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin={ MIN_TAGS }\n\t\t\t\t\t\tmax={ MAX_TAGS }\n\t\t\t\t\t\trequired\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => showTagCounts !== false }\n\t\t\t\t\tlabel={ __( 'Show tag counts' ) }\n\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\tsetAttributes( { showTagCounts: false } )\n\t\t\t\t\t}\n\t\t\t\t\tisShownByDefault\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Show tag counts' ) }\n\t\t\t\t\t\tchecked={ showTagCounts }\n\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\tsetAttributes( { showTagCounts: ! showTagCounts } )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</ToolsPanel>\n\t\t</InspectorControls>\n\t);\n\n\tconst { content, status, error } = useServerSideRender( {\n\t\tattributes,\n\t\tskipBlockSupportAttributes: true,\n\t\tblock: name,\n\t} );\n\n\tconst disabledRef = useDisabled();\n\tconst blockProps = useBlockProps( { ref: disabledRef } );\n\n\treturn (\n\t\t<>\n\t\t\t{ inspectorControls }\n\t\t\t{ status === 'loading' && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<Spinner />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ status === 'error' && (\n\t\t\t\t<div { ...blockProps }>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: error message returned when rendering the block. */\n\t\t\t\t\t\t\t__( 'Error: %s' ),\n\t\t\t\t\t\t\terror\n\t\t\t\t\t\t) }\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ status === 'success' && (\n\t\t\t\t<HtmlRenderer wrapperProps={ blockProps } html={ content } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default TagCloudEdit;\n"],
5
+ "mappings": "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",
6
+ "names": ["useCustomUnits", "coreStore", "parseQuantityAndUnitFromRawValue", "ToolsPanel", "ToolsPanelItem", "WCSelectControl", "UnitControl", "HtmlRenderer"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/template-part/edit/advanced-controls.jsx"],
4
- "sourcesContent": ["import { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport { SelectControl, TextControl } from '@wordpress/components';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { TemplatePartImportControls } from './import-controls';\nimport { unlock } from '../../lock-unlock';\n\nconst { HTMLElementControl } = unlock( blockEditorPrivateApis );\n\nexport function TemplatePartAdvancedControls( {\n\ttagName,\n\tsetAttributes,\n\tisEntityAvailable,\n\ttemplatePartId,\n\tdefaultWrapper,\n\thasInnerBlocks,\n\tclientId,\n} ) {\n\tconst [ area, setArea ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t'area',\n\t\ttemplatePartId\n\t);\n\n\tconst [ title, setTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t'title',\n\t\ttemplatePartId\n\t);\n\n\tconst defaultTemplatePartAreas = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getCurrentTheme()\n\t\t\t\t?.default_template_part_areas || [],\n\t\t[]\n\t);\n\n\tconst areaOptions = defaultTemplatePartAreas.map(\n\t\t( { label, area: _area } ) => ( {\n\t\t\tlabel,\n\t\t\tvalue: _area,\n\t\t} )\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ isEntityAvailable && (\n\t\t\t\t<>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetTitle( value );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonFocus={ ( event ) => event.target.select() }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Area' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\toptions={ areaOptions }\n\t\t\t\t\t\tvalue={ area }\n\t\t\t\t\t\tonChange={ setArea }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<HTMLElementControl\n\t\t\t\ttagName={ tagName || '' }\n\t\t\t\tonChange={ ( value ) => setAttributes( { tagName: value } ) }\n\t\t\t\tclientId={ clientId }\n\t\t\t\toptions={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: HTML tag based on area. */\n\t\t\t\t\t\t\t__( 'Default based on area (%s)' ),\n\t\t\t\t\t\t\t`<${ defaultWrapper }>`\n\t\t\t\t\t\t),\n\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t},\n\t\t\t\t\t{ label: '<header>', value: 'header' },\n\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t{ label: '<footer>', value: 'footer' },\n\t\t\t\t\t{ label: '<div>', value: 'div' },\n\t\t\t\t] }\n\t\t\t/>\n\t\t\t{ ! hasInnerBlocks && (\n\t\t\t\t<TemplatePartImportControls\n\t\t\t\t\tarea={ area }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAkD;AAClD,wBAA2C;AAC3C,kBAA4B;AAC5B,kBAA0B;AAC1B,0BAAsD;AACtD,6BAA2C;AAC3C,yBAAuB;AA4CnB;AA1CJ,IAAM,EAAE,mBAAmB,QAAI,2BAAQ,oBAAAA,WAAuB;AAEvD,SAAS,6BAA8B;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,CAAE,MAAM,OAAQ,QAAI;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,CAAE,OAAO,QAAS,QAAI;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,+BAA2B;AAAA,IAChC,CAAE,WACD,OAAQ,iBAAAC,KAAU,EAAE,gBAAgB,GACjC,+BAA+B,CAAC;AAAA,IACpC,CAAC;AAAA,EACF;AAEA,QAAM,cAAc,yBAAyB;AAAA,IAC5C,CAAE,EAAE,OAAO,MAAM,MAAM,OAAS;AAAA,MAC/B;AAAA,MACA,OAAO;AAAA,IACR;AAAA,EACD;AAEA,SACC,4EACG;AAAA,yBACD,4EACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,WAAQ,gBAAI,OAAQ;AAAA,UACpB,OAAQ;AAAA,UACR,UAAW,CAAE,UAAW;AACvB,qBAAU,KAAM;AAAA,UACjB;AAAA,UACA,SAAU,CAAE,UAAW,MAAM,OAAO,OAAO;AAAA;AAAA,MAC5C;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,WAAQ,gBAAI,MAAO;AAAA,UACnB,eAAc;AAAA,UACd,SAAU;AAAA,UACV,OAAQ;AAAA,UACR,UAAW;AAAA;AAAA,MACZ;AAAA,OACD;AAAA,IAED;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,WAAW;AAAA,QACrB,UAAW,CAAE,UAAW,cAAe,EAAE,SAAS,MAAM,CAAE;AAAA,QAC1D;AAAA,QACA,SAAU;AAAA,UACT;AAAA,YACC,WAAO;AAAA;AAAA,kBAEN,gBAAI,4BAA6B;AAAA,cACjC,IAAK,cAAe;AAAA,YACrB;AAAA,YACA,OAAO;AAAA,UACR;AAAA,UACA,EAAE,OAAO,YAAY,OAAO,SAAS;AAAA,UACrC,EAAE,OAAO,UAAU,OAAO,OAAO;AAAA,UACjC,EAAE,OAAO,aAAa,OAAO,UAAU;AAAA,UACvC,EAAE,OAAO,aAAa,OAAO,UAAU;AAAA,UACvC,EAAE,OAAO,WAAW,OAAO,QAAQ;AAAA,UACnC,EAAE,OAAO,YAAY,OAAO,SAAS;AAAA,UACrC,EAAE,OAAO,SAAS,OAAO,MAAM;AAAA,QAChC;AAAA;AAAA,IACD;AAAA,IACE,CAAE,kBACH;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,KAEF;AAEF;",
6
- "names": ["blockEditorPrivateApis", "coreStore"]
4
+ "sourcesContent": ["import { useEntityProp, store as coreStore } from '@wordpress/core-data';\nimport {\n\tSelectControl as WCSelectControl,\n\tTextControl,\n} from '@wordpress/components';\nimport { sprintf, __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { TemplatePartImportControls } from './import-controls';\nimport { unlock } from '../../lock-unlock';\n\nconst { HTMLElementControl } = unlock( blockEditorPrivateApis );\n\nexport function TemplatePartAdvancedControls( {\n\ttagName,\n\tsetAttributes,\n\tisEntityAvailable,\n\ttemplatePartId,\n\tdefaultWrapper,\n\thasInnerBlocks,\n\tclientId,\n} ) {\n\tconst [ area, setArea ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t'area',\n\t\ttemplatePartId\n\t);\n\n\tconst [ title, setTitle ] = useEntityProp(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t'title',\n\t\ttemplatePartId\n\t);\n\n\tconst defaultTemplatePartAreas = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getCurrentTheme()\n\t\t\t\t?.default_template_part_areas || [],\n\t\t[]\n\t);\n\n\tconst areaOptions = defaultTemplatePartAreas.map(\n\t\t( { label, area: _area } ) => ( {\n\t\t\tlabel,\n\t\t\tvalue: _area,\n\t\t} )\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ isEntityAvailable && (\n\t\t\t\t<>\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tlabel={ __( 'Title' ) }\n\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetTitle( value );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonFocus={ ( event ) => event.target.select() }\n\t\t\t\t\t/>\n\t\t\t\t\t<WCSelectControl\n\t\t\t\t\t\tlabel={ __( 'Area' ) }\n\t\t\t\t\t\tlabelPosition=\"top\"\n\t\t\t\t\t\toptions={ areaOptions }\n\t\t\t\t\t\tvalue={ area }\n\t\t\t\t\t\tonChange={ setArea }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<HTMLElementControl\n\t\t\t\ttagName={ tagName || '' }\n\t\t\t\tonChange={ ( value ) => setAttributes( { tagName: value } ) }\n\t\t\t\tclientId={ clientId }\n\t\t\t\toptions={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: sprintf(\n\t\t\t\t\t\t\t/* translators: %s: HTML tag based on area. */\n\t\t\t\t\t\t\t__( 'Default based on area (%s)' ),\n\t\t\t\t\t\t\t`<${ defaultWrapper }>`\n\t\t\t\t\t\t),\n\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t},\n\t\t\t\t\t{ label: '<header>', value: 'header' },\n\t\t\t\t\t{ label: '<main>', value: 'main' },\n\t\t\t\t\t{ label: '<section>', value: 'section' },\n\t\t\t\t\t{ label: '<article>', value: 'article' },\n\t\t\t\t\t{ label: '<aside>', value: 'aside' },\n\t\t\t\t\t{ label: '<footer>', value: 'footer' },\n\t\t\t\t\t{ label: '<div>', value: 'div' },\n\t\t\t\t] }\n\t\t\t/>\n\t\t\t{ ! hasInnerBlocks && (\n\t\t\t\t<TemplatePartImportControls\n\t\t\t\t\tarea={ area }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAkD;AAClD,wBAGO;AACP,kBAA4B;AAC5B,kBAA0B;AAC1B,0BAAsD;AACtD,6BAA2C;AAC3C,yBAAuB;AA4CnB;AA1CJ,IAAM,EAAE,mBAAmB,QAAI,2BAAQ,oBAAAA,WAAuB;AAEvD,SAAS,6BAA8B;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,CAAE,MAAM,OAAQ,QAAI;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,CAAE,OAAO,QAAS,QAAI;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,+BAA2B;AAAA,IAChC,CAAE,WACD,OAAQ,iBAAAC,KAAU,EAAE,gBAAgB,GACjC,+BAA+B,CAAC;AAAA,IACpC,CAAC;AAAA,EACF;AAEA,QAAM,cAAc,yBAAyB;AAAA,IAC5C,CAAE,EAAE,OAAO,MAAM,MAAM,OAAS;AAAA,MAC/B;AAAA,MACA,OAAO;AAAA,IACR;AAAA,EACD;AAEA,SACC,4EACG;AAAA,yBACD,4EACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,WAAQ,gBAAI,OAAQ;AAAA,UACpB,OAAQ;AAAA,UACR,UAAW,CAAE,UAAW;AACvB,qBAAU,KAAM;AAAA,UACjB;AAAA,UACA,SAAU,CAAE,UAAW,MAAM,OAAO,OAAO;AAAA;AAAA,MAC5C;AAAA,MACA;AAAA,QAAC,kBAAAC;AAAA,QAAA;AAAA,UACA,WAAQ,gBAAI,MAAO;AAAA,UACnB,eAAc;AAAA,UACd,SAAU;AAAA,UACV,OAAQ;AAAA,UACR,UAAW;AAAA;AAAA,MACZ;AAAA,OACD;AAAA,IAED;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,WAAW;AAAA,QACrB,UAAW,CAAE,UAAW,cAAe,EAAE,SAAS,MAAM,CAAE;AAAA,QAC1D;AAAA,QACA,SAAU;AAAA,UACT;AAAA,YACC,WAAO;AAAA;AAAA,kBAEN,gBAAI,4BAA6B;AAAA,cACjC,IAAK,cAAe;AAAA,YACrB;AAAA,YACA,OAAO;AAAA,UACR;AAAA,UACA,EAAE,OAAO,YAAY,OAAO,SAAS;AAAA,UACrC,EAAE,OAAO,UAAU,OAAO,OAAO;AAAA,UACjC,EAAE,OAAO,aAAa,OAAO,UAAU;AAAA,UACvC,EAAE,OAAO,aAAa,OAAO,UAAU;AAAA,UACvC,EAAE,OAAO,WAAW,OAAO,QAAQ;AAAA,UACnC,EAAE,OAAO,YAAY,OAAO,SAAS;AAAA,UACrC,EAAE,OAAO,SAAS,OAAO,MAAM;AAAA,QAChC;AAAA;AAAA,IACD;AAAA,IACE,CAAE,kBACH;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,KAEF;AAEF;",
6
+ "names": ["blockEditorPrivateApis", "coreStore", "WCSelectControl"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/template-part/edit/import-controls.jsx"],
4
- "sourcesContent": ["import { __, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport {\n\tButton,\n\tFlexBlock,\n\tFlexItem,\n\tSelectControl,\n\t__experimentalHStack as HStack,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useCreateTemplatePartFromBlocks } from './utils/hooks';\nimport { transformWidgetToBlock } from './utils/transformers';\n\nconst SIDEBARS_QUERY = {\n\tper_page: -1,\n\t_fields: 'id,name,description,status,widgets',\n};\n\nexport function TemplatePartImportControls( { area, setAttributes } ) {\n\tconst [ selectedSidebar, setSelectedSidebar ] = useState( '' );\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\n\tconst registry = useRegistry();\n\tconst { sidebars, hasResolved } = useSelect( ( select ) => {\n\t\tconst { getSidebars, hasFinishedResolution } = select( coreStore );\n\n\t\treturn {\n\t\t\tsidebars: getSidebars( SIDEBARS_QUERY ),\n\t\t\thasResolved: hasFinishedResolution( 'getSidebars', [\n\t\t\t\tSIDEBARS_QUERY,\n\t\t\t] ),\n\t\t};\n\t}, [] );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\tconst options = useMemo( () => {\n\t\tconst sidebarOptions = ( sidebars ?? [] )\n\t\t\t.filter(\n\t\t\t\t( widgetArea ) =>\n\t\t\t\t\twidgetArea.id !== 'wp_inactive_widgets' &&\n\t\t\t\t\twidgetArea.widgets.length > 0\n\t\t\t)\n\t\t\t.map( ( widgetArea ) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: widgetArea.id,\n\t\t\t\t\tlabel: widgetArea.name,\n\t\t\t\t};\n\t\t\t} );\n\n\t\tif ( ! sidebarOptions.length ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn [\n\t\t\t{ value: '', label: __( 'Select widget area' ) },\n\t\t\t...sidebarOptions,\n\t\t];\n\t}, [ sidebars ] );\n\n\t// Render an empty node while data is loading to avoid SlotFill re-positioning bug.\n\t// See: https://github.com/WordPress/gutenberg/issues/15641.\n\tif ( ! hasResolved ) {\n\t\treturn <Spacer marginBottom=\"0\" />;\n\t}\n\n\tif ( hasResolved && ! options.length ) {\n\t\treturn null;\n\t}\n\n\tasync function createFromWidgets( event ) {\n\t\tevent.preventDefault();\n\n\t\tif ( isBusy || ! selectedSidebar ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsBusy( true );\n\n\t\tconst sidebar = options.find(\n\t\t\t( { value } ) => value === selectedSidebar\n\t\t);\n\t\tconst { getWidgets } = registry.resolveSelect( coreStore );\n\n\t\t// The widgets API always returns a successful response.\n\t\tconst widgets = await getWidgets( {\n\t\t\tsidebar: sidebar.value,\n\t\t\t_embed: 'about',\n\t\t} );\n\n\t\tconst skippedWidgets = new Set();\n\t\tconst blocks = widgets.flatMap( ( widget ) => {\n\t\t\tconst block = transformWidgetToBlock( widget );\n\n\t\t\t// Skip the block if we have no matching transformations.\n\t\t\tif ( ! block ) {\n\t\t\t\tskippedWidgets.add( widget.id_base );\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn block;\n\t\t} );\n\n\t\tawait createFromBlocks(\n\t\t\tblocks,\n\t\t\t/* translators: %s: name of the widget area */\n\t\t\tsprintf( __( 'Widget area: %s' ), sidebar.label )\n\t\t);\n\n\t\tif ( skippedWidgets.size ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: the list of widgets */\n\t\t\t\t\t__( 'Unable to import the following widgets: %s.' ),\n\t\t\t\t\tArray.from( skippedWidgets ).join( ', ' )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tsetIsBusy( false );\n\t}\n\n\treturn (\n\t\t<Spacer marginBottom=\"4\">\n\t\t\t<HStack as=\"form\" onSubmit={ createFromWidgets }>\n\t\t\t\t<FlexBlock>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\tlabel={ __( 'Import widget area' ) }\n\t\t\t\t\t\tvalue={ selectedSidebar }\n\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\tonChange={ ( value ) => setSelectedSidebar( value ) }\n\t\t\t\t\t\tdisabled={ ! options.length }\n\t\t\t\t\t/>\n\t\t\t\t</FlexBlock>\n\t\t\t\t<FlexItem\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tmarginBottom: '8px',\n\t\t\t\t\t\tmarginTop: 'auto',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\taria-disabled={ isBusy || ! selectedSidebar }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ _x( 'Import', 'button label' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</Spacer>\n\t);\n}\n"],
5
- "mappings": "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",
6
- "names": ["coreStore", "noticesStore", "Spacer", "HStack"]
4
+ "sourcesContent": ["import { __, _x, sprintf } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport {\n\tButton,\n\tFlexBlock,\n\tFlexItem,\n\tSelectControl as WCSelectControl,\n\t__experimentalHStack as HStack,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useCreateTemplatePartFromBlocks } from './utils/hooks';\nimport { transformWidgetToBlock } from './utils/transformers';\n\nconst SIDEBARS_QUERY = {\n\tper_page: -1,\n\t_fields: 'id,name,description,status,widgets',\n};\n\nexport function TemplatePartImportControls( { area, setAttributes } ) {\n\tconst [ selectedSidebar, setSelectedSidebar ] = useState( '' );\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\n\tconst registry = useRegistry();\n\tconst { sidebars, hasResolved } = useSelect( ( select ) => {\n\t\tconst { getSidebars, hasFinishedResolution } = select( coreStore );\n\n\t\treturn {\n\t\t\tsidebars: getSidebars( SIDEBARS_QUERY ),\n\t\t\thasResolved: hasFinishedResolution( 'getSidebars', [\n\t\t\t\tSIDEBARS_QUERY,\n\t\t\t] ),\n\t\t};\n\t}, [] );\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\n\tconst createFromBlocks = useCreateTemplatePartFromBlocks(\n\t\tarea,\n\t\tsetAttributes\n\t);\n\n\tconst options = useMemo( () => {\n\t\tconst sidebarOptions = ( sidebars ?? [] )\n\t\t\t.filter(\n\t\t\t\t( widgetArea ) =>\n\t\t\t\t\twidgetArea.id !== 'wp_inactive_widgets' &&\n\t\t\t\t\twidgetArea.widgets.length > 0\n\t\t\t)\n\t\t\t.map( ( widgetArea ) => {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: widgetArea.id,\n\t\t\t\t\tlabel: widgetArea.name,\n\t\t\t\t};\n\t\t\t} );\n\n\t\tif ( ! sidebarOptions.length ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn [\n\t\t\t{ value: '', label: __( 'Select widget area' ) },\n\t\t\t...sidebarOptions,\n\t\t];\n\t}, [ sidebars ] );\n\n\t// Render an empty node while data is loading to avoid SlotFill re-positioning bug.\n\t// See: https://github.com/WordPress/gutenberg/issues/15641.\n\tif ( ! hasResolved ) {\n\t\treturn <Spacer marginBottom=\"0\" />;\n\t}\n\n\tif ( hasResolved && ! options.length ) {\n\t\treturn null;\n\t}\n\n\tasync function createFromWidgets( event ) {\n\t\tevent.preventDefault();\n\n\t\tif ( isBusy || ! selectedSidebar ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsBusy( true );\n\n\t\tconst sidebar = options.find(\n\t\t\t( { value } ) => value === selectedSidebar\n\t\t);\n\t\tconst { getWidgets } = registry.resolveSelect( coreStore );\n\n\t\t// The widgets API always returns a successful response.\n\t\tconst widgets = await getWidgets( {\n\t\t\tsidebar: sidebar.value,\n\t\t\t_embed: 'about',\n\t\t} );\n\n\t\tconst skippedWidgets = new Set();\n\t\tconst blocks = widgets.flatMap( ( widget ) => {\n\t\t\tconst block = transformWidgetToBlock( widget );\n\n\t\t\t// Skip the block if we have no matching transformations.\n\t\t\tif ( ! block ) {\n\t\t\t\tskippedWidgets.add( widget.id_base );\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn block;\n\t\t} );\n\n\t\tawait createFromBlocks(\n\t\t\tblocks,\n\t\t\t/* translators: %s: name of the widget area */\n\t\t\tsprintf( __( 'Widget area: %s' ), sidebar.label )\n\t\t);\n\n\t\tif ( skippedWidgets.size ) {\n\t\t\tcreateErrorNotice(\n\t\t\t\tsprintf(\n\t\t\t\t\t/* translators: %s: the list of widgets */\n\t\t\t\t\t__( 'Unable to import the following widgets: %s.' ),\n\t\t\t\t\tArray.from( skippedWidgets ).join( ', ' )\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tsetIsBusy( false );\n\t}\n\n\treturn (\n\t\t<Spacer marginBottom=\"4\">\n\t\t\t<HStack as=\"form\" onSubmit={ createFromWidgets }>\n\t\t\t\t<FlexBlock>\n\t\t\t\t\t<WCSelectControl\n\t\t\t\t\t\tlabel={ __( 'Import widget area' ) }\n\t\t\t\t\t\tvalue={ selectedSidebar }\n\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\tonChange={ ( value ) => setSelectedSidebar( value ) }\n\t\t\t\t\t\tdisabled={ ! options.length }\n\t\t\t\t\t/>\n\t\t\t\t</FlexBlock>\n\t\t\t\t<FlexItem\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tmarginBottom: '8px',\n\t\t\t\t\t\tmarginTop: 'auto',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tisBusy={ isBusy }\n\t\t\t\t\t\taria-disabled={ isBusy || ! selectedSidebar }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ _x( 'Import', 'button label' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</Spacer>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAgC;AAChC,qBAAkC;AAClC,kBAAoD;AACpD,wBAOO;AACP,uBAAmC;AACnC,qBAAsC;AACtC,mBAAgD;AAChD,0BAAuC;AAwD9B;AAtDT,IAAM,iBAAiB;AAAA,EACtB,UAAU;AAAA,EACV,SAAS;AACV;AAEO,SAAS,2BAA4B,EAAE,MAAM,cAAc,GAAI;AACrE,QAAM,CAAE,iBAAiB,kBAAmB,QAAI,yBAAU,EAAG;AAC7D,QAAM,CAAE,QAAQ,SAAU,QAAI,yBAAU,KAAM;AAE9C,QAAM,eAAW,yBAAY;AAC7B,QAAM,EAAE,UAAU,YAAY,QAAI,uBAAW,CAAE,WAAY;AAC1D,UAAM,EAAE,aAAa,sBAAsB,IAAI,OAAQ,iBAAAA,KAAU;AAEjE,WAAO;AAAA,MACN,UAAU,YAAa,cAAe;AAAA,MACtC,aAAa,sBAAuB,eAAe;AAAA,QAClD;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAC,CAAE;AACN,QAAM,EAAE,kBAAkB,QAAI,yBAAa,eAAAC,KAAa;AAExD,QAAM,uBAAmB;AAAA,IACxB;AAAA,IACA;AAAA,EACD;AAEA,QAAM,cAAU,wBAAS,MAAM;AAC9B,UAAM,kBAAmB,YAAY,CAAC,GACpC;AAAA,MACA,CAAE,eACD,WAAW,OAAO,yBAClB,WAAW,QAAQ,SAAS;AAAA,IAC9B,EACC,IAAK,CAAE,eAAgB;AACvB,aAAO;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACnB;AAAA,IACD,CAAE;AAEH,QAAK,CAAE,eAAe,QAAS;AAC9B,aAAO,CAAC;AAAA,IACT;AAEA,WAAO;AAAA,MACN,EAAE,OAAO,IAAI,WAAO,gBAAI,oBAAqB,EAAE;AAAA,MAC/C,GAAG;AAAA,IACJ;AAAA,EACD,GAAG,CAAE,QAAS,CAAE;AAIhB,MAAK,CAAE,aAAc;AACpB,WAAO,4CAAC,kBAAAC,sBAAA,EAAO,cAAa,KAAI;AAAA,EACjC;AAEA,MAAK,eAAe,CAAE,QAAQ,QAAS;AACtC,WAAO;AAAA,EACR;AAEA,iBAAe,kBAAmB,OAAQ;AACzC,UAAM,eAAe;AAErB,QAAK,UAAU,CAAE,iBAAkB;AAClC;AAAA,IACD;AAEA,cAAW,IAAK;AAEhB,UAAM,UAAU,QAAQ;AAAA,MACvB,CAAE,EAAE,MAAM,MAAO,UAAU;AAAA,IAC5B;AACA,UAAM,EAAE,WAAW,IAAI,SAAS,cAAe,iBAAAF,KAAU;AAGzD,UAAM,UAAU,MAAM,WAAY;AAAA,MACjC,SAAS,QAAQ;AAAA,MACjB,QAAQ;AAAA,IACT,CAAE;AAEF,UAAM,iBAAiB,oBAAI,IAAI;AAC/B,UAAM,SAAS,QAAQ,QAAS,CAAE,WAAY;AAC7C,YAAM,YAAQ,4CAAwB,MAAO;AAG7C,UAAK,CAAE,OAAQ;AACd,uBAAe,IAAK,OAAO,OAAQ;AACnC,eAAO,CAAC;AAAA,MACT;AAEA,aAAO;AAAA,IACR,CAAE;AAEF,UAAM;AAAA,MACL;AAAA;AAAA,UAEA,yBAAS,gBAAI,iBAAkB,GAAG,QAAQ,KAAM;AAAA,IACjD;AAEA,QAAK,eAAe,MAAO;AAC1B;AAAA,YACC;AAAA;AAAA,cAEC,gBAAI,6CAA8C;AAAA,UAClD,MAAM,KAAM,cAAe,EAAE,KAAM,IAAK;AAAA,QACzC;AAAA,QACA;AAAA,UACC,MAAM;AAAA,QACP;AAAA,MACD;AAAA,IACD;AAEA,cAAW,KAAM;AAAA,EAClB;AAEA,SACC,4CAAC,kBAAAE,sBAAA,EAAO,cAAa,KACpB,uDAAC,kBAAAC,sBAAA,EAAO,IAAG,QAAO,UAAW,mBAC5B;AAAA,gDAAC,+BACA;AAAA,MAAC,kBAAAC;AAAA,MAAA;AAAA,QACA,WAAQ,gBAAI,oBAAqB;AAAA,QACjC,OAAQ;AAAA,QACR;AAAA,QACA,UAAW,CAAE,UAAW,mBAAoB,KAAM;AAAA,QAClD,UAAW,CAAE,QAAQ;AAAA;AAAA,IACtB,GACD;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ;AAAA,UACP,cAAc;AAAA,UACd,WAAW;AAAA,QACZ;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACA,uBAAqB;AAAA,YACrB,SAAQ;AAAA,YACR,MAAK;AAAA,YACL;AAAA,YACA,iBAAgB,UAAU,CAAE;AAAA,YAE1B,8BAAI,UAAU,cAAe;AAAA;AAAA,QAChC;AAAA;AAAA,IACD;AAAA,KACD,GACD;AAEF;",
6
+ "names": ["coreStore", "noticesStore", "Spacer", "HStack", "WCSelectControl"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/template-part/edit/index.jsx"],
4
- "sourcesContent": ["import { serialize } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInspectorControls,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tSpinner,\n\tModal,\n\tMenuItem,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport TemplatePartPlaceholder from './placeholder';\nimport TemplatePartSelectionModal from './selection-modal';\nimport { TemplatePartAdvancedControls } from './advanced-controls';\nimport TemplatePartInnerBlocks from './inner-blocks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseTemplatePartArea,\n} from './utils/hooks';\n\nconst SUPPORTED_AREAS = [ 'header', 'footer', 'navigation-overlay' ];\n\nfunction ReplaceButton( {\n\tisEntityAvailable,\n\tarea,\n\ttemplatePartId,\n\tisTemplatePartSelectionOpen,\n\tsetIsTemplatePartSelectionOpen,\n} ) {\n\t// This hook fetches patterns, so don't run it unconditionally in the main\n\t// edit function!\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst hasReplacements = !! templateParts.length;\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\tSUPPORTED_AREAS.includes( area );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tsetIsTemplatePartSelectionOpen( true );\n\t\t\t} }\n\t\t\taria-expanded={ isTemplatePartSelectionOpen }\n\t\t\taria-haspopup=\"dialog\"\n\t\t>\n\t\t\t{ __( 'Replace' ) }\n\t\t</MenuItem>\n\t);\n}\n\nfunction TemplatesList( { area, clientId, isEntityAvailable, onSelect } ) {\n\t// This hook fetches patterns, so don't run it unconditionally in the main\n\t// edit function!\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\t!! blockPatterns.length &&\n\t\tSUPPORTED_AREAS.includes( area );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Design' ) }>\n\t\t\t<BlockPatternsList\n\t\t\t\tlabel={ __( 'Templates' ) }\n\t\t\t\tblockPatterns={ blockPatterns }\n\t\t\t\tonClickPattern={ onSelect }\n\t\t\t\tshowTitlesAsTooltip\n\t\t\t/>\n\t\t</PanelBody>\n\t);\n}\n\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst currentTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\tconst { slug, theme = currentTheme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\tconst {\n\t\tisResolved,\n\t\thasInnerBlocks,\n\t\tisMissing,\n\t\tarea,\n\t\tonNavigateToEntityRecord,\n\t\ttitle,\n\t\tcanUserEdit,\n\t\tcanUserEditBlock,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlockCount, getSettings, canEditBlock } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst getEntityArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\ttemplatePartId,\n\t\t\t];\n\t\t\tconst entityRecord = templatePartId\n\t\t\t\t? getEditedEntityRecord( ...getEntityArgs )\n\t\t\t\t: null;\n\t\t\tconst _area = entityRecord?.area || attributes.area;\n\t\t\tconst hasResolvedEntity = templatePartId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tgetEntityArgs\n\t\t\t\t )\n\t\t\t\t: false;\n\n\t\t\tconst _canUserEdit = hasResolvedEntity\n\t\t\t\t? select( coreStore ).canUser( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_template_part',\n\t\t\t\t\t\tid: templatePartId,\n\t\t\t\t } )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: getBlockCount( clientId ) > 0,\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing:\n\t\t\t\t\thasResolvedEntity &&\n\t\t\t\t\t( ! entityRecord ||\n\t\t\t\t\t\tObject.keys( entityRecord ).length === 0 ),\n\t\t\t\tarea: _area,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\ttitle: entityRecord?.title,\n\t\t\t\tcanUserEdit: !! _canUserEdit,\n\t\t\t\tcanUserEditBlock: canEditBlock( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, attributes.area, clientId ]\n\t);\n\n\tconst areaObject = useTemplatePartArea( area );\n\tconst blockProps = useBlockProps();\n\tconst isPlaceholder = ! slug;\n\tconst isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;\n\tconst TagName = tagName || areaObject.tagName;\n\n\tconst onPatternSelect = async ( pattern ) => {\n\t\tawait editEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template_part',\n\t\t\ttemplatePartId,\n\t\t\t{\n\t\t\t\tblocks: pattern.blocks,\n\t\t\t\tcontent: serialize( pattern.blocks ),\n\t\t\t}\n\t\t);\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" updated.' ),\n\t\t\t\ttitle || slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t};\n\n\t// We don't want to render a missing state if we have any inner blocks.\n\t// A new template part is automatically created if we have any inner blocks but no entity.\n\tif (\n\t\t! hasInnerBlocks &&\n\t\t( ( slug && ! theme ) || ( slug && isMissing ) )\n\t) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Template part slug. */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Template part has been deleted or is unavailable: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslug\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RecursionProvider uniqueId={ templatePartId }>\n\t\t\t\t{ isEntityAvailable &&\n\t\t\t\t\tonNavigateToEntityRecord &&\n\t\t\t\t\tcanUserEdit && (\n\t\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonNavigateToEntityRecord( {\n\t\t\t\t\t\t\t\t\t\tpostId: templatePartId,\n\t\t\t\t\t\t\t\t\t\tpostType: 'wp_template_part',\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t\t</BlockControls>\n\t\t\t\t\t) }\n\t\t\t\t{ canUserEdit && (\n\t\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t\t<TemplatePartAdvancedControls\n\t\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InspectorControls>\n\t\t\t\t) }\n\t\t\t\t{ isPlaceholder && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<TemplatePartPlaceholder\n\t\t\t\t\t\t\tarea={ attributes.area }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tonOpenSelectionModal={ () =>\n\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t\t// Only enable for single selection that matches the current block.\n\t\t\t\t\t\t// Ensures menu item doesn't render multiple times.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! canUserEditBlock ||\n\t\t\t\t\t\t\t! (\n\t\t\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\t\t\tclientId === selectedClientIds[ 0 ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ReplaceButton\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\tisEntityAvailable,\n\t\t\t\t\t\t\t\t\tarea,\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\ttemplatePartId,\n\t\t\t\t\t\t\t\t\tisTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t</BlockSettingsMenuControls>\n\n\t\t\t\t<InspectorControls group=\"settings\">\n\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\tonSelect={ ( pattern ) => onPatternSelect( pattern ) }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<TemplatePartInnerBlocks\n\t\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tpostId={ templatePartId }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isPlaceholder && ! isResolved && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t\t{ isTemplatePartSelectionOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\toverlayClassName=\"block-editor-template-part__selection-modal\"\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t\t\t__( 'Choose a %s' ),\n\t\t\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t}\n\t\t\t\t\tisFullScreen\n\t\t\t\t>\n\t\t\t\t\t<TemplatePartSelectionModal\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonClose={ () =>\n\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { serialize } from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tBlockSettingsMenuControls,\n\tuseBlockProps,\n\tWarning,\n\tstore as blockEditorStore,\n\tRecursionProvider,\n\tuseHasRecursion,\n\tInspectorControls,\n\t__experimentalBlockPatternsList as BlockPatternsList,\n\tBlockControls,\n} from '@wordpress/block-editor';\nimport {\n\tPanelBody,\n\tSpinner,\n\tModal,\n\tMenuItem,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useState } from '@wordpress/element';\nimport { store as noticesStore } from '@wordpress/notices';\nimport TemplatePartPlaceholder from './placeholder';\nimport TemplatePartSelectionModal from './selection-modal';\nimport { TemplatePartAdvancedControls } from './advanced-controls';\nimport TemplatePartInnerBlocks from './inner-blocks';\nimport { createTemplatePartId } from './utils/create-template-part-id';\nimport {\n\tuseAlternativeBlockPatterns,\n\tuseAlternativeTemplateParts,\n\tuseTemplatePartArea,\n} from './utils/hooks';\n\nconst SUPPORTED_AREAS = [ 'header', 'footer', 'navigation-overlay' ];\n\nfunction ReplaceButton( {\n\tisEntityAvailable,\n\tarea,\n\ttemplatePartId,\n\tisTemplatePartSelectionOpen,\n\tsetIsTemplatePartSelectionOpen,\n} ) {\n\t// This hook fetches patterns, so don't run it unconditionally in the main\n\t// edit function!\n\tconst { templateParts } = useAlternativeTemplateParts(\n\t\tarea,\n\t\ttemplatePartId\n\t);\n\tconst hasReplacements = !! templateParts.length;\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\thasReplacements &&\n\t\tSUPPORTED_AREAS.includes( area );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuItem\n\t\t\tonClick={ () => {\n\t\t\t\tsetIsTemplatePartSelectionOpen( true );\n\t\t\t} }\n\t\t\taria-expanded={ isTemplatePartSelectionOpen }\n\t\t\taria-haspopup=\"dialog\"\n\t\t>\n\t\t\t{ __( 'Replace' ) }\n\t\t</MenuItem>\n\t);\n}\n\nfunction TemplatesList( { area, clientId, isEntityAvailable, onSelect } ) {\n\t// This hook fetches patterns, so don't run it unconditionally in the main\n\t// edit function!\n\tconst blockPatterns = useAlternativeBlockPatterns( area, clientId );\n\tconst canReplace =\n\t\tisEntityAvailable &&\n\t\t!! blockPatterns.length &&\n\t\tSUPPORTED_AREAS.includes( area );\n\n\tif ( ! canReplace ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<PanelBody title={ __( 'Design' ) }>\n\t\t\t<BlockPatternsList\n\t\t\t\tlabel={ __( 'Templates' ) }\n\t\t\t\tblockPatterns={ blockPatterns }\n\t\t\t\tonClickPattern={ onSelect }\n\t\t\t\tshowTitlesAsTooltip\n\t\t\t/>\n\t\t</PanelBody>\n\t);\n}\n\nexport default function TemplatePartEdit( {\n\tattributes,\n\tsetAttributes,\n\tclientId,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst currentTheme = useSelect(\n\t\t( select ) => select( coreStore ).getCurrentTheme()?.stylesheet,\n\t\t[]\n\t);\n\tconst { slug, theme = currentTheme, tagName, layout = {} } = attributes;\n\tconst templatePartId = createTemplatePartId( theme, slug );\n\tconst hasAlreadyRendered = useHasRecursion( templatePartId );\n\tconst [ isTemplatePartSelectionOpen, setIsTemplatePartSelectionOpen ] =\n\t\tuseState( false );\n\n\tconst {\n\t\tisResolved,\n\t\thasInnerBlocks,\n\t\tisMissing,\n\t\tarea,\n\t\tonNavigateToEntityRecord,\n\t\ttitle,\n\t\tcanUserEdit,\n\t\tcanUserEditBlock,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEditedEntityRecord, hasFinishedResolution } =\n\t\t\t\tselect( coreStore );\n\t\t\tconst { getBlockCount, getSettings, canEditBlock } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst getEntityArgs = [\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\ttemplatePartId,\n\t\t\t];\n\t\t\tconst entityRecord = templatePartId\n\t\t\t\t? getEditedEntityRecord( ...getEntityArgs )\n\t\t\t\t: null;\n\t\t\tconst _area = entityRecord?.area || attributes.area;\n\t\t\tconst hasResolvedEntity = templatePartId\n\t\t\t\t? hasFinishedResolution(\n\t\t\t\t\t\t'getEditedEntityRecord',\n\t\t\t\t\t\tgetEntityArgs\n\t\t\t\t\t)\n\t\t\t\t: false;\n\n\t\t\tconst _canUserEdit = hasResolvedEntity\n\t\t\t\t? select( coreStore ).canUser( 'update', {\n\t\t\t\t\t\tkind: 'postType',\n\t\t\t\t\t\tname: 'wp_template_part',\n\t\t\t\t\t\tid: templatePartId,\n\t\t\t\t\t} )\n\t\t\t\t: false;\n\n\t\t\treturn {\n\t\t\t\thasInnerBlocks: getBlockCount( clientId ) > 0,\n\t\t\t\tisResolved: hasResolvedEntity,\n\t\t\t\tisMissing:\n\t\t\t\t\thasResolvedEntity &&\n\t\t\t\t\t( ! entityRecord ||\n\t\t\t\t\t\tObject.keys( entityRecord ).length === 0 ),\n\t\t\t\tarea: _area,\n\t\t\t\tonNavigateToEntityRecord:\n\t\t\t\t\tgetSettings().onNavigateToEntityRecord,\n\t\t\t\ttitle: entityRecord?.title,\n\t\t\t\tcanUserEdit: !! _canUserEdit,\n\t\t\t\tcanUserEditBlock: canEditBlock( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ templatePartId, attributes.area, clientId ]\n\t);\n\n\tconst areaObject = useTemplatePartArea( area );\n\tconst blockProps = useBlockProps();\n\tconst isPlaceholder = ! slug;\n\tconst isEntityAvailable = ! isPlaceholder && ! isMissing && isResolved;\n\tconst TagName = tagName || areaObject.tagName;\n\n\tconst onPatternSelect = async ( pattern ) => {\n\t\tawait editEntityRecord(\n\t\t\t'postType',\n\t\t\t'wp_template_part',\n\t\t\ttemplatePartId,\n\t\t\t{\n\t\t\t\tblocks: pattern.blocks,\n\t\t\t\tcontent: serialize( pattern.blocks ),\n\t\t\t}\n\t\t);\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: template part title. */\n\t\t\t\t__( 'Template Part \"%s\" updated.' ),\n\t\t\t\ttitle || slug\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t}\n\t\t);\n\t};\n\n\t// We don't want to render a missing state if we have any inner blocks.\n\t// A new template part is automatically created if we have any inner blocks but no entity.\n\tif (\n\t\t! hasInnerBlocks &&\n\t\t( ( slug && ! theme ) || ( slug && isMissing ) )\n\t) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t/* translators: %s: Template part slug. */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'Template part has been deleted or is unavailable: %s'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tslug\n\t\t\t\t\t) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\tif ( isEntityAvailable && hasAlreadyRendered ) {\n\t\treturn (\n\t\t\t<TagName { ...blockProps }>\n\t\t\t\t<Warning>\n\t\t\t\t\t{ __( 'Block cannot be rendered inside itself.' ) }\n\t\t\t\t</Warning>\n\t\t\t</TagName>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RecursionProvider uniqueId={ templatePartId }>\n\t\t\t\t{ isEntityAvailable &&\n\t\t\t\t\tonNavigateToEntityRecord &&\n\t\t\t\t\tcanUserEdit && (\n\t\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\tonNavigateToEntityRecord( {\n\t\t\t\t\t\t\t\t\t\tpostId: templatePartId,\n\t\t\t\t\t\t\t\t\t\tpostType: 'wp_template_part',\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Edit original' ) }\n\t\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t\t</BlockControls>\n\t\t\t\t\t) }\n\t\t\t\t{ canUserEdit && (\n\t\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t\t<TemplatePartAdvancedControls\n\t\t\t\t\t\t\ttagName={ tagName }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tdefaultWrapper={ areaObject.tagName }\n\t\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InspectorControls>\n\t\t\t\t) }\n\t\t\t\t{ isPlaceholder && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<TemplatePartPlaceholder\n\t\t\t\t\t\t\tarea={ attributes.area }\n\t\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\tonOpenSelectionModal={ () =>\n\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( true )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t\t<BlockSettingsMenuControls>\n\t\t\t\t\t{ ( { selectedClientIds } ) => {\n\t\t\t\t\t\t// Only enable for single selection that matches the current block.\n\t\t\t\t\t\t// Ensures menu item doesn't render multiple times.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! canUserEditBlock ||\n\t\t\t\t\t\t\t! (\n\t\t\t\t\t\t\t\tselectedClientIds.length === 1 &&\n\t\t\t\t\t\t\t\tclientId === selectedClientIds[ 0 ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ReplaceButton\n\t\t\t\t\t\t\t\t{ ...{\n\t\t\t\t\t\t\t\t\tisEntityAvailable,\n\t\t\t\t\t\t\t\t\tarea,\n\t\t\t\t\t\t\t\t\tclientId,\n\t\t\t\t\t\t\t\t\ttemplatePartId,\n\t\t\t\t\t\t\t\t\tisTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} }\n\t\t\t\t</BlockSettingsMenuControls>\n\n\t\t\t\t<InspectorControls group=\"settings\">\n\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tisEntityAvailable={ isEntityAvailable }\n\t\t\t\t\t\tonSelect={ ( pattern ) => onPatternSelect( pattern ) }\n\t\t\t\t\t/>\n\t\t\t\t</InspectorControls>\n\n\t\t\t\t{ isEntityAvailable && (\n\t\t\t\t\t<TemplatePartInnerBlocks\n\t\t\t\t\t\ttagName={ TagName }\n\t\t\t\t\t\tblockProps={ blockProps }\n\t\t\t\t\t\tpostId={ templatePartId }\n\t\t\t\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\t\t\t\tlayout={ layout }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ ! isPlaceholder && ! isResolved && (\n\t\t\t\t\t<TagName { ...blockProps }>\n\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t</TagName>\n\t\t\t\t) }\n\t\t\t</RecursionProvider>\n\t\t\t{ isTemplatePartSelectionOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\toverlayClassName=\"block-editor-template-part__selection-modal\"\n\t\t\t\t\ttitle={ sprintf(\n\t\t\t\t\t\t// Translators: %s as template part area title (\"Header\", \"Footer\", etc.).\n\t\t\t\t\t\t__( 'Choose a %s' ),\n\t\t\t\t\t\tareaObject.label.toLowerCase()\n\t\t\t\t\t) }\n\t\t\t\t\tonRequestClose={ () =>\n\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t}\n\t\t\t\t\tisFullScreen\n\t\t\t\t>\n\t\t\t\t\t<TemplatePartSelectionModal\n\t\t\t\t\t\ttemplatePartId={ templatePartId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tarea={ area }\n\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\tonClose={ () =>\n\t\t\t\t\t\t\tsetIsTemplatePartSelectionOpen( false )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["BlockPatternsList", "noticesStore", "coreStore", "blockEditorStore", "TemplatePartPlaceholder", "TemplatePartInnerBlocks", "TemplatePartSelectionModal"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/template-part/edit/inner-blocks.jsx"],
4
- "sourcesContent": ["import { useEntityBlockEditor, store as coreStore } from '@wordpress/core-data';\nimport {\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tuseSettings,\n\tstore as blockEditorStore,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { parse } from '@wordpress/blocks';\n\nfunction useRenderAppender( hasInnerBlocks ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\t// Disable appending when the editing mode is 'contentOnly'. This is so that the user can't\n\t// append into a template part when editing a page in the site editor. See\n\t// DisableNonPageContentBlocks. Ideally instead of (mis)using editing mode there would be a\n\t// block editor API for achieving this.\n\tif ( blockEditingMode === 'contentOnly' ) {\n\t\treturn false;\n\t}\n\tif ( ! hasInnerBlocks ) {\n\t\treturn InnerBlocks.ButtonBlockAppender;\n\t}\n}\n\nfunction useLayout( layout ) {\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings()?.supportsLayout;\n\t}, [] );\n\tconst [ defaultLayout ] = useSettings( 'layout' );\n\tif ( themeSupportsLayout ) {\n\t\treturn layout?.inherit ? defaultLayout || {} : layout;\n\t}\n}\n\nfunction NonEditableTemplatePartPreview( {\n\tpostId: id,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tuseBlockEditingMode( 'disabled' );\n\n\tconst { content, editedBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst { getEditedEntityRecord } = select( coreStore );\n\t\t\tconst editedRecord = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\tid,\n\t\t\t\t{ context: 'view' }\n\t\t\t);\n\t\t\treturn {\n\t\t\t\teditedBlocks: editedRecord.blocks,\n\t\t\t\tcontent: editedRecord.content,\n\t\t\t};\n\t\t},\n\t\t[ id ]\n\t);\n\n\tconst blocks = useMemo( () => {\n\t\tif ( ! id ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( editedBlocks ) {\n\t\t\treturn editedBlocks;\n\t\t}\n\n\t\tif ( ! content || typeof content !== 'string' ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn parse( content );\n\t}, [ id, editedBlocks, content ] );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput: () => {},\n\t\tonChange: () => {},\n\t\trenderAppender: false,\n\t\tlayout: useLayout( layout ),\n\t} );\n\n\treturn <TagName { ...innerBlocksProps } />;\n}\n\nfunction EditableTemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst onNavigateToEntityRecord = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().onNavigateToEntityRecord,\n\t\t[]\n\t);\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t{ id }\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: useRenderAppender( hasInnerBlocks ),\n\t\tlayout: useLayout( layout ),\n\t} );\n\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst customProps =\n\t\tblockEditingMode === 'contentOnly' && onNavigateToEntityRecord\n\t\t\t? {\n\t\t\t\t\tonDoubleClick: () =>\n\t\t\t\t\t\tonNavigateToEntityRecord( {\n\t\t\t\t\t\t\tpostId: id,\n\t\t\t\t\t\t\tpostType: 'wp_template_part',\n\t\t\t\t\t\t} ),\n\t\t\t }\n\t\t\t: {};\n\n\treturn <TagName { ...innerBlocksProps } { ...customProps } />;\n}\n\nexport default function TemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst { canViewTemplatePart, canEditTemplatePart } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tcanViewTemplatePart: !! select( coreStore ).canUser( 'read', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template_part',\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t\tcanEditTemplatePart: !! select( coreStore ).canUser( 'update', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template_part',\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t};\n\t\t},\n\t\t[ id ]\n\t);\n\n\tif ( ! canViewTemplatePart ) {\n\t\treturn null;\n\t}\n\n\tconst TemplatePartInnerBlocksComponent = canEditTemplatePart\n\t\t? EditableTemplatePartInnerBlocks\n\t\t: NonEditableTemplatePartPreview;\n\n\treturn (\n\t\t<TemplatePartInnerBlocksComponent\n\t\t\tpostId={ id }\n\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\tlayout={ layout }\n\t\t\ttagName={ TagName }\n\t\t\tblockProps={ blockProps }\n\t\t/>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useEntityBlockEditor, store as coreStore } from '@wordpress/core-data';\nimport {\n\tInnerBlocks,\n\tuseInnerBlocksProps,\n\tuseSettings,\n\tstore as blockEditorStore,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { parse } from '@wordpress/blocks';\n\nfunction useRenderAppender( hasInnerBlocks ) {\n\tconst blockEditingMode = useBlockEditingMode();\n\t// Disable appending when the editing mode is 'contentOnly'. This is so that the user can't\n\t// append into a template part when editing a page in the site editor. See\n\t// DisableNonPageContentBlocks. Ideally instead of (mis)using editing mode there would be a\n\t// block editor API for achieving this.\n\tif ( blockEditingMode === 'contentOnly' ) {\n\t\treturn false;\n\t}\n\tif ( ! hasInnerBlocks ) {\n\t\treturn InnerBlocks.ButtonBlockAppender;\n\t}\n}\n\nfunction useLayout( layout ) {\n\tconst themeSupportsLayout = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings()?.supportsLayout;\n\t}, [] );\n\tconst [ defaultLayout ] = useSettings( 'layout' );\n\tif ( themeSupportsLayout ) {\n\t\treturn layout?.inherit ? defaultLayout || {} : layout;\n\t}\n}\n\nfunction NonEditableTemplatePartPreview( {\n\tpostId: id,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tuseBlockEditingMode( 'disabled' );\n\n\tconst { content, editedBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! id ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst { getEditedEntityRecord } = select( coreStore );\n\t\t\tconst editedRecord = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\t'wp_template_part',\n\t\t\t\tid,\n\t\t\t\t{ context: 'view' }\n\t\t\t);\n\t\t\treturn {\n\t\t\t\teditedBlocks: editedRecord.blocks,\n\t\t\t\tcontent: editedRecord.content,\n\t\t\t};\n\t\t},\n\t\t[ id ]\n\t);\n\n\tconst blocks = useMemo( () => {\n\t\tif ( ! id ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( editedBlocks ) {\n\t\t\treturn editedBlocks;\n\t\t}\n\n\t\tif ( ! content || typeof content !== 'string' ) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn parse( content );\n\t}, [ id, editedBlocks, content ] );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput: () => {},\n\t\tonChange: () => {},\n\t\trenderAppender: false,\n\t\tlayout: useLayout( layout ),\n\t} );\n\n\treturn <TagName { ...innerBlocksProps } />;\n}\n\nfunction EditableTemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst onNavigateToEntityRecord = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().onNavigateToEntityRecord,\n\t\t[]\n\t);\n\n\tconst [ blocks, onInput, onChange ] = useEntityBlockEditor(\n\t\t'postType',\n\t\t'wp_template_part',\n\t\t{ id }\n\t);\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\tvalue: blocks,\n\t\tonInput,\n\t\tonChange,\n\t\trenderAppender: useRenderAppender( hasInnerBlocks ),\n\t\tlayout: useLayout( layout ),\n\t} );\n\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst customProps =\n\t\tblockEditingMode === 'contentOnly' && onNavigateToEntityRecord\n\t\t\t? {\n\t\t\t\t\tonDoubleClick: () =>\n\t\t\t\t\t\tonNavigateToEntityRecord( {\n\t\t\t\t\t\t\tpostId: id,\n\t\t\t\t\t\t\tpostType: 'wp_template_part',\n\t\t\t\t\t\t} ),\n\t\t\t\t}\n\t\t\t: {};\n\n\treturn <TagName { ...innerBlocksProps } { ...customProps } />;\n}\n\nexport default function TemplatePartInnerBlocks( {\n\tpostId: id,\n\thasInnerBlocks,\n\tlayout,\n\ttagName: TagName,\n\tblockProps,\n} ) {\n\tconst { canViewTemplatePart, canEditTemplatePart } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\tcanViewTemplatePart: !! select( coreStore ).canUser( 'read', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template_part',\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t\tcanEditTemplatePart: !! select( coreStore ).canUser( 'update', {\n\t\t\t\t\tkind: 'postType',\n\t\t\t\t\tname: 'wp_template_part',\n\t\t\t\t\tid,\n\t\t\t\t} ),\n\t\t\t};\n\t\t},\n\t\t[ id ]\n\t);\n\n\tif ( ! canViewTemplatePart ) {\n\t\treturn null;\n\t}\n\n\tconst TemplatePartInnerBlocksComponent = canEditTemplatePart\n\t\t? EditableTemplatePartInnerBlocks\n\t\t: NonEditableTemplatePartPreview;\n\n\treturn (\n\t\t<TemplatePartInnerBlocksComponent\n\t\t\tpostId={ id }\n\t\t\thasInnerBlocks={ hasInnerBlocks }\n\t\t\tlayout={ layout }\n\t\t\ttagName={ TagName }\n\t\t\tblockProps={ blockProps }\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAyD;AACzD,0BAMO;AACP,kBAA0B;AAC1B,qBAAwB;AACxB,oBAAsB;AA+Ed;AA7ER,SAAS,kBAAmB,gBAAiB;AAC5C,QAAM,uBAAmB,yCAAoB;AAK7C,MAAK,qBAAqB,eAAgB;AACzC,WAAO;AAAA,EACR;AACA,MAAK,CAAE,gBAAiB;AACvB,WAAO,gCAAY;AAAA,EACpB;AACD;AAEA,SAAS,UAAW,QAAS;AAC5B,QAAM,0BAAsB,uBAAW,CAAE,WAAY;AACpD,UAAM,EAAE,YAAY,IAAI,OAAQ,oBAAAA,KAAiB;AACjD,WAAO,YAAY,GAAG;AAAA,EACvB,GAAG,CAAC,CAAE;AACN,QAAM,CAAE,aAAc,QAAI,iCAAa,QAAS;AAChD,MAAK,qBAAsB;AAC1B,WAAO,QAAQ,UAAU,iBAAiB,CAAC,IAAI;AAAA,EAChD;AACD;AAEA,SAAS,+BAAgC;AAAA,EACxC,QAAQ;AAAA,EACR;AAAA,EACA,SAAS;AAAA,EACT;AACD,GAAI;AACH,+CAAqB,UAAW;AAEhC,QAAM,EAAE,SAAS,aAAa,QAAI;AAAA,IACjC,CAAE,WAAY;AACb,UAAK,CAAE,IAAK;AACX,eAAO,CAAC;AAAA,MACT;AACA,YAAM,EAAE,sBAAsB,IAAI,OAAQ,iBAAAC,KAAU;AACpD,YAAM,eAAe;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,QACA,EAAE,SAAS,OAAO;AAAA,MACnB;AACA,aAAO;AAAA,QACN,cAAc,aAAa;AAAA,QAC3B,SAAS,aAAa;AAAA,MACvB;AAAA,IACD;AAAA,IACA,CAAE,EAAG;AAAA,EACN;AAEA,QAAM,aAAS,wBAAS,MAAM;AAC7B,QAAK,CAAE,IAAK;AACX,aAAO;AAAA,IACR;AAEA,QAAK,cAAe;AACnB,aAAO;AAAA,IACR;AAEA,QAAK,CAAE,WAAW,OAAO,YAAY,UAAW;AAC/C,aAAO,CAAC;AAAA,IACT;AAEA,eAAO,qBAAO,OAAQ;AAAA,EACvB,GAAG,CAAE,IAAI,cAAc,OAAQ,CAAE;AAEjC,QAAM,uBAAmB,yCAAqB,YAAY;AAAA,IACzD,OAAO;AAAA,IACP,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,UAAU,MAAM;AAAA,IAAC;AAAA,IACjB,gBAAgB;AAAA,IAChB,QAAQ,UAAW,MAAO;AAAA,EAC3B,CAAE;AAEF,SAAO,4CAAC,WAAU,GAAG,kBAAmB;AACzC;AAEA,SAAS,gCAAiC;AAAA,EACzC,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AACD,GAAI;AACH,QAAM,+BAA2B;AAAA,IAChC,CAAE,WACD,OAAQ,oBAAAD,KAAiB,EAAE,YAAY,EAAE;AAAA,IAC1C,CAAC;AAAA,EACF;AAEA,QAAM,CAAE,QAAQ,SAAS,QAAS,QAAI;AAAA,IACrC;AAAA,IACA;AAAA,IACA,EAAE,GAAG;AAAA,EACN;AAEA,QAAM,uBAAmB,yCAAqB,YAAY;AAAA,IACzD,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,gBAAgB,kBAAmB,cAAe;AAAA,IAClD,QAAQ,UAAW,MAAO;AAAA,EAC3B,CAAE;AAEF,QAAM,uBAAmB,yCAAoB;AAE7C,QAAM,cACL,qBAAqB,iBAAiB,2BACnC;AAAA,IACA,eAAe,MACd,yBAA0B;AAAA,MACzB,QAAQ;AAAA,MACR,UAAU;AAAA,IACX,CAAE;AAAA,EACJ,IACC,CAAC;AAEL,SAAO,4CAAC,WAAU,GAAG,kBAAqB,GAAG,aAAc;AAC5D;AAEe,SAAR,wBAA0C;AAAA,EAChD,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AACD,GAAI;AACH,QAAM,EAAE,qBAAqB,oBAAoB,QAAI;AAAA,IACpD,CAAE,WAAY;AACb,aAAO;AAAA,QACN,qBAAqB,CAAC,CAAE,OAAQ,iBAAAC,KAAU,EAAE,QAAS,QAAQ;AAAA,UAC5D,MAAM;AAAA,UACN,MAAM;AAAA,UACN;AAAA,QACD,CAAE;AAAA,QACF,qBAAqB,CAAC,CAAE,OAAQ,iBAAAA,KAAU,EAAE,QAAS,UAAU;AAAA,UAC9D,MAAM;AAAA,UACN,MAAM;AAAA,UACN;AAAA,QACD,CAAE;AAAA,MACH;AAAA,IACD;AAAA,IACA,CAAE,EAAG;AAAA,EACN;AAEA,MAAK,CAAE,qBAAsB;AAC5B,WAAO;AAAA,EACR;AAEA,QAAM,mCAAmC,sBACtC,kCACA;AAEH,SACC;AAAA,IAAC;AAAA;AAAA,MACA,QAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,SAAU;AAAA,MACV;AAAA;AAAA,EACD;AAEF;",
6
6
  "names": ["blockEditorStore", "coreStore"]
7
7
  }