@wordpress/block-library 9.35.1-next.dc3f6d3c1.0 → 9.36.1-next.6deb34194.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 (315) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/accordion/view.js +46 -4
  3. package/build/accordion/view.js.map +2 -2
  4. package/build/accordion-heading/block.json +1 -1
  5. package/build/accordion-heading/deprecated.js +1 -1
  6. package/build/accordion-heading/deprecated.js.map +2 -2
  7. package/build/accordion-panel/block.json +1 -1
  8. package/build/audio/index.js +13 -10
  9. package/build/audio/index.js.map +3 -3
  10. package/build/avatar/edit.js +13 -38
  11. package/build/avatar/edit.js.map +2 -2
  12. package/build/breadcrumbs/block.json +3 -2
  13. package/build/breadcrumbs/edit.js +18 -18
  14. package/build/breadcrumbs/edit.js.map +2 -2
  15. package/build/button/index.js +14 -11
  16. package/build/button/index.js.map +3 -3
  17. package/build/code/index.js +10 -7
  18. package/build/code/index.js.map +3 -3
  19. package/build/comments-pagination-numbers/block.json +7 -0
  20. package/build/cover/edit/block-controls.js +37 -3
  21. package/build/cover/edit/block-controls.js.map +3 -3
  22. package/build/cover/edit/cover-placeholder.js +0 -1
  23. package/build/cover/edit/cover-placeholder.js.map +2 -2
  24. package/build/cover/edit/embed-video-url-input.js +83 -0
  25. package/build/cover/edit/embed-video-url-input.js.map +7 -0
  26. package/build/cover/edit/index.js +60 -0
  27. package/build/cover/edit/index.js.map +2 -2
  28. package/build/cover/embed-video-utils.js +151 -0
  29. package/build/cover/embed-video-utils.js.map +7 -0
  30. package/build/cover/index.js +11 -5
  31. package/build/cover/index.js.map +3 -3
  32. package/build/cover/save.js +12 -0
  33. package/build/cover/save.js.map +2 -2
  34. package/build/cover/shared.js +3 -0
  35. package/build/cover/shared.js.map +2 -2
  36. package/build/details/index.js +10 -7
  37. package/build/details/index.js.map +3 -3
  38. package/build/file/index.js +15 -15
  39. package/build/file/index.js.map +3 -3
  40. package/build/freeform/block.json +1 -1
  41. package/build/gallery/edit.js +1 -3
  42. package/build/gallery/edit.js.map +2 -2
  43. package/build/gallery/transforms.js +7 -3
  44. package/build/gallery/transforms.js.map +2 -2
  45. package/build/heading/index.js +10 -7
  46. package/build/heading/index.js.map +3 -3
  47. package/build/html/modal.js +141 -121
  48. package/build/html/modal.js.map +3 -3
  49. package/build/image/edit.js +0 -1
  50. package/build/image/edit.js.map +2 -2
  51. package/build/image/image.js +0 -1
  52. package/build/image/image.js.map +2 -2
  53. package/build/image/index.js +19 -19
  54. package/build/image/index.js.map +3 -3
  55. package/build/index.js +9 -3
  56. package/build/index.js.map +2 -2
  57. package/build/list-item/index.js +9 -7
  58. package/build/list-item/index.js.map +3 -3
  59. package/build/math/block.json +28 -1
  60. package/build/math/edit.js +17 -2
  61. package/build/math/edit.js.map +2 -2
  62. package/build/media-text/index.js +16 -9
  63. package/build/media-text/index.js.map +3 -3
  64. package/build/media-text/media-container.js +0 -2
  65. package/build/media-text/media-container.js.map +2 -2
  66. package/build/missing/block.json +1 -1
  67. package/build/missing/edit.js +2 -2
  68. package/build/missing/edit.js.map +1 -1
  69. package/build/more/index.js +10 -7
  70. package/build/more/index.js.map +3 -3
  71. package/build/navigation-link/edit.js +36 -11
  72. package/build/navigation-link/edit.js.map +2 -2
  73. package/build/navigation-link/index.js +12 -9
  74. package/build/navigation-link/index.js.map +3 -3
  75. package/build/navigation-submenu/index.js +12 -9
  76. package/build/navigation-submenu/index.js.map +3 -3
  77. package/build/page-list-item/edit.js +4 -3
  78. package/build/page-list-item/edit.js.map +2 -2
  79. package/build/paragraph/deprecated-attributes.js +68 -0
  80. package/build/paragraph/deprecated-attributes.js.map +7 -0
  81. package/build/paragraph/edit.js +2 -0
  82. package/build/paragraph/edit.js.map +3 -3
  83. package/build/paragraph/index.js +10 -7
  84. package/build/paragraph/index.js.map +3 -3
  85. package/build/pattern/block.json +1 -1
  86. package/build/post-title/edit.js +6 -4
  87. package/build/post-title/edit.js.map +2 -2
  88. package/build/preformatted/index.js +10 -7
  89. package/build/preformatted/index.js.map +3 -3
  90. package/build/pullquote/index.js +12 -12
  91. package/build/pullquote/index.js.map +3 -3
  92. package/build/search/index.js +15 -17
  93. package/build/search/index.js.map +3 -3
  94. package/build/social-link/index.js +12 -9
  95. package/build/social-link/index.js.map +3 -3
  96. package/build/template-part/edit/index.js +37 -7
  97. package/build/template-part/edit/index.js.map +2 -2
  98. package/build/template-part/edit/utils/get-template-part-icon.js +9 -4
  99. package/build/template-part/edit/utils/get-template-part-icon.js.map +3 -3
  100. package/build/template-part/edit/utils/hooks.js +2 -3
  101. package/build/template-part/edit/utils/hooks.js.map +2 -2
  102. package/build/term-count/index.js +1 -0
  103. package/build/term-count/index.js.map +2 -2
  104. package/build/term-name/index.js +1 -0
  105. package/build/term-name/index.js.map +2 -2
  106. package/build/verse/index.js +10 -7
  107. package/build/verse/index.js.map +3 -3
  108. package/build/video/index.js +13 -10
  109. package/build/video/index.js.map +3 -3
  110. package/build-module/accordion/view.js +46 -4
  111. package/build-module/accordion/view.js.map +2 -2
  112. package/build-module/accordion-heading/block.json +1 -1
  113. package/build-module/accordion-heading/deprecated.js +1 -1
  114. package/build-module/accordion-heading/deprecated.js.map +2 -2
  115. package/build-module/accordion-panel/block.json +1 -1
  116. package/build-module/audio/index.js +13 -10
  117. package/build-module/audio/index.js.map +2 -2
  118. package/build-module/avatar/edit.js +13 -38
  119. package/build-module/avatar/edit.js.map +2 -2
  120. package/build-module/breadcrumbs/block.json +3 -2
  121. package/build-module/breadcrumbs/edit.js +18 -18
  122. package/build-module/breadcrumbs/edit.js.map +2 -2
  123. package/build-module/button/index.js +14 -11
  124. package/build-module/button/index.js.map +2 -2
  125. package/build-module/code/index.js +10 -7
  126. package/build-module/code/index.js.map +2 -2
  127. package/build-module/comments-pagination-numbers/block.json +7 -0
  128. package/build-module/cover/edit/block-controls.js +27 -3
  129. package/build-module/cover/edit/block-controls.js.map +2 -2
  130. package/build-module/cover/edit/cover-placeholder.js +0 -1
  131. package/build-module/cover/edit/cover-placeholder.js.map +2 -2
  132. package/build-module/cover/edit/embed-video-url-input.js +67 -0
  133. package/build-module/cover/edit/embed-video-url-input.js.map +7 -0
  134. package/build-module/cover/edit/index.js +61 -0
  135. package/build-module/cover/edit/index.js.map +2 -2
  136. package/build-module/cover/embed-video-utils.js +122 -0
  137. package/build-module/cover/embed-video-utils.js.map +7 -0
  138. package/build-module/cover/index.js +11 -5
  139. package/build-module/cover/index.js.map +2 -2
  140. package/build-module/cover/save.js +13 -0
  141. package/build-module/cover/save.js.map +2 -2
  142. package/build-module/cover/shared.js +2 -0
  143. package/build-module/cover/shared.js.map +2 -2
  144. package/build-module/details/index.js +10 -7
  145. package/build-module/details/index.js.map +2 -2
  146. package/build-module/file/index.js +15 -15
  147. package/build-module/file/index.js.map +2 -2
  148. package/build-module/freeform/block.json +1 -1
  149. package/build-module/gallery/edit.js +1 -3
  150. package/build-module/gallery/edit.js.map +2 -2
  151. package/build-module/gallery/transforms.js +7 -3
  152. package/build-module/gallery/transforms.js.map +2 -2
  153. package/build-module/heading/index.js +10 -7
  154. package/build-module/heading/index.js.map +2 -2
  155. package/build-module/html/modal.js +143 -122
  156. package/build-module/html/modal.js.map +2 -2
  157. package/build-module/image/edit.js +0 -1
  158. package/build-module/image/edit.js.map +2 -2
  159. package/build-module/image/image.js +0 -1
  160. package/build-module/image/image.js.map +2 -2
  161. package/build-module/image/index.js +19 -19
  162. package/build-module/image/index.js.map +2 -2
  163. package/build-module/index.js +9 -3
  164. package/build-module/index.js.map +2 -2
  165. package/build-module/list-item/index.js +9 -7
  166. package/build-module/list-item/index.js.map +2 -2
  167. package/build-module/math/block.json +28 -1
  168. package/build-module/math/edit.js +18 -3
  169. package/build-module/math/edit.js.map +2 -2
  170. package/build-module/media-text/index.js +16 -9
  171. package/build-module/media-text/index.js.map +2 -2
  172. package/build-module/media-text/media-container.js +0 -2
  173. package/build-module/media-text/media-container.js.map +2 -2
  174. package/build-module/missing/block.json +1 -1
  175. package/build-module/missing/edit.js +2 -2
  176. package/build-module/missing/edit.js.map +1 -1
  177. package/build-module/more/index.js +10 -7
  178. package/build-module/more/index.js.map +2 -2
  179. package/build-module/navigation-link/edit.js +37 -12
  180. package/build-module/navigation-link/edit.js.map +2 -2
  181. package/build-module/navigation-link/index.js +12 -9
  182. package/build-module/navigation-link/index.js.map +2 -2
  183. package/build-module/navigation-submenu/index.js +12 -9
  184. package/build-module/navigation-submenu/index.js.map +2 -2
  185. package/build-module/page-list-item/edit.js +4 -3
  186. package/build-module/page-list-item/edit.js.map +2 -2
  187. package/build-module/paragraph/deprecated-attributes.js +37 -0
  188. package/build-module/paragraph/deprecated-attributes.js.map +7 -0
  189. package/build-module/paragraph/edit.js +2 -0
  190. package/build-module/paragraph/edit.js.map +2 -2
  191. package/build-module/paragraph/index.js +10 -7
  192. package/build-module/paragraph/index.js.map +2 -2
  193. package/build-module/pattern/block.json +1 -1
  194. package/build-module/post-title/edit.js +6 -4
  195. package/build-module/post-title/edit.js.map +2 -2
  196. package/build-module/preformatted/index.js +10 -7
  197. package/build-module/preformatted/index.js.map +2 -2
  198. package/build-module/pullquote/index.js +12 -12
  199. package/build-module/pullquote/index.js.map +2 -2
  200. package/build-module/search/index.js +15 -17
  201. package/build-module/search/index.js.map +2 -2
  202. package/build-module/social-link/index.js +12 -9
  203. package/build-module/social-link/index.js.map +2 -2
  204. package/build-module/template-part/edit/index.js +37 -7
  205. package/build-module/template-part/edit/index.js.map +2 -2
  206. package/build-module/template-part/edit/utils/get-template-part-icon.js +10 -4
  207. package/build-module/template-part/edit/utils/get-template-part-icon.js.map +2 -2
  208. package/build-module/template-part/edit/utils/hooks.js +2 -3
  209. package/build-module/template-part/edit/utils/hooks.js.map +2 -2
  210. package/build-module/term-count/index.js +1 -0
  211. package/build-module/term-count/index.js.map +2 -2
  212. package/build-module/term-name/index.js +1 -0
  213. package/build-module/term-name/index.js.map +2 -2
  214. package/build-module/verse/index.js +10 -7
  215. package/build-module/verse/index.js.map +2 -2
  216. package/build-module/video/index.js +13 -10
  217. package/build-module/video/index.js.map +2 -2
  218. package/build-style/accordion/style-rtl.css +3 -0
  219. package/build-style/accordion/style.css +3 -0
  220. package/build-style/accordion-heading/style-rtl.css +2 -19
  221. package/build-style/accordion-heading/style.css +2 -19
  222. package/build-style/accordion-item/style-rtl.css +0 -7
  223. package/build-style/accordion-item/style.css +0 -7
  224. package/build-style/accordion-panel/style-rtl.css +1 -4
  225. package/build-style/accordion-panel/style.css +1 -4
  226. package/build-style/classic-rtl.css +24 -0
  227. package/build-style/classic.css +24 -0
  228. package/build-style/common-rtl.css +4 -4
  229. package/build-style/common.css +4 -0
  230. package/build-style/cover/style-rtl.css +47 -0
  231. package/build-style/cover/style.css +47 -0
  232. package/build-style/editor-rtl.css +11 -13
  233. package/build-style/editor.css +11 -13
  234. package/build-style/html/editor-rtl.css +11 -13
  235. package/build-style/html/editor.css +11 -13
  236. package/build-style/style-rtl.css +59 -33
  237. package/build-style/style.css +59 -29
  238. package/build-style/verse/style-rtl.css +2 -0
  239. package/build-style/verse/style.css +2 -0
  240. package/package.json +40 -38
  241. package/src/accordion/style.scss +4 -0
  242. package/src/accordion/view.js +60 -3
  243. package/src/accordion-heading/block.json +1 -1
  244. package/src/accordion-heading/deprecated.js +1 -1
  245. package/src/accordion-heading/style.scss +2 -38
  246. package/src/accordion-item/index.php +1 -0
  247. package/src/accordion-item/style.scss +2 -9
  248. package/src/accordion-panel/block.json +1 -1
  249. package/src/accordion-panel/style.scss +1 -5
  250. package/src/audio/index.js +14 -10
  251. package/src/avatar/edit.js +68 -83
  252. package/src/breadcrumbs/block.json +3 -2
  253. package/src/breadcrumbs/edit.js +18 -18
  254. package/src/breadcrumbs/index.php +103 -93
  255. package/src/button/index.js +15 -11
  256. package/src/classic.scss +38 -0
  257. package/src/code/index.js +11 -7
  258. package/src/comments-pagination-numbers/block.json +7 -0
  259. package/src/common.scss +4 -0
  260. package/src/cover/edit/block-controls.js +26 -2
  261. package/src/cover/edit/cover-placeholder.js +0 -1
  262. package/src/cover/edit/embed-video-url-input.js +74 -0
  263. package/src/cover/edit/index.js +81 -0
  264. package/src/cover/embed-video-utils.js +196 -0
  265. package/src/cover/index.js +12 -5
  266. package/src/cover/index.php +106 -0
  267. package/src/cover/save.js +14 -0
  268. package/src/cover/shared.js +1 -0
  269. package/src/cover/style.scss +47 -0
  270. package/src/details/index.js +11 -7
  271. package/src/file/index.js +16 -15
  272. package/src/freeform/block.json +1 -1
  273. package/src/gallery/edit.js +4 -3
  274. package/src/gallery/transforms.js +6 -2
  275. package/src/heading/index.js +11 -7
  276. package/src/html/editor.scss +10 -15
  277. package/src/html/modal.js +54 -30
  278. package/src/image/edit.js +0 -1
  279. package/src/image/image.js +0 -1
  280. package/src/image/index.js +20 -19
  281. package/src/image/index.php +1 -0
  282. package/src/index.js +9 -3
  283. package/src/list-item/index.js +10 -7
  284. package/src/math/block.json +28 -1
  285. package/src/math/edit.js +18 -3
  286. package/src/media-text/index.js +17 -9
  287. package/src/media-text/media-container.js +0 -2
  288. package/src/missing/block.json +1 -1
  289. package/src/missing/edit.js +2 -2
  290. package/src/more/index.js +11 -7
  291. package/src/navigation-link/edit.js +72 -26
  292. package/src/navigation-link/index.js +13 -9
  293. package/src/navigation-submenu/index.js +13 -9
  294. package/src/page-list/index.php +3 -4
  295. package/src/page-list-item/edit.js +4 -3
  296. package/src/paragraph/deprecated-attributes.js +45 -0
  297. package/src/paragraph/edit.js +2 -0
  298. package/src/paragraph/index.js +11 -7
  299. package/src/pattern/block.json +1 -1
  300. package/src/post-title/edit.js +8 -4
  301. package/src/post-title/index.php +1 -1
  302. package/src/preformatted/index.js +11 -7
  303. package/src/pullquote/index.js +13 -12
  304. package/src/search/index.js +15 -16
  305. package/src/social-link/index.js +13 -9
  306. package/src/style.scss +1 -0
  307. package/src/template-part/edit/index.js +44 -6
  308. package/src/template-part/edit/utils/get-template-part-icon.js +23 -4
  309. package/src/template-part/edit/utils/hooks.js +2 -4
  310. package/src/term-count/index.js +1 -0
  311. package/src/term-name/index.js +1 -0
  312. package/src/verse/index.js +11 -7
  313. package/src/verse/style.scss +4 -0
  314. package/src/video/index.js +14 -10
  315. package/tsconfig.tsbuildinfo +1 -1
@@ -16,11 +16,11 @@
16
16
  "type": "string",
17
17
  "default": "/"
18
18
  },
19
- "showHomeLink": {
19
+ "showHomeItem": {
20
20
  "type": "boolean",
21
21
  "default": true
22
22
  },
23
- "showLastItem": {
23
+ "showCurrentItem": {
24
24
  "type": "boolean",
25
25
  "default": true
26
26
  },
@@ -32,6 +32,7 @@
32
32
  "usesContext": [ "postId", "postType", "templateSlug" ],
33
33
  "supports": {
34
34
  "html": false,
35
+ "align": [ "wide", "full" ],
35
36
  "spacing": {
36
37
  "margin": true,
37
38
  "padding": true
@@ -23,8 +23,8 @@ function BreadcrumbEdit({
23
23
  }) {
24
24
  const {
25
25
  separator,
26
- showHomeLink,
27
- showLastItem,
26
+ showHomeItem,
27
+ showCurrentItem,
28
28
  prefersTaxonomy,
29
29
  showOnHomePage
30
30
  } = attributes;
@@ -97,7 +97,7 @@ function BreadcrumbEdit({
97
97
  templateSlug && !postType || !_showTerms && !isPostTypeHierarchical || _showTerms && !hasTermsAssigned;
98
98
  if (showPlaceholder) {
99
99
  const placeholderItems = [];
100
- if (showHomeLink) {
100
+ if (showHomeItem) {
101
101
  placeholderItems.push(__("Home"));
102
102
  }
103
103
  if (templateSlug && !postId) {
@@ -116,7 +116,7 @@ function BreadcrumbEdit({
116
116
  inert: "true",
117
117
  children: /* @__PURE__ */ jsxs("ol", { children: [
118
118
  placeholderItems.map((text, index) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("a", { href: `#breadcrumbs-pseudo-link-${index}`, children: text }) }, index)),
119
- showLastItem && /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("span", { "aria-current": "page", children: __("Current") }) })
119
+ showCurrentItem && /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("span", { "aria-current": "page", children: __("Current") }) })
120
120
  ] })
121
121
  }
122
122
  );
@@ -129,8 +129,8 @@ function BreadcrumbEdit({
129
129
  resetAll: () => {
130
130
  setAttributes({
131
131
  separator: separatorDefaultValue,
132
- showHomeLink: true,
133
- showLastItem: true
132
+ showHomeItem: true,
133
+ showCurrentItem: true
134
134
  });
135
135
  },
136
136
  dropdownMenuProps,
@@ -138,19 +138,19 @@ function BreadcrumbEdit({
138
138
  /* @__PURE__ */ jsx(
139
139
  ToolsPanelItem,
140
140
  {
141
- label: __("Show home link"),
141
+ label: __("Show home breadcrumb"),
142
142
  isShownByDefault: true,
143
- hasValue: () => !showHomeLink,
143
+ hasValue: () => !showHomeItem,
144
144
  onDeselect: () => setAttributes({
145
- showHomeLink: true
145
+ showHomeItem: true
146
146
  }),
147
147
  children: /* @__PURE__ */ jsx(
148
148
  ToggleControl,
149
149
  {
150
150
  __nextHasNoMarginBottom: true,
151
- label: __("Show home link"),
152
- onChange: (value) => setAttributes({ showHomeLink: value }),
153
- checked: showHomeLink
151
+ label: __("Show home breadcrumb"),
152
+ onChange: (value) => setAttributes({ showHomeItem: value }),
153
+ checked: showHomeItem
154
154
  }
155
155
  )
156
156
  }
@@ -158,19 +158,19 @@ function BreadcrumbEdit({
158
158
  /* @__PURE__ */ jsx(
159
159
  ToolsPanelItem,
160
160
  {
161
- label: __("Show last item"),
161
+ label: __("Show current breadcrumb"),
162
162
  isShownByDefault: true,
163
- hasValue: () => !showLastItem,
163
+ hasValue: () => !showCurrentItem,
164
164
  onDeselect: () => setAttributes({
165
- showLastItem: true
165
+ showCurrentItem: true
166
166
  }),
167
167
  children: /* @__PURE__ */ jsx(
168
168
  ToggleControl,
169
169
  {
170
170
  __nextHasNoMarginBottom: true,
171
- label: __("Show last item"),
172
- onChange: (value) => setAttributes({ showLastItem: value }),
173
- checked: showLastItem
171
+ label: __("Show current breadcrumb"),
172
+ onChange: (value) => setAttributes({ showCurrentItem: value }),
173
+ checked: showCurrentItem
174
174
  }
175
175
  )
176
176
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/breadcrumbs/edit.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\nimport {\n\tToggleControl,\n\tTextControl,\n\tCheckboxControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tSpinner,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useEffect, useState, RawHTML } from '@wordpress/element';\nimport { useServerSideRender } from '@wordpress/server-side-render';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst separatorDefaultValue = '/';\n\nexport default function BreadcrumbEdit( {\n\tattributes,\n\tsetAttributes,\n\tcontext: { postId, postType, templateSlug },\n} ) {\n\tconst {\n\t\tseparator,\n\t\tshowHomeLink,\n\t\tshowLastItem,\n\t\tprefersTaxonomy,\n\t\tshowOnHomePage,\n\t} = attributes;\n\tconst {\n\t\tpost,\n\t\tisPostTypeHierarchical,\n\t\tpostTypeHasTaxonomies,\n\t\thasTermsAssigned,\n\t\tisLoading,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! postType ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst _post = select( coreStore ).getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t\tconst postTypeObject = select( coreStore ).getPostType( postType );\n\t\t\tconst _postTypeHasTaxonomies =\n\t\t\t\tpostTypeObject && postTypeObject.taxonomies.length;\n\t\t\tlet taxonomies;\n\t\t\tif ( _postTypeHasTaxonomies ) {\n\t\t\t\ttaxonomies = select( coreStore ).getTaxonomies( {\n\t\t\t\t\ttype: postType,\n\t\t\t\t\tper_page: -1,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpost: _post,\n\t\t\t\tisPostTypeHierarchical: postTypeObject?.hierarchical,\n\t\t\t\tpostTypeHasTaxonomies: _postTypeHasTaxonomies,\n\t\t\t\thasTermsAssigned:\n\t\t\t\t\t_post &&\n\t\t\t\t\t( taxonomies || [] )\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t( { visibility } ) => visibility?.publicly_queryable\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.some( ( taxonomy ) => {\n\t\t\t\t\t\t\treturn !! _post[ taxonomy.rest_base ]?.length;\n\t\t\t\t\t\t} ),\n\t\t\t\tisLoading:\n\t\t\t\t\t( postId && ! _post ) ||\n\t\t\t\t\t! postTypeObject ||\n\t\t\t\t\t( _postTypeHasTaxonomies && ! taxonomies ),\n\t\t\t};\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\t/**\n\t * Counter used to cache-bust `useServerSideRender`.\n\t *\n\t * This is a catch-all signal to re-render the block when a post's title,\n\t * parent ID, or terms change.\n\t *\n\t * This is fundamentally imperfect, because there are other entities which\n\t * could change in the meantime (the titles of ancestor posts, or the\n\t * labels of taxonomy terms), hence the choice to re-render systematically\n\t * upon saving.\n\t */\n\tconst [ invalidationKey, setInvalidationKey ] = useState( 0 );\n\tuseEffect( () => {\n\t\tsetInvalidationKey( ( c ) => c + 1 );\n\t}, [ post ] );\n\n\tconst blockProps = useBlockProps();\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst { content } = useServerSideRender( {\n\t\tattributes,\n\t\tskipBlockSupportAttributes: true,\n\t\tblock: 'core/breadcrumbs',\n\t\turlQueryArgs: { post_id: postId, invalidationKey },\n\t} );\n\n\tif ( isLoading ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Spinner />\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Try to determine breadcrumb type for more accurate previews.\n\tlet _showTerms;\n\t// Some non-hierarchical post types (e.g., attachments) can have parents.\n\t// Use hierarchical breadcrumbs if a parent exists, otherwise use taxonomy breadcrumbs.\n\tif ( ! isPostTypeHierarchical && ! post?.parent ) {\n\t\t_showTerms = true;\n\t} else if ( ! postTypeHasTaxonomies ) {\n\t\t// Hierarchical post type without taxonomies can only use ancestors.\n\t\t_showTerms = false;\n\t} else {\n\t\t// For hierarchical post types with taxonomies, use the attribute.\n\t\t_showTerms = prefersTaxonomy;\n\t}\n\tlet placeholder = null;\n\t// This is fragile because this block is server side rendered and we'll have to\n\t// update the placeholder html if the server side rendering output changes.\n\tconst showPlaceholder =\n\t\t! postId ||\n\t\t! postType ||\n\t\t// When `templateSlug` is set only show placeholder if the post type is not.\n\t\t// This is needed because when we are showing the template in post editor we\n\t\t// want to show the real breadcrumbs if we have the post type.\n\t\t( templateSlug && ! postType ) ||\n\t\t( ! _showTerms && ! isPostTypeHierarchical ) ||\n\t\t( _showTerms && ! hasTermsAssigned );\n\tif ( showPlaceholder ) {\n\t\tconst placeholderItems = [];\n\t\tif ( showHomeLink ) {\n\t\t\tplaceholderItems.push( __( 'Home' ) );\n\t\t}\n\t\tif ( templateSlug && ! postId ) {\n\t\t\tplaceholderItems.push( __( 'Page' ) );\n\t\t} else if ( _showTerms ) {\n\t\t\tplaceholderItems.push( __( 'Category' ) );\n\t\t} else {\n\t\t\tplaceholderItems.push( __( 'Ancestor' ), __( 'Parent' ) );\n\t\t}\n\t\tplaceholder = (\n\t\t\t<nav\n\t\t\t\tstyle={ {\n\t\t\t\t\t'--separator': `'${ separator }'`,\n\t\t\t\t} }\n\t\t\t\tinert=\"true\"\n\t\t\t>\n\t\t\t\t<ol>\n\t\t\t\t\t{ placeholderItems.map( ( text, index ) => (\n\t\t\t\t\t\t<li key={ index }>\n\t\t\t\t\t\t\t<a href={ `#breadcrumbs-pseudo-link-${ index }` }>\n\t\t\t\t\t\t\t\t{ text }\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t) ) }\n\t\t\t\t\t{ showLastItem && (\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<span aria-current=\"page\">{ __( 'Current' ) }</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t) }\n\t\t\t\t</ol>\n\t\t\t</nav>\n\t\t);\n\t}\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\tseparator: separatorDefaultValue,\n\t\t\t\t\t\t\tshowHomeLink: true,\n\t\t\t\t\t\t\tshowLastItem: true,\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\tlabel={ __( 'Show home link' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => ! showHomeLink }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowHomeLink: true,\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\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Show home link' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { showHomeLink: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ showHomeLink }\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\tlabel={ __( 'Show last item' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => ! showLastItem }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowLastItem: true,\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\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Show last item' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { showLastItem: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ showLastItem }\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\tlabel={ __( 'Separator' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => separator !== separatorDefaultValue }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tseparator: separatorDefaultValue,\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\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\tlabel={ __( 'Separator' ) }\n\t\t\t\t\t\t\tvalue={ separator }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { separator: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonBlur={ () => {\n\t\t\t\t\t\t\t\tif ( ! separator ) {\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tseparator: separatorDefaultValue,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<CheckboxControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Show on homepage' ) }\n\t\t\t\t\tchecked={ showOnHomePage }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { showOnHomePage: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'If this breadcrumbs block appears in a template or template part that\u2019s shown on the homepage, enable this option to display the breadcrumb trail. Otherwise, this setting has no effect.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<CheckboxControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Prefer taxonomy terms' ) }\n\t\t\t\t\tchecked={ prefersTaxonomy }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { prefersTaxonomy: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'The exact type of breadcrumbs shown will vary automatically depending on the page in which this block is displayed. In the specific case of a hierarchical post type with taxonomies, the breadcrumbs can either reflect its post hierarchy (default) or the hierarchy of its assigned taxonomy terms.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ showPlaceholder ? (\n\t\t\t\t\tplaceholder\n\t\t\t\t) : (\n\t\t\t\t\t<RawHTML inert=\"true\">{ content }</RawHTML>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\nimport {\n\tToggleControl,\n\tTextControl,\n\tCheckboxControl,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tSpinner,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useEffect, useState, RawHTML } from '@wordpress/element';\nimport { useServerSideRender } from '@wordpress/server-side-render';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst separatorDefaultValue = '/';\n\nexport default function BreadcrumbEdit( {\n\tattributes,\n\tsetAttributes,\n\tcontext: { postId, postType, templateSlug },\n} ) {\n\tconst {\n\t\tseparator,\n\t\tshowHomeItem,\n\t\tshowCurrentItem,\n\t\tprefersTaxonomy,\n\t\tshowOnHomePage,\n\t} = attributes;\n\tconst {\n\t\tpost,\n\t\tisPostTypeHierarchical,\n\t\tpostTypeHasTaxonomies,\n\t\thasTermsAssigned,\n\t\tisLoading,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! postType ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst _post = select( coreStore ).getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t\tconst postTypeObject = select( coreStore ).getPostType( postType );\n\t\t\tconst _postTypeHasTaxonomies =\n\t\t\t\tpostTypeObject && postTypeObject.taxonomies.length;\n\t\t\tlet taxonomies;\n\t\t\tif ( _postTypeHasTaxonomies ) {\n\t\t\t\ttaxonomies = select( coreStore ).getTaxonomies( {\n\t\t\t\t\ttype: postType,\n\t\t\t\t\tper_page: -1,\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpost: _post,\n\t\t\t\tisPostTypeHierarchical: postTypeObject?.hierarchical,\n\t\t\t\tpostTypeHasTaxonomies: _postTypeHasTaxonomies,\n\t\t\t\thasTermsAssigned:\n\t\t\t\t\t_post &&\n\t\t\t\t\t( taxonomies || [] )\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t( { visibility } ) => visibility?.publicly_queryable\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.some( ( taxonomy ) => {\n\t\t\t\t\t\t\treturn !! _post[ taxonomy.rest_base ]?.length;\n\t\t\t\t\t\t} ),\n\t\t\t\tisLoading:\n\t\t\t\t\t( postId && ! _post ) ||\n\t\t\t\t\t! postTypeObject ||\n\t\t\t\t\t( _postTypeHasTaxonomies && ! taxonomies ),\n\t\t\t};\n\t\t},\n\t\t[ postType, postId ]\n\t);\n\n\t/**\n\t * Counter used to cache-bust `useServerSideRender`.\n\t *\n\t * This is a catch-all signal to re-render the block when a post's title,\n\t * parent ID, or terms change.\n\t *\n\t * This is fundamentally imperfect, because there are other entities which\n\t * could change in the meantime (the titles of ancestor posts, or the\n\t * labels of taxonomy terms), hence the choice to re-render systematically\n\t * upon saving.\n\t */\n\tconst [ invalidationKey, setInvalidationKey ] = useState( 0 );\n\tuseEffect( () => {\n\t\tsetInvalidationKey( ( c ) => c + 1 );\n\t}, [ post ] );\n\n\tconst blockProps = useBlockProps();\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst { content } = useServerSideRender( {\n\t\tattributes,\n\t\tskipBlockSupportAttributes: true,\n\t\tblock: 'core/breadcrumbs',\n\t\turlQueryArgs: { post_id: postId, invalidationKey },\n\t} );\n\n\tif ( isLoading ) {\n\t\treturn (\n\t\t\t<div { ...blockProps }>\n\t\t\t\t<Spinner />\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Try to determine breadcrumb type for more accurate previews.\n\tlet _showTerms;\n\t// Some non-hierarchical post types (e.g., attachments) can have parents.\n\t// Use hierarchical breadcrumbs if a parent exists, otherwise use taxonomy breadcrumbs.\n\tif ( ! isPostTypeHierarchical && ! post?.parent ) {\n\t\t_showTerms = true;\n\t} else if ( ! postTypeHasTaxonomies ) {\n\t\t// Hierarchical post type without taxonomies can only use ancestors.\n\t\t_showTerms = false;\n\t} else {\n\t\t// For hierarchical post types with taxonomies, use the attribute.\n\t\t_showTerms = prefersTaxonomy;\n\t}\n\tlet placeholder = null;\n\t// This is fragile because this block is server side rendered and we'll have to\n\t// update the placeholder html if the server side rendering output changes.\n\tconst showPlaceholder =\n\t\t! postId ||\n\t\t! postType ||\n\t\t// When `templateSlug` is set only show placeholder if the post type is not.\n\t\t// This is needed because when we are showing the template in post editor we\n\t\t// want to show the real breadcrumbs if we have the post type.\n\t\t( templateSlug && ! postType ) ||\n\t\t( ! _showTerms && ! isPostTypeHierarchical ) ||\n\t\t( _showTerms && ! hasTermsAssigned );\n\tif ( showPlaceholder ) {\n\t\tconst placeholderItems = [];\n\t\tif ( showHomeItem ) {\n\t\t\tplaceholderItems.push( __( 'Home' ) );\n\t\t}\n\t\tif ( templateSlug && ! postId ) {\n\t\t\tplaceholderItems.push( __( 'Page' ) );\n\t\t} else if ( _showTerms ) {\n\t\t\tplaceholderItems.push( __( 'Category' ) );\n\t\t} else {\n\t\t\tplaceholderItems.push( __( 'Ancestor' ), __( 'Parent' ) );\n\t\t}\n\t\tplaceholder = (\n\t\t\t<nav\n\t\t\t\tstyle={ {\n\t\t\t\t\t'--separator': `'${ separator }'`,\n\t\t\t\t} }\n\t\t\t\tinert=\"true\"\n\t\t\t>\n\t\t\t\t<ol>\n\t\t\t\t\t{ placeholderItems.map( ( text, index ) => (\n\t\t\t\t\t\t<li key={ index }>\n\t\t\t\t\t\t\t<a href={ `#breadcrumbs-pseudo-link-${ index }` }>\n\t\t\t\t\t\t\t\t{ text }\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t) ) }\n\t\t\t\t\t{ showCurrentItem && (\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<span aria-current=\"page\">{ __( 'Current' ) }</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t) }\n\t\t\t\t</ol>\n\t\t\t</nav>\n\t\t);\n\t}\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\tseparator: separatorDefaultValue,\n\t\t\t\t\t\t\tshowHomeItem: true,\n\t\t\t\t\t\t\tshowCurrentItem: true,\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\tlabel={ __( 'Show home breadcrumb' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => ! showHomeItem }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowHomeItem: true,\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\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Show home breadcrumb' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { showHomeItem: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ showHomeItem }\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\tlabel={ __( 'Show current breadcrumb' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => ! showCurrentItem }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tshowCurrentItem: true,\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\t<ToggleControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Show current breadcrumb' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { showCurrentItem: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tchecked={ showCurrentItem }\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\tlabel={ __( 'Separator' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => separator !== separatorDefaultValue }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tseparator: separatorDefaultValue,\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\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\tlabel={ __( 'Separator' ) }\n\t\t\t\t\t\t\tvalue={ separator }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { separator: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonBlur={ () => {\n\t\t\t\t\t\t\t\tif ( ! separator ) {\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tseparator: separatorDefaultValue,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t<CheckboxControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Show on homepage' ) }\n\t\t\t\t\tchecked={ showOnHomePage }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { showOnHomePage: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'If this breadcrumbs block appears in a template or template part that\u2019s shown on the homepage, enable this option to display the breadcrumb trail. Otherwise, this setting has no effect.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<CheckboxControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Prefer taxonomy terms' ) }\n\t\t\t\t\tchecked={ prefersTaxonomy }\n\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\tsetAttributes( { prefersTaxonomy: value } )\n\t\t\t\t\t}\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'The exact type of breadcrumbs shown will vary automatically depending on the page in which this block is displayed. In the specific case of a hierarchical post type with taxonomies, the breadcrumbs can either reflect its post hierarchy (default) or the hierarchy of its assigned taxonomy terms.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...blockProps }>\n\t\t\t\t{ showPlaceholder ? (\n\t\t\t\t\tplaceholder\n\t\t\t\t) : (\n\t\t\t\t\t<RawHTML inert=\"true\">{ content }</RawHTML>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,11 +1,14 @@
1
1
  // packages/block-library/src/button/index.js
2
2
  import { __ } from "@wordpress/i18n";
3
3
  import { button as icon } from "@wordpress/icons";
4
+ import { privateApis as blocksPrivateApis } from "@wordpress/blocks";
4
5
  import initBlock from "../utils/init-block";
5
6
  import deprecated from "./deprecated";
6
7
  import edit from "./edit";
7
8
  import metadata from "./block.json";
8
9
  import save from "./save";
10
+ import { unlock } from "../lock-unlock";
11
+ var { fieldsKey, formKey } = unlock(blocksPrivateApis);
9
12
  var { name } = metadata;
10
13
  var settings = {
11
14
  icon,
@@ -23,27 +26,27 @@ var settings = {
23
26
  text: (a.text || "") + text
24
27
  })
25
28
  };
26
- if (window.__experimentalContentOnlyPatternInsertion) {
27
- settings.fields = [
29
+ if (window.__experimentalContentOnlyInspectorFields) {
30
+ settings[fieldsKey] = [
28
31
  {
32
+ id: "text",
29
33
  label: __("Content"),
30
- type: "RichText",
31
- shownByDefault: true,
32
- mapping: {
33
- value: "text"
34
- }
34
+ type: "richtext"
35
35
  },
36
36
  {
37
+ id: "link",
37
38
  label: __("Link"),
38
- type: "Link",
39
- shownByDefault: false,
39
+ type: "link",
40
40
  mapping: {
41
- href: "url",
41
+ url: "url",
42
42
  rel: "rel",
43
- target: "linkTarget"
43
+ linkTarget: "linkTarget"
44
44
  }
45
45
  }
46
46
  ];
47
+ settings[formKey] = {
48
+ fields: ["text"]
49
+ };
47
50
  }
48
51
  var init = () => initBlock({ name, metadata, settings });
49
52
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/button/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { button as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tclassName: 'is-style-fill',\n\t\t\ttext: __( 'Call to action' ),\n\t\t},\n\t},\n\tedit,\n\tsave,\n\tdeprecated,\n\tmerge: ( a, { text = '' } ) => ( {\n\t\t...a,\n\t\ttext: ( a.text || '' ) + text,\n\t} ),\n};\n\nif ( window.__experimentalContentOnlyPatternInsertion ) {\n\tsettings.fields = [\n\t\t{\n\t\t\tlabel: __( 'Content' ),\n\t\t\ttype: 'RichText',\n\t\t\tshownByDefault: true,\n\t\t\tmapping: {\n\t\t\t\tvalue: 'text',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Link' ),\n\t\t\ttype: 'Link',\n\t\t\tshownByDefault: false,\n\t\t\tmapping: {\n\t\t\t\thref: 'url',\n\t\t\t\trel: 'rel',\n\t\t\t\ttarget: 'linkTarget',\n\t\t\t},\n\t\t},\n\t];\n}\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
5
- "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,UAAU,YAAY;AAK/B,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,UAAU;AAEjB,IAAM,EAAE,KAAK,IAAI;AAIV,IAAM,WAAW;AAAA,EACvB;AAAA,EACA,SAAS;AAAA,IACR,YAAY;AAAA,MACX,WAAW;AAAA,MACX,MAAM,GAAI,gBAAiB;AAAA,IAC5B;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO,CAAE,GAAG,EAAE,OAAO,GAAG,OAAS;AAAA,IAChC,GAAG;AAAA,IACH,OAAQ,EAAE,QAAQ,MAAO;AAAA,EAC1B;AACD;AAEA,IAAK,OAAO,2CAA4C;AACvD,WAAS,SAAS;AAAA,IACjB;AAAA,MACC,OAAO,GAAI,SAAU;AAAA,MACrB,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,SAAS;AAAA,QACR,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IACA;AAAA,MACC,OAAO,GAAI,MAAO;AAAA,MAClB,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,SAAS;AAAA,QACR,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACD;AAEO,IAAM,OAAO,MAAM,UAAW,EAAE,MAAM,UAAU,SAAS,CAAE;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { button as icon } from '@wordpress/icons';\nimport { privateApis as blocksPrivateApis } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport { unlock } from '../lock-unlock';\n\nconst { fieldsKey, formKey } = unlock( blocksPrivateApis );\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tclassName: 'is-style-fill',\n\t\t\ttext: __( 'Call to action' ),\n\t\t},\n\t},\n\tedit,\n\tsave,\n\tdeprecated,\n\tmerge: ( a, { text = '' } ) => ( {\n\t\t...a,\n\t\ttext: ( a.text || '' ) + text,\n\t} ),\n};\n\nif ( window.__experimentalContentOnlyInspectorFields ) {\n\tsettings[ fieldsKey ] = [\n\t\t{\n\t\t\tid: 'text',\n\t\t\tlabel: __( 'Content' ),\n\t\t\ttype: 'richtext',\n\t\t},\n\t\t{\n\t\t\tid: 'link',\n\t\t\tlabel: __( 'Link' ),\n\t\t\ttype: 'link',\n\t\t\tmapping: {\n\t\t\t\turl: 'url',\n\t\t\t\trel: 'rel',\n\t\t\t\tlinkTarget: 'linkTarget',\n\t\t\t},\n\t\t},\n\t];\n\tsettings[ formKey ] = {\n\t\tfields: [ 'text' ],\n\t};\n}\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
5
+ "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,UAAU,YAAY;AAC/B,SAAS,eAAe,yBAAyB;AAKjD,OAAO,eAAe;AACtB,OAAO,gBAAgB;AACvB,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,UAAU;AACjB,SAAS,cAAc;AAEvB,IAAM,EAAE,WAAW,QAAQ,IAAI,OAAQ,iBAAkB;AAEzD,IAAM,EAAE,KAAK,IAAI;AAIV,IAAM,WAAW;AAAA,EACvB;AAAA,EACA,SAAS;AAAA,IACR,YAAY;AAAA,MACX,WAAW;AAAA,MACX,MAAM,GAAI,gBAAiB;AAAA,IAC5B;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO,CAAE,GAAG,EAAE,OAAO,GAAG,OAAS;AAAA,IAChC,GAAG;AAAA,IACH,OAAQ,EAAE,QAAQ,MAAO;AAAA,EAC1B;AACD;AAEA,IAAK,OAAO,0CAA2C;AACtD,WAAU,SAAU,IAAI;AAAA,IACvB;AAAA,MACC,IAAI;AAAA,MACJ,OAAO,GAAI,SAAU;AAAA,MACrB,MAAM;AAAA,IACP;AAAA,IACA;AAAA,MACC,IAAI;AAAA,MACJ,OAAO,GAAI,MAAO;AAAA,MAClB,MAAM;AAAA,MACN,SAAS;AAAA,QACR,KAAK;AAAA,QACL,KAAK;AAAA,QACL,YAAY;AAAA,MACb;AAAA,IACD;AAAA,EACD;AACA,WAAU,OAAQ,IAAI;AAAA,IACrB,QAAQ,CAAE,MAAO;AAAA,EAClB;AACD;AAEO,IAAM,OAAO,MAAM,UAAW,EAAE,MAAM,UAAU,SAAS,CAAE;",
6
6
  "names": []
7
7
  }
@@ -1,11 +1,14 @@
1
1
  // packages/block-library/src/code/index.js
2
2
  import { __ } from "@wordpress/i18n";
3
3
  import { code as icon } from "@wordpress/icons";
4
+ import { privateApis as blocksPrivateApis } from "@wordpress/blocks";
4
5
  import initBlock from "../utils/init-block";
5
6
  import edit from "./edit";
6
7
  import metadata from "./block.json";
7
8
  import save from "./save";
8
9
  import transforms from "./transforms";
10
+ import { unlock } from "../lock-unlock";
11
+ var { fieldsKey, formKey } = unlock(blocksPrivateApis);
9
12
  var { name } = metadata;
10
13
  var settings = {
11
14
  icon,
@@ -28,17 +31,17 @@ var settings = {
28
31
  edit,
29
32
  save
30
33
  };
31
- if (window.__experimentalContentOnlyPatternInsertion) {
32
- settings.fields = [
34
+ if (window.__experimentalContentOnlyInspectorFields) {
35
+ settings[fieldsKey] = [
33
36
  {
37
+ id: "content",
34
38
  label: __("Code"),
35
- type: "RichText",
36
- shownByDefault: true,
37
- mapping: {
38
- value: "content"
39
- }
39
+ type: "richtext"
40
40
  }
41
41
  ];
42
+ settings[formKey] = {
43
+ fields: ["content"]
44
+ };
42
45
  }
43
46
  var init = () => initBlock({ name, metadata, settings });
44
47
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/code/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { code as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\t/* eslint-disable @wordpress/i18n-no-collapsible-whitespace */\n\t\t\t// translators: Preserve \\n markers for line breaks\n\t\t\tcontent: __(\n\t\t\t\t'// A \u201Cblock\u201D is the abstract term used\\n// to describe units of markup that\\n// when composed together, form the\\n// content or layout of a page.\\nregisterBlockType( name, settings );'\n\t\t\t),\n\t\t\t/* eslint-enable @wordpress/i18n-no-collapsible-whitespace */\n\t\t},\n\t},\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\tcontent: attributes.content + '\\n\\n' + attributesToMerge.content,\n\t\t};\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n};\n\nif ( window.__experimentalContentOnlyPatternInsertion ) {\n\tsettings.fields = [\n\t\t{\n\t\t\tlabel: __( 'Code' ),\n\t\t\ttype: 'RichText',\n\t\t\tshownByDefault: true,\n\t\t\tmapping: {\n\t\t\t\tvalue: 'content',\n\t\t\t},\n\t\t},\n\t];\n}\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
5
- "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,QAAQ,YAAY;AAK7B,OAAO,eAAe;AACtB,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AAEvB,IAAM,EAAE,KAAK,IAAI;AAIV,IAAM,WAAW;AAAA,EACvB;AAAA,EACA,SAAS;AAAA,IACR,YAAY;AAAA;AAAA;AAAA,MAGX,SAAS;AAAA,QACR;AAAA,MACD;AAAA;AAAA,IAED;AAAA,EACD;AAAA,EACA,MAAO,YAAY,mBAAoB;AACtC,WAAO;AAAA,MACN,SAAS,WAAW,UAAU,SAAS,kBAAkB;AAAA,IAC1D;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAK,OAAO,2CAA4C;AACvD,WAAS,SAAS;AAAA,IACjB;AAAA,MACC,OAAO,GAAI,MAAO;AAAA,MAClB,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,SAAS;AAAA,QACR,OAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD;AACD;AAEO,IAAM,OAAO,MAAM,UAAW,EAAE,MAAM,UAAU,SAAS,CAAE;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { code as icon } from '@wordpress/icons';\nimport { privateApis as blocksPrivateApis } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\nimport { unlock } from '../lock-unlock';\n\nconst { fieldsKey, formKey } = unlock( blocksPrivateApis );\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\t/* eslint-disable @wordpress/i18n-no-collapsible-whitespace */\n\t\t\t// translators: Preserve \\n markers for line breaks\n\t\t\tcontent: __(\n\t\t\t\t'// A \u201Cblock\u201D is the abstract term used\\n// to describe units of markup that\\n// when composed together, form the\\n// content or layout of a page.\\nregisterBlockType( name, settings );'\n\t\t\t),\n\t\t\t/* eslint-enable @wordpress/i18n-no-collapsible-whitespace */\n\t\t},\n\t},\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\tcontent: attributes.content + '\\n\\n' + attributesToMerge.content,\n\t\t};\n\t},\n\ttransforms,\n\tedit,\n\tsave,\n};\n\nif ( window.__experimentalContentOnlyInspectorFields ) {\n\tsettings[ fieldsKey ] = [\n\t\t{\n\t\t\tid: 'content',\n\t\t\tlabel: __( 'Code' ),\n\t\t\ttype: 'richtext',\n\t\t},\n\t];\n\tsettings[ formKey ] = {\n\t\tfields: [ 'content' ],\n\t};\n}\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],
5
+ "mappings": ";AAGA,SAAS,UAAU;AACnB,SAAS,QAAQ,YAAY;AAC7B,SAAS,eAAe,yBAAyB;AAKjD,OAAO,eAAe;AACtB,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,SAAS,cAAc;AAEvB,IAAM,EAAE,WAAW,QAAQ,IAAI,OAAQ,iBAAkB;AAEzD,IAAM,EAAE,KAAK,IAAI;AAIV,IAAM,WAAW;AAAA,EACvB;AAAA,EACA,SAAS;AAAA,IACR,YAAY;AAAA;AAAA;AAAA,MAGX,SAAS;AAAA,QACR;AAAA,MACD;AAAA;AAAA,IAED;AAAA,EACD;AAAA,EACA,MAAO,YAAY,mBAAoB;AACtC,WAAO;AAAA,MACN,SAAS,WAAW,UAAU,SAAS,kBAAkB;AAAA,IAC1D;AAAA,EACD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAK,OAAO,0CAA2C;AACtD,WAAU,SAAU,IAAI;AAAA,IACvB;AAAA,MACC,IAAI;AAAA,MACJ,OAAO,GAAI,MAAO;AAAA,MAClB,MAAM;AAAA,IACP;AAAA,EACD;AACA,WAAU,OAAQ,IAAI;AAAA,IACrB,QAAQ,CAAE,SAAU;AAAA,EACrB;AACD;AAEO,IAAM,OAAO,MAAM,UAAW,EAAE,MAAM,UAAU,SAAS,CAAE;",
6
6
  "names": []
7
7
  }
@@ -33,6 +33,13 @@
33
33
  },
34
34
  "interactivity": {
35
35
  "clientNavigation": true
36
+ },
37
+ "spacing": {
38
+ "margin": true,
39
+ "padding": true,
40
+ "__experimentalDefaultControls": {
41
+ "padding": true
42
+ }
36
43
  }
37
44
  }
38
45
  }
@@ -8,8 +8,11 @@ import {
8
8
  privateApis as blockEditorPrivateApis
9
9
  } from "@wordpress/block-editor";
10
10
  import { __ } from "@wordpress/i18n";
11
+ import { MenuItem } from "@wordpress/components";
12
+ import { link } from "@wordpress/icons";
11
13
  import { ALLOWED_MEDIA_TYPES } from "../shared";
12
14
  import { unlock } from "../../lock-unlock";
15
+ import EmbedVideoUrlInput from "./embed-video-url-input";
13
16
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
14
17
  var { cleanEmptyObject } = unlock(blockEditorPrivateApis);
15
18
  function CoverBlockControls({
@@ -19,12 +22,14 @@ function CoverBlockControls({
19
22
  currentSettings,
20
23
  toggleUseFeaturedImage,
21
24
  onClearMedia,
25
+ onSelectEmbedUrl,
22
26
  blockEditingMode
23
27
  }) {
24
28
  const { contentPosition, id, useFeaturedImage, minHeight, minHeightUnit } = attributes;
25
29
  const { hasInnerBlocks, url } = currentSettings;
26
30
  const [prevMinHeightValue, setPrevMinHeightValue] = useState(minHeight);
27
31
  const [prevMinHeightUnit, setPrevMinHeightUnit] = useState(minHeightUnit);
32
+ const [isEmbedUrlInputOpen, setIsEmbedUrlInputOpen] = useState(false);
28
33
  const isMinFullHeight = minHeightUnit === "vh" && minHeight === 100 && !attributes?.style?.dimensions?.aspectRatio;
29
34
  const isContentOnlyMode = blockEditingMode === "contentOnly";
30
35
  const toggleMinFullHeight = () => {
@@ -83,14 +88,33 @@ function CoverBlockControls({
83
88
  mediaId: id,
84
89
  mediaURL: url,
85
90
  allowedTypes: ALLOWED_MEDIA_TYPES,
86
- accept: "image/*,video/*",
87
91
  onSelect: onSelectMedia,
88
92
  onToggleFeaturedImage: toggleUseFeaturedImage,
89
93
  useFeaturedImage,
90
94
  name: !url ? __("Add media") : __("Replace"),
91
- onReset: onClearMedia
95
+ onReset: onClearMedia,
96
+ children: ({ onClose }) => /* @__PURE__ */ jsx(
97
+ MenuItem,
98
+ {
99
+ icon: link,
100
+ onClick: () => {
101
+ setIsEmbedUrlInputOpen(true);
102
+ onClose();
103
+ },
104
+ children: __("Embed video from URL")
105
+ }
106
+ )
92
107
  }
93
- ) })
108
+ ) }),
109
+ isEmbedUrlInputOpen && /* @__PURE__ */ jsx(
110
+ EmbedVideoUrlInput,
111
+ {
112
+ onSubmit: (embedUrl) => {
113
+ onSelectEmbedUrl(embedUrl);
114
+ },
115
+ onClose: () => setIsEmbedUrlInputOpen(false)
116
+ }
117
+ )
94
118
  ] });
95
119
  }
96
120
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cover/edit/block-controls.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\n\nimport {\n\tBlockControls,\n\tMediaReplaceFlow,\n\t__experimentalBlockAlignmentMatrixControl as BlockAlignmentMatrixControl,\n\t__experimentalBlockFullHeightAligmentControl as FullHeightAlignmentControl,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_MEDIA_TYPES } from '../shared';\nimport { unlock } from '../../lock-unlock';\n\nconst { cleanEmptyObject } = unlock( blockEditorPrivateApis );\n\nexport default function CoverBlockControls( {\n\tattributes,\n\tsetAttributes,\n\tonSelectMedia,\n\tcurrentSettings,\n\ttoggleUseFeaturedImage,\n\tonClearMedia,\n\tblockEditingMode,\n} ) {\n\tconst { contentPosition, id, useFeaturedImage, minHeight, minHeightUnit } =\n\t\tattributes;\n\tconst { hasInnerBlocks, url } = currentSettings;\n\n\tconst [ prevMinHeightValue, setPrevMinHeightValue ] = useState( minHeight );\n\tconst [ prevMinHeightUnit, setPrevMinHeightUnit ] =\n\t\tuseState( minHeightUnit );\n\tconst isMinFullHeight =\n\t\tminHeightUnit === 'vh' &&\n\t\tminHeight === 100 &&\n\t\t! attributes?.style?.dimensions?.aspectRatio;\n\tconst isContentOnlyMode = blockEditingMode === 'contentOnly';\n\n\tconst toggleMinFullHeight = () => {\n\t\tif ( isMinFullHeight ) {\n\t\t\t// If there aren't previous values, take the default ones.\n\t\t\tif ( prevMinHeightUnit === 'vh' && prevMinHeightValue === 100 ) {\n\t\t\t\treturn setAttributes( {\n\t\t\t\t\tminHeight: undefined,\n\t\t\t\t\tminHeightUnit: undefined,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Set the previous values of height.\n\t\t\treturn setAttributes( {\n\t\t\t\tminHeight: prevMinHeightValue,\n\t\t\t\tminHeightUnit: prevMinHeightUnit,\n\t\t\t} );\n\t\t}\n\n\t\tsetPrevMinHeightValue( minHeight );\n\t\tsetPrevMinHeightUnit( minHeightUnit );\n\n\t\t// Set full height, and clear any aspect ratio value.\n\t\treturn setAttributes( {\n\t\t\tminHeight: 100,\n\t\t\tminHeightUnit: 'vh',\n\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t...attributes?.style,\n\t\t\t\tdimensions: {\n\t\t\t\t\t...attributes?.style?.dimensions,\n\t\t\t\t\taspectRatio: undefined, // Reset aspect ratio when minHeight is set.\n\t\t\t\t},\n\t\t\t} ),\n\t\t} );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isContentOnlyMode && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<BlockAlignmentMatrixControl\n\t\t\t\t\t\tlabel={ __( 'Change content position' ) }\n\t\t\t\t\t\tvalue={ contentPosition }\n\t\t\t\t\t\tonChange={ ( nextPosition ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tcontentPosition: nextPosition,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisDisabled={ ! hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t\t<FullHeightAlignmentControl\n\t\t\t\t\t\tisActive={ isMinFullHeight }\n\t\t\t\t\t\tonToggle={ toggleMinFullHeight }\n\t\t\t\t\t\tisDisabled={ ! hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\taccept=\"image/*,video/*\"\n\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\tonToggleFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t\tuseFeaturedImage={ useFeaturedImage }\n\t\t\t\t\tname={ ! url ? __( 'Add media' ) : __( 'Replace' ) }\n\t\t\t\t\tonReset={ onClearMedia }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,gBAAgB;AAEzB;AAAA,EACC;AAAA,EACA;AAAA,EACA,6CAA6C;AAAA,EAC7C,gDAAgD;AAAA,EAChD,eAAe;AAAA,OACT;AACP,SAAS,UAAU;AAKnB,SAAS,2BAA2B;AACpC,SAAS,cAAc;AA6DrB,mBAGG,KADD,YAFF;AA3DF,IAAM,EAAE,iBAAiB,IAAI,OAAQ,sBAAuB;AAE7C,SAAR,mBAAqC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,iBAAiB,IAAI,kBAAkB,WAAW,cAAc,IACvE;AACD,QAAM,EAAE,gBAAgB,IAAI,IAAI;AAEhC,QAAM,CAAE,oBAAoB,qBAAsB,IAAI,SAAU,SAAU;AAC1E,QAAM,CAAE,mBAAmB,oBAAqB,IAC/C,SAAU,aAAc;AACzB,QAAM,kBACL,kBAAkB,QAClB,cAAc,OACd,CAAE,YAAY,OAAO,YAAY;AAClC,QAAM,oBAAoB,qBAAqB;AAE/C,QAAM,sBAAsB,MAAM;AACjC,QAAK,iBAAkB;AAEtB,UAAK,sBAAsB,QAAQ,uBAAuB,KAAM;AAC/D,eAAO,cAAe;AAAA,UACrB,WAAW;AAAA,UACX,eAAe;AAAA,QAChB,CAAE;AAAA,MACH;AAGA,aAAO,cAAe;AAAA,QACrB,WAAW;AAAA,QACX,eAAe;AAAA,MAChB,CAAE;AAAA,IACH;AAEA,0BAAuB,SAAU;AACjC,yBAAsB,aAAc;AAGpC,WAAO,cAAe;AAAA,MACrB,WAAW;AAAA,MACX,eAAe;AAAA,MACf,OAAO,iBAAkB;AAAA,QACxB,GAAG,YAAY;AAAA,QACf,YAAY;AAAA,UACX,GAAG,YAAY,OAAO;AAAA,UACtB,aAAa;AAAA;AAAA,QACd;AAAA,MACD,CAAE;AAAA,IACH,CAAE;AAAA,EACH;AAEA,SACC,iCACG;AAAA,KAAE,qBACH,qBAAC,iBAAc,OAAM,SACpB;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,yBAA0B;AAAA,UACtC,OAAQ;AAAA,UACR,UAAW,CAAE,iBACZ,cAAe;AAAA,YACd,iBAAiB;AAAA,UAClB,CAAE;AAAA,UAEH,YAAa,CAAE;AAAA;AAAA,MAChB;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,UAAW;AAAA,UACX,UAAW;AAAA,UACX,YAAa,CAAE;AAAA;AAAA,MAChB;AAAA,OACD;AAAA,IAED,oBAAC,iBAAc,OAAM,SACpB;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,QACV,UAAW;AAAA,QACX,cAAe;AAAA,QACf,QAAO;AAAA,QACP,UAAW;AAAA,QACX,uBAAwB;AAAA,QACxB;AAAA,QACA,MAAO,CAAE,MAAM,GAAI,WAAY,IAAI,GAAI,SAAU;AAAA,QACjD,SAAU;AAAA;AAAA,IACX,GACD;AAAA,KACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\n\nimport {\n\tBlockControls,\n\tMediaReplaceFlow,\n\t__experimentalBlockAlignmentMatrixControl as BlockAlignmentMatrixControl,\n\t__experimentalBlockFullHeightAligmentControl as FullHeightAlignmentControl,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem } from '@wordpress/components';\nimport { link } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_MEDIA_TYPES } from '../shared';\nimport { unlock } from '../../lock-unlock';\nimport EmbedVideoUrlInput from './embed-video-url-input';\n\nconst { cleanEmptyObject } = unlock( blockEditorPrivateApis );\n\nexport default function CoverBlockControls( {\n\tattributes,\n\tsetAttributes,\n\tonSelectMedia,\n\tcurrentSettings,\n\ttoggleUseFeaturedImage,\n\tonClearMedia,\n\tonSelectEmbedUrl,\n\tblockEditingMode,\n} ) {\n\tconst { contentPosition, id, useFeaturedImage, minHeight, minHeightUnit } =\n\t\tattributes;\n\tconst { hasInnerBlocks, url } = currentSettings;\n\n\tconst [ prevMinHeightValue, setPrevMinHeightValue ] = useState( minHeight );\n\tconst [ prevMinHeightUnit, setPrevMinHeightUnit ] =\n\t\tuseState( minHeightUnit );\n\tconst [ isEmbedUrlInputOpen, setIsEmbedUrlInputOpen ] = useState( false );\n\tconst isMinFullHeight =\n\t\tminHeightUnit === 'vh' &&\n\t\tminHeight === 100 &&\n\t\t! attributes?.style?.dimensions?.aspectRatio;\n\tconst isContentOnlyMode = blockEditingMode === 'contentOnly';\n\n\tconst toggleMinFullHeight = () => {\n\t\tif ( isMinFullHeight ) {\n\t\t\t// If there aren't previous values, take the default ones.\n\t\t\tif ( prevMinHeightUnit === 'vh' && prevMinHeightValue === 100 ) {\n\t\t\t\treturn setAttributes( {\n\t\t\t\t\tminHeight: undefined,\n\t\t\t\t\tminHeightUnit: undefined,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Set the previous values of height.\n\t\t\treturn setAttributes( {\n\t\t\t\tminHeight: prevMinHeightValue,\n\t\t\t\tminHeightUnit: prevMinHeightUnit,\n\t\t\t} );\n\t\t}\n\n\t\tsetPrevMinHeightValue( minHeight );\n\t\tsetPrevMinHeightUnit( minHeightUnit );\n\n\t\t// Set full height, and clear any aspect ratio value.\n\t\treturn setAttributes( {\n\t\t\tminHeight: 100,\n\t\t\tminHeightUnit: 'vh',\n\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t...attributes?.style,\n\t\t\t\tdimensions: {\n\t\t\t\t\t...attributes?.style?.dimensions,\n\t\t\t\t\taspectRatio: undefined, // Reset aspect ratio when minHeight is set.\n\t\t\t\t},\n\t\t\t} ),\n\t\t} );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isContentOnlyMode && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<BlockAlignmentMatrixControl\n\t\t\t\t\t\tlabel={ __( 'Change content position' ) }\n\t\t\t\t\t\tvalue={ contentPosition }\n\t\t\t\t\t\tonChange={ ( nextPosition ) =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tcontentPosition: nextPosition,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisDisabled={ ! hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t\t<FullHeightAlignmentControl\n\t\t\t\t\t\tisActive={ isMinFullHeight }\n\t\t\t\t\t\tonToggle={ toggleMinFullHeight }\n\t\t\t\t\t\tisDisabled={ ! hasInnerBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<MediaReplaceFlow\n\t\t\t\t\tmediaId={ id }\n\t\t\t\t\tmediaURL={ url }\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\tonToggleFeaturedImage={ toggleUseFeaturedImage }\n\t\t\t\t\tuseFeaturedImage={ useFeaturedImage }\n\t\t\t\t\tname={ ! url ? __( 'Add media' ) : __( 'Replace' ) }\n\t\t\t\t\tonReset={ onClearMedia }\n\t\t\t\t>\n\t\t\t\t\t{ ( { onClose } ) => (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\ticon={ link }\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tsetIsEmbedUrlInputOpen( true );\n\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Embed video from URL' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t) }\n\t\t\t\t</MediaReplaceFlow>\n\t\t\t</BlockControls>\n\t\t\t{ isEmbedUrlInputOpen && (\n\t\t\t\t<EmbedVideoUrlInput\n\t\t\t\t\tonSubmit={ ( embedUrl ) => {\n\t\t\t\t\t\tonSelectEmbedUrl( embedUrl );\n\t\t\t\t\t} }\n\t\t\t\t\tonClose={ () => setIsEmbedUrlInputOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,gBAAgB;AAEzB;AAAA,EACC;AAAA,EACA;AAAA,EACA,6CAA6C;AAAA,EAC7C,gDAAgD;AAAA,EAChD,eAAe;AAAA,OACT;AACP,SAAS,UAAU;AACnB,SAAS,gBAAgB;AACzB,SAAS,YAAY;AAKrB,SAAS,2BAA2B;AACpC,SAAS,cAAc;AACvB,OAAO,wBAAwB;AA+D7B,mBAGG,KADD,YAFF;AA7DF,IAAM,EAAE,iBAAiB,IAAI,OAAQ,sBAAuB;AAE7C,SAAR,mBAAqC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,iBAAiB,IAAI,kBAAkB,WAAW,cAAc,IACvE;AACD,QAAM,EAAE,gBAAgB,IAAI,IAAI;AAEhC,QAAM,CAAE,oBAAoB,qBAAsB,IAAI,SAAU,SAAU;AAC1E,QAAM,CAAE,mBAAmB,oBAAqB,IAC/C,SAAU,aAAc;AACzB,QAAM,CAAE,qBAAqB,sBAAuB,IAAI,SAAU,KAAM;AACxE,QAAM,kBACL,kBAAkB,QAClB,cAAc,OACd,CAAE,YAAY,OAAO,YAAY;AAClC,QAAM,oBAAoB,qBAAqB;AAE/C,QAAM,sBAAsB,MAAM;AACjC,QAAK,iBAAkB;AAEtB,UAAK,sBAAsB,QAAQ,uBAAuB,KAAM;AAC/D,eAAO,cAAe;AAAA,UACrB,WAAW;AAAA,UACX,eAAe;AAAA,QAChB,CAAE;AAAA,MACH;AAGA,aAAO,cAAe;AAAA,QACrB,WAAW;AAAA,QACX,eAAe;AAAA,MAChB,CAAE;AAAA,IACH;AAEA,0BAAuB,SAAU;AACjC,yBAAsB,aAAc;AAGpC,WAAO,cAAe;AAAA,MACrB,WAAW;AAAA,MACX,eAAe;AAAA,MACf,OAAO,iBAAkB;AAAA,QACxB,GAAG,YAAY;AAAA,QACf,YAAY;AAAA,UACX,GAAG,YAAY,OAAO;AAAA,UACtB,aAAa;AAAA;AAAA,QACd;AAAA,MACD,CAAE;AAAA,IACH,CAAE;AAAA,EACH;AAEA,SACC,iCACG;AAAA,KAAE,qBACH,qBAAC,iBAAc,OAAM,SACpB;AAAA;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,GAAI,yBAA0B;AAAA,UACtC,OAAQ;AAAA,UACR,UAAW,CAAE,iBACZ,cAAe;AAAA,YACd,iBAAiB;AAAA,UAClB,CAAE;AAAA,UAEH,YAAa,CAAE;AAAA;AAAA,MAChB;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,UAAW;AAAA,UACX,UAAW;AAAA,UACX,YAAa,CAAE;AAAA;AAAA,MAChB;AAAA,OACD;AAAA,IAED,oBAAC,iBAAc,OAAM,SACpB;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,QACV,UAAW;AAAA,QACX,cAAe;AAAA,QACf,UAAW;AAAA,QACX,uBAAwB;AAAA,QACxB;AAAA,QACA,MAAO,CAAE,MAAM,GAAI,WAAY,IAAI,GAAI,SAAU;AAAA,QACjD,SAAU;AAAA,QAER,WAAE,EAAE,QAAQ,MACb;AAAA,UAAC;AAAA;AAAA,YACA,MAAO;AAAA,YACP,SAAU,MAAM;AACf,qCAAwB,IAAK;AAC7B,sBAAQ;AAAA,YACT;AAAA,YAEE,aAAI,sBAAuB;AAAA;AAAA,QAC9B;AAAA;AAAA,IAEF,GACD;AAAA,IACE,uBACD;AAAA,MAAC;AAAA;AAAA,QACA,UAAW,CAAE,aAAc;AAC1B,2BAAkB,QAAS;AAAA,QAC5B;AAAA,QACA,SAAU,MAAM,uBAAwB,KAAM;AAAA;AAAA,IAC/C;AAAA,KAEF;AAEF;",
6
6
  "names": []
7
7
  }
@@ -20,7 +20,6 @@ function CoverPlaceholder({
20
20
  title: __("Cover")
21
21
  },
22
22
  onSelect: onSelectMedia,
23
- accept: "image/*,video/*",
24
23
  allowedTypes: ALLOWED_MEDIA_TYPES,
25
24
  disableMediaButtons,
26
25
  onToggleFeaturedImage: toggleUseFeaturedImage,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cover/edit/cover-placeholder.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { BlockIcon, MediaPlaceholder } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { cover as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_MEDIA_TYPES } from '../shared';\n\nexport default function CoverPlaceholder( {\n\tdisableMediaButtons = false,\n\tchildren,\n\tonSelectMedia,\n\tonError,\n\tstyle,\n\ttoggleUseFeaturedImage,\n} ) {\n\treturn (\n\t\t<MediaPlaceholder\n\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\tlabels={ {\n\t\t\t\ttitle: __( 'Cover' ),\n\t\t\t} }\n\t\t\tonSelect={ onSelectMedia }\n\t\t\taccept=\"image/*,video/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tdisableMediaButtons={ disableMediaButtons }\n\t\t\tonToggleFeaturedImage={ toggleUseFeaturedImage }\n\t\t\tonError={ onError }\n\t\t\tstyle={ style }\n\t\t>\n\t\t\t{ children }\n\t\t</MediaPlaceholder>\n\t);\n}\n"],
5
- "mappings": ";AAGA,SAAS,WAAW,wBAAwB;AAC5C,SAAS,UAAU;AACnB,SAAS,SAAS,YAAY;AAK9B,SAAS,2BAA2B;AAY1B;AAVK,SAAR,iBAAmC;AAAA,EACzC,sBAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,SACC;AAAA,IAAC;AAAA;AAAA,MACA,MAAO,oBAAC,aAAU,MAAc;AAAA,MAChC,QAAS;AAAA,QACR,OAAO,GAAI,OAAQ;AAAA,MACpB;AAAA,MACA,UAAW;AAAA,MACX,QAAO;AAAA,MACP,cAAe;AAAA,MACf;AAAA,MACA,uBAAwB;AAAA,MACxB;AAAA,MACA;AAAA,MAEE;AAAA;AAAA,EACH;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { BlockIcon, MediaPlaceholder } from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { cover as icon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { ALLOWED_MEDIA_TYPES } from '../shared';\n\nexport default function CoverPlaceholder( {\n\tdisableMediaButtons = false,\n\tchildren,\n\tonSelectMedia,\n\tonError,\n\tstyle,\n\ttoggleUseFeaturedImage,\n} ) {\n\treturn (\n\t\t<MediaPlaceholder\n\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\tlabels={ {\n\t\t\t\ttitle: __( 'Cover' ),\n\t\t\t} }\n\t\t\tonSelect={ onSelectMedia }\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tdisableMediaButtons={ disableMediaButtons }\n\t\t\tonToggleFeaturedImage={ toggleUseFeaturedImage }\n\t\t\tonError={ onError }\n\t\t\tstyle={ style }\n\t\t>\n\t\t\t{ children }\n\t\t</MediaPlaceholder>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,WAAW,wBAAwB;AAC5C,SAAS,UAAU;AACnB,SAAS,SAAS,YAAY;AAK9B,SAAS,2BAA2B;AAY1B;AAVK,SAAR,iBAAmC;AAAA,EACzC,sBAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,SACC;AAAA,IAAC;AAAA;AAAA,MACA,MAAO,oBAAC,aAAU,MAAc;AAAA,MAChC,QAAS;AAAA,QACR,OAAO,GAAI,OAAQ;AAAA,MACpB;AAAA,MACA,UAAW;AAAA,MACX,cAAe;AAAA,MACf;AAAA,MACA,uBAAwB;AAAA,MACxB;AAAA,MACA;AAAA,MAEE;AAAA;AAAA,EACH;AAEF;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,67 @@
1
+ // packages/block-library/src/cover/edit/embed-video-url-input.js
2
+ import { useState } from "@wordpress/element";
3
+ import {
4
+ __experimentalConfirmDialog as ConfirmDialog,
5
+ __experimentalVStack as VStack,
6
+ TextControl,
7
+ Notice
8
+ } from "@wordpress/components";
9
+ import { __ } from "@wordpress/i18n";
10
+ import { isValidVideoEmbedUrl } from "../embed-video-utils";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ function EmbedVideoUrlInput({ onSubmit, onClose }) {
13
+ const [url, setUrl] = useState("");
14
+ const [error, setError] = useState("");
15
+ const handleConfirm = () => {
16
+ if (!url) {
17
+ setError(__("Please enter a URL."));
18
+ return;
19
+ }
20
+ if (!isValidVideoEmbedUrl(url)) {
21
+ setError(
22
+ __(
23
+ "This URL is not supported. Please enter a valid video link from a supported provider."
24
+ )
25
+ );
26
+ return;
27
+ }
28
+ onSubmit(url);
29
+ onClose();
30
+ };
31
+ return /* @__PURE__ */ jsx(
32
+ ConfirmDialog,
33
+ {
34
+ isOpen: true,
35
+ onConfirm: handleConfirm,
36
+ onCancel: onClose,
37
+ confirmButtonText: __("Add video"),
38
+ size: "medium",
39
+ children: /* @__PURE__ */ jsxs(VStack, { spacing: 4, children: [
40
+ error && /* @__PURE__ */ jsx(Notice, { status: "error", isDismissible: false, children: error }),
41
+ /* @__PURE__ */ jsx(
42
+ TextControl,
43
+ {
44
+ __next40pxDefaultSize: true,
45
+ label: __("Video URL"),
46
+ value: url,
47
+ onChange: (value) => {
48
+ setUrl(value);
49
+ setError("");
50
+ },
51
+ placeholder: __(
52
+ "Enter YouTube, Vimeo, or other video URL"
53
+ ),
54
+ __nextHasNoMarginBottom: true,
55
+ help: __(
56
+ "Add a background video to the cover block that will autoplay in a loop."
57
+ )
58
+ }
59
+ )
60
+ ] })
61
+ }
62
+ );
63
+ }
64
+ export {
65
+ EmbedVideoUrlInput as default
66
+ };
67
+ //# sourceMappingURL=embed-video-url-input.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/cover/edit/embed-video-url-input.js"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\nimport {\n\t__experimentalConfirmDialog as ConfirmDialog,\n\t__experimentalVStack as VStack,\n\tTextControl,\n\tNotice,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { isValidVideoEmbedUrl } from '../embed-video-utils';\n\nexport default function EmbedVideoUrlInput( { onSubmit, onClose } ) {\n\tconst [ url, setUrl ] = useState( '' );\n\tconst [ error, setError ] = useState( '' );\n\n\tconst handleConfirm = () => {\n\t\tif ( ! url ) {\n\t\t\tsetError( __( 'Please enter a URL.' ) );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! isValidVideoEmbedUrl( url ) ) {\n\t\t\tsetError(\n\t\t\t\t__(\n\t\t\t\t\t'This URL is not supported. Please enter a valid video link from a supported provider.'\n\t\t\t\t)\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tonSubmit( url );\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<ConfirmDialog\n\t\t\tisOpen\n\t\t\tonConfirm={ handleConfirm }\n\t\t\tonCancel={ onClose }\n\t\t\tconfirmButtonText={ __( 'Add video' ) }\n\t\t\tsize=\"medium\"\n\t\t>\n\t\t\t<VStack spacing={ 4 }>\n\t\t\t\t{ error && (\n\t\t\t\t\t<Notice status=\"error\" isDismissible={ false }>\n\t\t\t\t\t\t{ error }\n\t\t\t\t\t</Notice>\n\t\t\t\t) }\n\t\t\t\t<TextControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ __( 'Video URL' ) }\n\t\t\t\t\tvalue={ url }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetUrl( value );\n\t\t\t\t\t\tsetError( '' );\n\t\t\t\t\t} }\n\t\t\t\t\tplaceholder={ __(\n\t\t\t\t\t\t'Enter YouTube, Vimeo, or other video URL'\n\t\t\t\t\t) }\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t'Add a background video to the cover block that will autoplay in a loop.'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</VStack>\n\t\t</ConfirmDialog>\n\t);\n}\n"],
5
+ "mappings": ";AAGA,SAAS,gBAAgB;AACzB;AAAA,EACC,+BAA+B;AAAA,EAC/B,wBAAwB;AAAA,EACxB;AAAA,EACA;AAAA,OACM;AACP,SAAS,UAAU;AAKnB,SAAS,4BAA4B;AAiClC,SAEE,KAFF;AA/BY,SAAR,mBAAqC,EAAE,UAAU,QAAQ,GAAI;AACnE,QAAM,CAAE,KAAK,MAAO,IAAI,SAAU,EAAG;AACrC,QAAM,CAAE,OAAO,QAAS,IAAI,SAAU,EAAG;AAEzC,QAAM,gBAAgB,MAAM;AAC3B,QAAK,CAAE,KAAM;AACZ,eAAU,GAAI,qBAAsB,CAAE;AACtC;AAAA,IACD;AAEA,QAAK,CAAE,qBAAsB,GAAI,GAAI;AACpC;AAAA,QACC;AAAA,UACC;AAAA,QACD;AAAA,MACD;AACA;AAAA,IACD;AAEA,aAAU,GAAI;AACd,YAAQ;AAAA,EACT;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,QAAM;AAAA,MACN,WAAY;AAAA,MACZ,UAAW;AAAA,MACX,mBAAoB,GAAI,WAAY;AAAA,MACpC,MAAK;AAAA,MAEL,+BAAC,UAAO,SAAU,GACf;AAAA,iBACD,oBAAC,UAAO,QAAO,SAAQ,eAAgB,OACpC,iBACH;AAAA,QAED;AAAA,UAAC;AAAA;AAAA,YACA,uBAAqB;AAAA,YACrB,OAAQ,GAAI,WAAY;AAAA,YACxB,OAAQ;AAAA,YACR,UAAW,CAAE,UAAW;AACvB,qBAAQ,KAAM;AACd,uBAAU,EAAG;AAAA,YACd;AAAA,YACA,aAAc;AAAA,cACb;AAAA,YACD;AAAA,YACA,yBAAuB;AAAA,YACvB,MAAO;AAAA,cACN;AAAA,YACD;AAAA;AAAA,QACD;AAAA,SACD;AAAA;AAAA,EACD;AAEF;",
6
+ "names": []
7
+ }