@wordpress/block-library 9.40.2-next.v.202602241322.0 → 9.40.2

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 (226) hide show
  1. package/build/comment-reply-link/edit.cjs +2 -1
  2. package/build/comment-reply-link/edit.cjs.map +2 -2
  3. package/build/comments/edit/placeholder.cjs +2 -1
  4. package/build/comments/edit/placeholder.cjs.map +2 -2
  5. package/build/cover/edit/index.cjs +39 -26
  6. package/build/cover/edit/index.cjs.map +2 -2
  7. package/build/cover/embed-video-utils.cjs +8 -6
  8. package/build/cover/embed-video-utils.cjs.map +2 -2
  9. package/build/embed/embed-preview.cjs +2 -1
  10. package/build/embed/embed-preview.cjs.map +2 -2
  11. package/build/html/block.json +2 -1
  12. package/build/html/modal.cjs +147 -230
  13. package/build/html/modal.cjs.map +3 -3
  14. package/build/icon/block.json +3 -12
  15. package/build/image/image.cjs +1 -1
  16. package/build/image/image.cjs.map +2 -2
  17. package/build/latest-comments/deprecated.cjs +33 -0
  18. package/build/latest-comments/deprecated.cjs.map +2 -2
  19. package/build/navigation/edit/index.cjs +123 -119
  20. package/build/navigation/edit/index.cjs.map +3 -3
  21. package/build/navigation/edit/navigation-menu-selector.cjs +2 -1
  22. package/build/navigation/edit/navigation-menu-selector.cjs.map +2 -2
  23. package/build/navigation/view.cjs +9 -2
  24. package/build/navigation/view.cjs.map +2 -2
  25. package/build/navigation-link/edit.cjs +2 -1
  26. package/build/navigation-link/edit.cjs.map +2 -2
  27. package/build/navigation-link/shared/controls.cjs +29 -52
  28. package/build/navigation-link/shared/controls.cjs.map +3 -3
  29. package/build/navigation-link/shared/use-handle-link-change.cjs +19 -3
  30. package/build/navigation-link/shared/use-handle-link-change.cjs.map +3 -3
  31. package/build/navigation-link/shared/use-link-preview.cjs +8 -9
  32. package/build/navigation-link/shared/use-link-preview.cjs.map +2 -2
  33. package/build/navigation-submenu/edit.cjs +8 -22
  34. package/build/navigation-submenu/edit.cjs.map +2 -2
  35. package/build/nextpage/block.json +0 -1
  36. package/build/page-list-item/edit.cjs +6 -3
  37. package/build/page-list-item/edit.cjs.map +2 -2
  38. package/build/paragraph/edit.cjs +1 -1
  39. package/build/paragraph/edit.cjs.map +1 -1
  40. package/build/post-navigation-link/block.json +3 -1
  41. package/build/post-navigation-link/edit.cjs +36 -2
  42. package/build/post-navigation-link/edit.cjs.map +3 -3
  43. package/build/post-navigation-link/index.cjs +0 -2
  44. package/build/post-navigation-link/index.cjs.map +3 -3
  45. package/build/post-title/block.json +3 -1
  46. package/build/post-title/deprecated.cjs +1 -82
  47. package/build/post-title/deprecated.cjs.map +3 -3
  48. package/build/post-title/edit.cjs +36 -10
  49. package/build/post-title/edit.cjs.map +3 -3
  50. package/build/query-title/block.json +3 -1
  51. package/build/query-title/deprecated.cjs +1 -70
  52. package/build/query-title/deprecated.cjs.map +3 -3
  53. package/build/query-title/edit.cjs +35 -17
  54. package/build/query-title/edit.cjs.map +3 -3
  55. package/build/shortcode/block.json +2 -1
  56. package/build/site-tagline/block.json +4 -6
  57. package/build/site-tagline/deprecated.cjs +1 -66
  58. package/build/site-tagline/deprecated.cjs.map +3 -3
  59. package/build/site-tagline/edit.cjs +28 -14
  60. package/build/site-tagline/edit.cjs.map +3 -3
  61. package/build/site-title/block.json +3 -1
  62. package/build/site-title/deprecated.cjs +1 -79
  63. package/build/site-title/deprecated.cjs.map +3 -3
  64. package/build/site-title/edit.cjs +30 -14
  65. package/build/site-title/edit.cjs.map +3 -3
  66. package/build/tabs-menu-item/block.json +26 -1
  67. package/build/tabs-menu-item/controls.cjs +100 -2
  68. package/build/tabs-menu-item/controls.cjs.map +3 -3
  69. package/build/tabs-menu-item/edit.cjs +65 -6
  70. package/build/tabs-menu-item/edit.cjs.map +2 -2
  71. package/build/tabs-menu-item/save.cjs +15 -1
  72. package/build/tabs-menu-item/save.cjs.map +2 -2
  73. package/build-module/comment-reply-link/edit.mjs +3 -2
  74. package/build-module/comment-reply-link/edit.mjs.map +2 -2
  75. package/build-module/comments/edit/placeholder.mjs +3 -2
  76. package/build-module/comments/edit/placeholder.mjs.map +2 -2
  77. package/build-module/cover/edit/index.mjs +47 -29
  78. package/build-module/cover/edit/index.mjs.map +2 -2
  79. package/build-module/cover/embed-video-utils.mjs +7 -5
  80. package/build-module/cover/embed-video-utils.mjs.map +2 -2
  81. package/build-module/embed/embed-preview.mjs +2 -1
  82. package/build-module/embed/embed-preview.mjs.map +2 -2
  83. package/build-module/html/block.json +2 -1
  84. package/build-module/html/modal.mjs +149 -232
  85. package/build-module/html/modal.mjs.map +2 -2
  86. package/build-module/icon/block.json +3 -12
  87. package/build-module/image/image.mjs +1 -1
  88. package/build-module/image/image.mjs.map +2 -2
  89. package/build-module/latest-comments/deprecated.mjs +33 -0
  90. package/build-module/latest-comments/deprecated.mjs.map +2 -2
  91. package/build-module/navigation/edit/index.mjs +123 -119
  92. package/build-module/navigation/edit/index.mjs.map +2 -2
  93. package/build-module/navigation/edit/navigation-menu-selector.mjs +2 -1
  94. package/build-module/navigation/edit/navigation-menu-selector.mjs.map +2 -2
  95. package/build-module/navigation/view.mjs +9 -2
  96. package/build-module/navigation/view.mjs.map +2 -2
  97. package/build-module/navigation-link/edit.mjs +2 -1
  98. package/build-module/navigation-link/edit.mjs.map +2 -2
  99. package/build-module/navigation-link/shared/controls.mjs +29 -53
  100. package/build-module/navigation-link/shared/controls.mjs.map +2 -2
  101. package/build-module/navigation-link/shared/use-handle-link-change.mjs +19 -3
  102. package/build-module/navigation-link/shared/use-handle-link-change.mjs.map +2 -2
  103. package/build-module/navigation-link/shared/use-link-preview.mjs +8 -9
  104. package/build-module/navigation-link/shared/use-link-preview.mjs.map +2 -2
  105. package/build-module/navigation-submenu/edit.mjs +9 -23
  106. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  107. package/build-module/nextpage/block.json +0 -1
  108. package/build-module/page-list-item/edit.mjs +6 -3
  109. package/build-module/page-list-item/edit.mjs.map +2 -2
  110. package/build-module/paragraph/edit.mjs +2 -2
  111. package/build-module/paragraph/edit.mjs.map +1 -1
  112. package/build-module/post-navigation-link/block.json +3 -1
  113. package/build-module/post-navigation-link/edit.mjs +30 -3
  114. package/build-module/post-navigation-link/edit.mjs.map +2 -2
  115. package/build-module/post-navigation-link/index.mjs +0 -2
  116. package/build-module/post-navigation-link/index.mjs.map +2 -2
  117. package/build-module/post-title/block.json +3 -1
  118. package/build-module/post-title/deprecated.mjs +1 -82
  119. package/build-module/post-title/deprecated.mjs.map +2 -2
  120. package/build-module/post-title/edit.mjs +27 -10
  121. package/build-module/post-title/edit.mjs.map +2 -2
  122. package/build-module/query-title/block.json +3 -1
  123. package/build-module/query-title/deprecated.mjs +1 -70
  124. package/build-module/query-title/deprecated.mjs.map +2 -2
  125. package/build-module/query-title/edit.mjs +36 -17
  126. package/build-module/query-title/edit.mjs.map +2 -2
  127. package/build-module/shortcode/block.json +2 -1
  128. package/build-module/site-tagline/block.json +4 -6
  129. package/build-module/site-tagline/deprecated.mjs +1 -66
  130. package/build-module/site-tagline/deprecated.mjs.map +2 -2
  131. package/build-module/site-tagline/edit.mjs +29 -14
  132. package/build-module/site-tagline/edit.mjs.map +2 -2
  133. package/build-module/site-title/block.json +3 -1
  134. package/build-module/site-title/deprecated.mjs +1 -79
  135. package/build-module/site-title/deprecated.mjs.map +2 -2
  136. package/build-module/site-title/edit.mjs +31 -14
  137. package/build-module/site-title/edit.mjs.map +2 -2
  138. package/build-module/tabs-menu-item/block.json +26 -1
  139. package/build-module/tabs-menu-item/controls.mjs +104 -3
  140. package/build-module/tabs-menu-item/controls.mjs.map +2 -2
  141. package/build-module/tabs-menu-item/edit.mjs +66 -6
  142. package/build-module/tabs-menu-item/edit.mjs.map +2 -2
  143. package/build-module/tabs-menu-item/save.mjs +15 -1
  144. package/build-module/tabs-menu-item/save.mjs.map +2 -2
  145. package/build-style/editor-rtl.css +30 -6
  146. package/build-style/editor.css +30 -6
  147. package/build-style/html/editor-rtl.css +10 -6
  148. package/build-style/html/editor.css +10 -6
  149. package/build-style/icon/editor-rtl.css +5 -0
  150. package/build-style/icon/editor.css +5 -0
  151. package/build-style/navigation/style-rtl.css +15 -1
  152. package/build-style/navigation/style.css +15 -1
  153. package/build-style/navigation-link/editor-rtl.css +10 -0
  154. package/build-style/navigation-link/editor.css +10 -0
  155. package/build-style/navigation-overlay-close/style-rtl.css +3 -3
  156. package/build-style/navigation-overlay-close/style.css +3 -3
  157. package/build-style/style-rtl.css +30 -7
  158. package/build-style/style.css +30 -7
  159. package/build-style/tabs-menu-item/editor-rtl.css +5 -0
  160. package/build-style/tabs-menu-item/editor.css +5 -0
  161. package/build-style/tabs-menu-item/style-rtl.css +12 -3
  162. package/build-style/tabs-menu-item/style.css +12 -3
  163. package/package.json +38 -38
  164. package/src/accordion-item/index.php +17 -5
  165. package/src/comment-reply-link/edit.js +5 -2
  166. package/src/comments/edit/placeholder.js +5 -2
  167. package/src/cover/edit/index.js +72 -35
  168. package/src/cover/embed-video-utils.js +9 -7
  169. package/src/cover/index.php +8 -0
  170. package/src/details/index.php +47 -0
  171. package/src/embed/embed-preview.js +6 -5
  172. package/src/html/block.json +2 -1
  173. package/src/html/editor.scss +15 -5
  174. package/src/html/modal.js +32 -99
  175. package/src/icon/block.json +3 -12
  176. package/src/icon/editor.scss +5 -0
  177. package/src/icon/index.php +3 -1
  178. package/src/image/image.js +14 -15
  179. package/src/image/index.php +7 -5
  180. package/src/latest-comments/deprecated.js +33 -0
  181. package/src/navigation/edit/index.js +134 -130
  182. package/src/navigation/edit/navigation-menu-selector.js +2 -1
  183. package/src/navigation/index.php +62 -9
  184. package/src/navigation/style.scss +17 -1
  185. package/src/navigation/view.js +14 -2
  186. package/src/navigation-link/edit.js +1 -0
  187. package/src/navigation-link/editor.scss +18 -0
  188. package/src/navigation-link/shared/controls.js +35 -62
  189. package/src/navigation-link/shared/test/controls.js +5 -5
  190. package/src/navigation-link/shared/test/use-handle-link-change.test.js +212 -0
  191. package/src/navigation-link/shared/test/use-link-preview.test.js +19 -1
  192. package/src/navigation-link/shared/use-handle-link-change.js +36 -9
  193. package/src/navigation-link/shared/use-link-preview.js +14 -15
  194. package/src/navigation-overlay-close/style.scss +3 -3
  195. package/src/navigation-submenu/edit.js +11 -28
  196. package/src/nextpage/block.json +0 -1
  197. package/src/page-list-item/edit.js +8 -7
  198. package/src/paragraph/edit.js +2 -2
  199. package/src/post-featured-image/index.php +4 -2
  200. package/src/post-navigation-link/block.json +3 -1
  201. package/src/post-navigation-link/edit.js +35 -2
  202. package/src/post-navigation-link/index.js +0 -2
  203. package/src/post-title/block.json +3 -1
  204. package/src/post-title/deprecated.js +1 -86
  205. package/src/post-title/edit.js +18 -2
  206. package/src/query-title/block.json +3 -1
  207. package/src/query-title/deprecated.js +1 -74
  208. package/src/query-title/edit.js +27 -11
  209. package/src/shortcode/block.json +2 -1
  210. package/src/site-tagline/block.json +4 -6
  211. package/src/site-tagline/deprecated.js +1 -70
  212. package/src/site-tagline/edit.js +22 -9
  213. package/src/site-title/block.json +3 -1
  214. package/src/site-title/deprecated.js +1 -83
  215. package/src/site-title/edit.js +22 -9
  216. package/src/tabs-menu-item/block.json +26 -1
  217. package/src/tabs-menu-item/controls.js +108 -0
  218. package/src/tabs-menu-item/edit.js +79 -6
  219. package/src/tabs-menu-item/editor.scss +6 -0
  220. package/src/tabs-menu-item/save.js +26 -1
  221. package/src/tabs-menu-item/style.scss +14 -3
  222. package/build/post-navigation-link/deprecated.cjs +0 -100
  223. package/build/post-navigation-link/deprecated.cjs.map +0 -7
  224. package/build-module/post-navigation-link/deprecated.mjs +0 -69
  225. package/build-module/post-navigation-link/deprecated.mjs.map +0 -7
  226. package/src/post-navigation-link/deprecated.js +0 -72
@@ -2605,7 +2605,17 @@ ul {
2605
2605
  transform: rotate(90deg);
2606
2606
  }
2607
2607
  }
2608
- .wp-block-navigation .has-child:not(.open-on-click):hover > .wp-block-navigation__submenu-container, .wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within > .wp-block-navigation__submenu-container,
2608
+ @media (hover: hover) {
2609
+ .wp-block-navigation .has-child:not(.open-on-click):hover > .wp-block-navigation__submenu-container {
2610
+ visibility: visible;
2611
+ overflow: visible;
2612
+ opacity: 1;
2613
+ width: auto;
2614
+ height: auto;
2615
+ min-width: 200px;
2616
+ }
2617
+ }
2618
+ .wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within > .wp-block-navigation__submenu-container,
2609
2619
  .wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true] ~ .wp-block-navigation__submenu-container {
2610
2620
  visibility: visible;
2611
2621
  overflow: visible;
@@ -2925,6 +2935,10 @@ button.wp-block-navigation-item__content {
2925
2935
  .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container {
2926
2936
  display: block;
2927
2937
  }
2938
+ .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container .wp-block-navigation__submenu-container {
2939
+ left: auto;
2940
+ right: 0;
2941
+ }
2928
2942
  @media (min-width: 600px) {
2929
2943
  .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
2930
2944
  display: block;
@@ -3066,7 +3080,7 @@ html.has-modal-open {
3066
3080
  align-items: center;
3067
3081
  justify-content: center;
3068
3082
  gap: 0.5em;
3069
- padding: 0.5em;
3083
+ padding: 0;
3070
3084
  border: none;
3071
3085
  background: transparent;
3072
3086
  cursor: pointer;
@@ -3076,8 +3090,8 @@ html.has-modal-open {
3076
3090
  outline-offset: 2px;
3077
3091
  }
3078
3092
  .wp-block-navigation-overlay-close svg {
3079
- width: 1.5em;
3080
- height: 1.5em;
3093
+ width: 24px;
3094
+ height: 24px;
3081
3095
  fill: currentColor;
3082
3096
  display: block;
3083
3097
  flex-shrink: 0;
@@ -4580,7 +4594,8 @@ ul.wp-block-rss.is-grid li {
4580
4594
  appearance: none;
4581
4595
  -webkit-appearance: none;
4582
4596
  margin: 0;
4583
- padding: var(--wp--preset--spacing--20, 0.5em) var(--wp--preset--spacing--30, 1em);
4597
+ padding-block: var(--tab-padding-block, var(--wp--preset--spacing--20, 0.5em));
4598
+ padding-inline: var(--tab-padding-inline, var(--wp--preset--spacing--30, 1em));
4584
4599
  font-size: inherit;
4585
4600
  font-family: inherit;
4586
4601
  font-weight: inherit;
@@ -4589,12 +4604,20 @@ ul.wp-block-rss.is-grid li {
4589
4604
  text-transform: inherit;
4590
4605
  text-align: inherit;
4591
4606
  }
4607
+ .wp-block-tabs-menu-item:focus {
4608
+ outline: none;
4609
+ }
4592
4610
  .wp-block-tabs-menu-item:focus-visible {
4611
+ outline: 2px solid var(--tab-border-color-active, #000);
4593
4612
  outline-offset: 2px;
4594
4613
  }
4614
+ .wp-block-tabs-menu-item:hover {
4615
+ background-color: var(--custom-tab-hover-color, #eaeaea) !important;
4616
+ color: var(--custom-tab-hover-text-color, #000) !important;
4617
+ }
4595
4618
  .wp-block-tabs-menu-item[aria-selected=true], .wp-block-tabs-menu-item.is-active {
4596
- background-color: #000;
4597
- color: #fff;
4619
+ background-color: var(--custom-tab-active-color, #000) !important;
4620
+ color: var(--custom-tab-active-text-color, #fff) !important;
4598
4621
  }
4599
4622
 
4600
4623
  .wp-block-term-count {
@@ -2635,7 +2635,17 @@ ul {
2635
2635
  transform: rotate(-90deg);
2636
2636
  }
2637
2637
  }
2638
- .wp-block-navigation .has-child:not(.open-on-click):hover > .wp-block-navigation__submenu-container, .wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within > .wp-block-navigation__submenu-container,
2638
+ @media (hover: hover) {
2639
+ .wp-block-navigation .has-child:not(.open-on-click):hover > .wp-block-navigation__submenu-container {
2640
+ visibility: visible;
2641
+ overflow: visible;
2642
+ opacity: 1;
2643
+ width: auto;
2644
+ height: auto;
2645
+ min-width: 200px;
2646
+ }
2647
+ }
2648
+ .wp-block-navigation .has-child:not(.open-on-click):not(.open-on-hover-click):focus-within > .wp-block-navigation__submenu-container,
2639
2649
  .wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true] ~ .wp-block-navigation__submenu-container {
2640
2650
  visibility: visible;
2641
2651
  overflow: visible;
@@ -2955,6 +2965,10 @@ button.wp-block-navigation-item__content {
2955
2965
  .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container {
2956
2966
  display: block;
2957
2967
  }
2968
+ .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container .wp-block-navigation__submenu-container {
2969
+ right: auto;
2970
+ left: 0;
2971
+ }
2958
2972
  @media (min-width: 600px) {
2959
2973
  .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
2960
2974
  display: block;
@@ -3096,7 +3110,7 @@ html.has-modal-open {
3096
3110
  align-items: center;
3097
3111
  justify-content: center;
3098
3112
  gap: 0.5em;
3099
- padding: 0.5em;
3113
+ padding: 0;
3100
3114
  border: none;
3101
3115
  background: transparent;
3102
3116
  cursor: pointer;
@@ -3106,8 +3120,8 @@ html.has-modal-open {
3106
3120
  outline-offset: 2px;
3107
3121
  }
3108
3122
  .wp-block-navigation-overlay-close svg {
3109
- width: 1.5em;
3110
- height: 1.5em;
3123
+ width: 24px;
3124
+ height: 24px;
3111
3125
  fill: currentColor;
3112
3126
  display: block;
3113
3127
  flex-shrink: 0;
@@ -4613,7 +4627,8 @@ ul.wp-block-rss.is-grid li {
4613
4627
  appearance: none;
4614
4628
  -webkit-appearance: none;
4615
4629
  margin: 0;
4616
- padding: var(--wp--preset--spacing--20, 0.5em) var(--wp--preset--spacing--30, 1em);
4630
+ padding-block: var(--tab-padding-block, var(--wp--preset--spacing--20, 0.5em));
4631
+ padding-inline: var(--tab-padding-inline, var(--wp--preset--spacing--30, 1em));
4617
4632
  font-size: inherit;
4618
4633
  font-family: inherit;
4619
4634
  font-weight: inherit;
@@ -4622,12 +4637,20 @@ ul.wp-block-rss.is-grid li {
4622
4637
  text-transform: inherit;
4623
4638
  text-align: inherit;
4624
4639
  }
4640
+ .wp-block-tabs-menu-item:focus {
4641
+ outline: none;
4642
+ }
4625
4643
  .wp-block-tabs-menu-item:focus-visible {
4644
+ outline: 2px solid var(--tab-border-color-active, #000);
4626
4645
  outline-offset: 2px;
4627
4646
  }
4647
+ .wp-block-tabs-menu-item:hover {
4648
+ background-color: var(--custom-tab-hover-color, #eaeaea) !important;
4649
+ color: var(--custom-tab-hover-text-color, #000) !important;
4650
+ }
4628
4651
  .wp-block-tabs-menu-item[aria-selected=true], .wp-block-tabs-menu-item.is-active {
4629
- background-color: #000;
4630
- color: #fff;
4652
+ background-color: var(--custom-tab-active-color, #000) !important;
4653
+ color: var(--custom-tab-active-text-color, #fff) !important;
4631
4654
  }
4632
4655
 
4633
4656
  .wp-block-term-count {
@@ -1,4 +1,5 @@
1
1
  .wp-block-tabs-menu-item.is-selected {
2
+ outline: 2px solid var(--wp-admin-theme-color, #007cba);
2
3
  outline-offset: 2px;
3
4
  }
4
5
 
@@ -8,4 +9,8 @@
8
9
  }
9
10
  .block-editor-block-preview__live-content:has(.wp-block-tabs-menu-item) .wp-block-tabs-menu-item {
10
11
  flex-basis: 100% !important;
12
+ }
13
+ .block-editor-block-preview__live-content:has(.wp-block-tabs-menu-item):hover > .wp-block-tabs-menu-item {
14
+ background-color: var(--custom-tab-hover-color, #eaeaea) !important;
15
+ color: var(--custom-tab-hover-text-color, #000) !important;
11
16
  }
@@ -1,4 +1,5 @@
1
1
  .wp-block-tabs-menu-item.is-selected {
2
+ outline: 2px solid var(--wp-admin-theme-color, #007cba);
2
3
  outline-offset: 2px;
3
4
  }
4
5
 
@@ -8,4 +9,8 @@
8
9
  }
9
10
  .block-editor-block-preview__live-content:has(.wp-block-tabs-menu-item) .wp-block-tabs-menu-item {
10
11
  flex-basis: 100% !important;
12
+ }
13
+ .block-editor-block-preview__live-content:has(.wp-block-tabs-menu-item):hover > .wp-block-tabs-menu-item {
14
+ background-color: var(--custom-tab-hover-color, #eaeaea) !important;
15
+ color: var(--custom-tab-hover-text-color, #000) !important;
11
16
  }
@@ -12,7 +12,8 @@
12
12
  appearance: none;
13
13
  -webkit-appearance: none;
14
14
  margin: 0;
15
- padding: var(--wp--preset--spacing--20, 0.5em) var(--wp--preset--spacing--30, 1em);
15
+ padding-block: var(--tab-padding-block, var(--wp--preset--spacing--20, 0.5em));
16
+ padding-inline: var(--tab-padding-inline, var(--wp--preset--spacing--30, 1em));
16
17
  font-size: inherit;
17
18
  font-family: inherit;
18
19
  font-weight: inherit;
@@ -21,10 +22,18 @@
21
22
  text-transform: inherit;
22
23
  text-align: inherit;
23
24
  }
25
+ .wp-block-tabs-menu-item:focus {
26
+ outline: none;
27
+ }
24
28
  .wp-block-tabs-menu-item:focus-visible {
29
+ outline: 2px solid var(--tab-border-color-active, #000);
25
30
  outline-offset: 2px;
26
31
  }
32
+ .wp-block-tabs-menu-item:hover {
33
+ background-color: var(--custom-tab-hover-color, #eaeaea) !important;
34
+ color: var(--custom-tab-hover-text-color, #000) !important;
35
+ }
27
36
  .wp-block-tabs-menu-item[aria-selected=true], .wp-block-tabs-menu-item.is-active {
28
- background-color: #000;
29
- color: #fff;
37
+ background-color: var(--custom-tab-active-color, #000) !important;
38
+ color: var(--custom-tab-active-text-color, #fff) !important;
30
39
  }
@@ -12,7 +12,8 @@
12
12
  appearance: none;
13
13
  -webkit-appearance: none;
14
14
  margin: 0;
15
- padding: var(--wp--preset--spacing--20, 0.5em) var(--wp--preset--spacing--30, 1em);
15
+ padding-block: var(--tab-padding-block, var(--wp--preset--spacing--20, 0.5em));
16
+ padding-inline: var(--tab-padding-inline, var(--wp--preset--spacing--30, 1em));
16
17
  font-size: inherit;
17
18
  font-family: inherit;
18
19
  font-weight: inherit;
@@ -21,10 +22,18 @@
21
22
  text-transform: inherit;
22
23
  text-align: inherit;
23
24
  }
25
+ .wp-block-tabs-menu-item:focus {
26
+ outline: none;
27
+ }
24
28
  .wp-block-tabs-menu-item:focus-visible {
29
+ outline: 2px solid var(--tab-border-color-active, #000);
25
30
  outline-offset: 2px;
26
31
  }
32
+ .wp-block-tabs-menu-item:hover {
33
+ background-color: var(--custom-tab-hover-color, #eaeaea) !important;
34
+ color: var(--custom-tab-hover-text-color, #000) !important;
35
+ }
27
36
  .wp-block-tabs-menu-item[aria-selected=true], .wp-block-tabs-menu-item.is-active {
28
- background-color: #000;
29
- color: #fff;
37
+ background-color: var(--custom-tab-active-color, #000) !important;
38
+ color: var(--custom-tab-active-text-color, #fff) !important;
30
39
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-library",
3
- "version": "9.40.2-next.v.202602241322.0+bce7cff88",
3
+ "version": "9.40.2",
4
4
  "description": "Block library for the WordPress editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -94,42 +94,42 @@
94
94
  "build-module/*/init.mjs"
95
95
  ],
96
96
  "dependencies": {
97
- "@wordpress/a11y": "^4.40.1-next.v.202602241322.0+bce7cff88",
98
- "@wordpress/api-fetch": "^7.40.1-next.v.202602241322.0+bce7cff88",
99
- "@wordpress/autop": "^4.40.1-next.v.202602241322.0+bce7cff88",
100
- "@wordpress/base-styles": "^6.16.1-next.v.202602241322.0+bce7cff88",
101
- "@wordpress/blob": "^4.40.1-next.v.202602241322.0+bce7cff88",
102
- "@wordpress/block-editor": "^15.13.2-next.v.202602241322.0+bce7cff88",
103
- "@wordpress/blocks": "^15.13.1-next.v.202602241322.0+bce7cff88",
104
- "@wordpress/components": "^32.3.1-next.v.202602241322.0+bce7cff88",
105
- "@wordpress/compose": "^7.40.1-next.v.202602241322.0+bce7cff88",
106
- "@wordpress/core-data": "^7.40.2-next.v.202602241322.0+bce7cff88",
107
- "@wordpress/data": "^10.40.1-next.v.202602241322.0+bce7cff88",
108
- "@wordpress/date": "^5.40.1-next.v.202602241322.0+bce7cff88",
109
- "@wordpress/deprecated": "^4.40.1-next.v.202602241322.0+bce7cff88",
110
- "@wordpress/dom": "^4.40.1-next.v.202602241322.0+bce7cff88",
111
- "@wordpress/element": "^6.40.1-next.v.202602241322.0+bce7cff88",
112
- "@wordpress/escape-html": "^3.40.1-next.v.202602241322.0+bce7cff88",
113
- "@wordpress/hooks": "^4.40.1-next.v.202602241322.0+bce7cff88",
114
- "@wordpress/html-entities": "^4.40.1-next.v.202602241322.0+bce7cff88",
115
- "@wordpress/i18n": "^6.13.1-next.v.202602241322.0+bce7cff88",
116
- "@wordpress/icons": "^11.7.1-next.v.202602241322.0+bce7cff88",
117
- "@wordpress/interactivity": "^6.40.1-next.v.202602241322.0+bce7cff88",
118
- "@wordpress/interactivity-router": "^2.40.1-next.v.202602241322.0+bce7cff88",
119
- "@wordpress/keyboard-shortcuts": "^5.40.1-next.v.202602241322.0+bce7cff88",
120
- "@wordpress/keycodes": "^4.40.1-next.v.202602241322.0+bce7cff88",
121
- "@wordpress/latex-to-mathml": "^1.8.1-next.v.202602241322.0+bce7cff88",
122
- "@wordpress/notices": "^5.40.1-next.v.202602241322.0+bce7cff88",
123
- "@wordpress/patterns": "^2.40.2-next.v.202602241322.0+bce7cff88",
124
- "@wordpress/primitives": "^4.40.1-next.v.202602241322.0+bce7cff88",
125
- "@wordpress/private-apis": "^1.40.1-next.v.202602241322.0+bce7cff88",
126
- "@wordpress/reusable-blocks": "^5.40.2-next.v.202602241322.0+bce7cff88",
127
- "@wordpress/rich-text": "^7.40.1-next.v.202602241322.0+bce7cff88",
128
- "@wordpress/server-side-render": "^6.16.1-next.v.202602241322.0+bce7cff88",
129
- "@wordpress/upload-media": "^0.25.2-next.v.202602241322.0+bce7cff88",
130
- "@wordpress/url": "^4.40.1-next.v.202602241322.0+bce7cff88",
131
- "@wordpress/viewport": "^6.40.1-next.v.202602241322.0+bce7cff88",
132
- "@wordpress/wordcount": "^4.40.1-next.v.202602241322.0+bce7cff88",
97
+ "@wordpress/a11y": "^4.40.1",
98
+ "@wordpress/api-fetch": "^7.40.1",
99
+ "@wordpress/autop": "^4.40.1",
100
+ "@wordpress/base-styles": "^6.16.1",
101
+ "@wordpress/blob": "^4.40.1",
102
+ "@wordpress/block-editor": "^15.13.2",
103
+ "@wordpress/blocks": "^15.13.1",
104
+ "@wordpress/components": "^32.2.1",
105
+ "@wordpress/compose": "^7.40.1",
106
+ "@wordpress/core-data": "^7.40.2",
107
+ "@wordpress/data": "^10.40.1",
108
+ "@wordpress/date": "^5.40.1",
109
+ "@wordpress/deprecated": "^4.40.1",
110
+ "@wordpress/dom": "^4.40.1",
111
+ "@wordpress/element": "^6.40.1",
112
+ "@wordpress/escape-html": "^3.40.1",
113
+ "@wordpress/hooks": "^4.40.1",
114
+ "@wordpress/html-entities": "^4.40.1",
115
+ "@wordpress/i18n": "^6.13.1",
116
+ "@wordpress/icons": "^11.7.1",
117
+ "@wordpress/interactivity": "^6.40.1",
118
+ "@wordpress/interactivity-router": "^2.40.1",
119
+ "@wordpress/keyboard-shortcuts": "^5.40.1",
120
+ "@wordpress/keycodes": "^4.40.1",
121
+ "@wordpress/latex-to-mathml": "^1.8.1",
122
+ "@wordpress/notices": "^5.40.1",
123
+ "@wordpress/patterns": "^2.40.2",
124
+ "@wordpress/primitives": "^4.40.1",
125
+ "@wordpress/private-apis": "^1.40.1",
126
+ "@wordpress/reusable-blocks": "^5.40.2",
127
+ "@wordpress/rich-text": "^7.40.1",
128
+ "@wordpress/server-side-render": "^6.16.1",
129
+ "@wordpress/upload-media": "^0.25.2",
130
+ "@wordpress/url": "^4.40.1",
131
+ "@wordpress/viewport": "^6.40.1",
132
+ "@wordpress/wordcount": "^4.40.1",
133
133
  "change-case": "^4.1.2",
134
134
  "clsx": "^2.1.1",
135
135
  "colord": "^2.7.0",
@@ -150,5 +150,5 @@
150
150
  "publishConfig": {
151
151
  "access": "public"
152
152
  },
153
- "gitHead": "943dde7f0b600ce238726c36284bc9f70ce0ffa4"
153
+ "gitHead": "adb6623c9f32490cfc73c7ac7f122578c1f10c65"
154
154
  }
@@ -6,13 +6,12 @@
6
6
  * @package WordPress
7
7
  * @since 6.9.0
8
8
  *
9
- * @param array $attributes The block attributes.
10
- * @param string $content The block content.
11
- *
9
+ * @param array{ openByDefault: bool } $attributes The block attributes.
10
+ * @param string $content The block content.
12
11
  * @return string Returns the updated markup.
13
12
  */
14
- function block_core_accordion_item_render( $attributes, $content ) {
15
- if ( ! $content ) {
13
+ function block_core_accordion_item_render( array $attributes, string $content ): string {
14
+ if ( '' === $content ) {
16
15
  return $content;
17
16
  }
18
17
 
@@ -56,6 +55,19 @@ function block_core_accordion_item_render( $attributes, $content ) {
56
55
  }
57
56
  }
58
57
 
58
+ /*
59
+ * If an Accordion Item is collapsed by default, ensure any contained IMG has fetchpriority=low to deprioritize it
60
+ * from contending with resources in the critical rendering path. In contrast, remove the loading attribute to
61
+ * prevent the image from not being available when the item is expanded.
62
+ */
63
+ if ( ! $attributes['openByDefault'] ) {
64
+ $processor = new WP_HTML_Tag_Processor( $content );
65
+ while ( $processor->next_tag( 'IMG' ) ) {
66
+ $processor->set_attribute( 'fetchpriority', 'low' );
67
+ }
68
+ $content = $processor->get_updated_html();
69
+ }
70
+
59
71
  return $content;
60
72
  }
61
73
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { __ } from '@wordpress/i18n';
4
+ import { _x } from '@wordpress/i18n';
5
5
  import { useBlockProps } from '@wordpress/block-editor';
6
6
 
7
7
  /**
@@ -20,7 +20,10 @@ function Edit( props ) {
20
20
  href="#comment-reply-pseudo-link"
21
21
  onClick={ ( event ) => event.preventDefault() }
22
22
  >
23
- { __( 'Reply' ) }
23
+ {
24
+ /* translators: Comment reply button text. */
25
+ _x( 'Reply', 'verb' )
26
+ }
24
27
  </a>
25
28
  </div>
26
29
  </>
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { store as blockEditorStore } from '@wordpress/block-editor';
5
- import { __, sprintf } from '@wordpress/i18n';
5
+ import { __, _x, sprintf } from '@wordpress/i18n';
6
6
  import { useSelect } from '@wordpress/data';
7
7
  import { useEntityProp } from '@wordpress/core-data';
8
8
  import { createInterpolateElement } from '@wordpress/element';
@@ -109,7 +109,10 @@ export default function PostCommentsPlaceholder( { postType, postId } ) {
109
109
  'Reply to A WordPress Commenter'
110
110
  ) }
111
111
  >
112
- { __( 'Reply' ) }
112
+ {
113
+ /* translators: Comment reply button text. */
114
+ _x( 'Reply', 'verb' )
115
+ }
113
116
  </a>
114
117
  </div>
115
118
  </article>
@@ -7,8 +7,13 @@ import clsx from 'clsx';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { useEntityProp, store as coreStore } from '@wordpress/core-data';
10
- import { useEffect, useMemo, useRef } from '@wordpress/element';
11
- import { Placeholder, Spinner } from '@wordpress/components';
10
+ import {
11
+ useEffect,
12
+ useLayoutEffect,
13
+ useMemo,
14
+ useRef,
15
+ } from '@wordpress/element';
16
+ import { Placeholder, SandBox, Spinner } from '@wordpress/components';
12
17
  import { compose, useResizeObserver } from '@wordpress/compose';
13
18
  import {
14
19
  withColors,
@@ -49,7 +54,7 @@ import {
49
54
  DEFAULT_OVERLAY_COLOR,
50
55
  } from './color-utils';
51
56
  import { DEFAULT_MEDIA_SIZE_SLUG } from '../constants';
52
- import { getIframeSrc, getBackgroundVideoSrc } from '../embed-video-utils';
57
+ import { getBackgroundEmbedHtml } from '../embed-video-utils';
53
58
 
54
59
  function getInnerBlocksTemplate( attributes ) {
55
60
  return [
@@ -121,6 +126,14 @@ function CoverEdit( {
121
126
 
122
127
  const { __unstableMarkNextChangeAsNotPersistent } =
123
128
  useDispatch( blockEditorStore );
129
+
130
+ // Ref to access latest values after async operations (e.g. getMediaColor),
131
+ // avoiding stale values that could overwrite concurrent remote changes.
132
+ const propsRef = useRef( { attributes, overlayColor } );
133
+ useLayoutEffect( () => {
134
+ propsRef.current = { attributes, overlayColor };
135
+ } );
136
+
124
137
  const { media } = useSelect(
125
138
  ( select ) => {
126
139
  return {
@@ -155,26 +168,37 @@ function CoverEdit( {
155
168
 
156
169
  const averageBackgroundColor = await getMediaColor( mediaUrl );
157
170
 
158
- let newOverlayColor = overlayColor.color;
159
- if ( ! isUserOverlayColor ) {
171
+ // Read latest values after await to avoid stale closures.
172
+ const { attributes: currentAttrs, overlayColor: currentOverlay } =
173
+ propsRef.current;
174
+
175
+ let newOverlayColor = currentOverlay.color;
176
+ if ( ! currentAttrs.isUserOverlayColor ) {
160
177
  newOverlayColor = averageBackgroundColor;
161
178
  __unstableMarkNextChangeAsNotPersistent();
162
179
  setOverlayColor( newOverlayColor );
163
180
  }
164
181
 
165
182
  const newIsDark = compositeIsDark(
166
- dimRatio,
183
+ currentAttrs.dimRatio,
167
184
  newOverlayColor,
168
185
  averageBackgroundColor
169
186
  );
170
187
  __unstableMarkNextChangeAsNotPersistent();
171
188
  setAttributes( {
172
189
  isDark: newIsDark,
173
- isUserOverlayColor: isUserOverlayColor || false,
190
+ isUserOverlayColor: currentAttrs.isUserOverlayColor || false,
174
191
  } );
175
192
  } )();
176
193
  // Update the block only when the featured image changes.
177
- }, [ mediaUrl ] );
194
+ // The other dependencies are stable references (dispatch actions / setters).
195
+ }, [
196
+ mediaUrl,
197
+ __unstableMarkNextChangeAsNotPersistent,
198
+ setAttributes,
199
+ setOverlayColor,
200
+ useFeaturedImage,
201
+ ] );
178
202
 
179
203
  // instead of destructuring the attributes
180
204
  // we define the url and background type
@@ -201,8 +225,12 @@ function CoverEdit( {
201
225
  isImage ? newMedia?.url : undefined
202
226
  );
203
227
 
204
- let newOverlayColor = overlayColor.color;
205
- if ( ! isUserOverlayColor ) {
228
+ // Read latest values to avoid stale closures.
229
+ const { attributes: currentAttrs, overlayColor: currentOverlay } =
230
+ propsRef.current;
231
+
232
+ let newOverlayColor = currentOverlay.color;
233
+ if ( ! currentAttrs.isUserOverlayColor ) {
206
234
  newOverlayColor = averageBackgroundColor;
207
235
  setOverlayColor( newOverlayColor );
208
236
 
@@ -214,7 +242,9 @@ function CoverEdit( {
214
242
  // to avoid resetting to 50 if it has been explicitly set to 100.
215
243
  // See issue #52835 for context.
216
244
  const newDimRatio =
217
- originalUrl === undefined && dimRatio === 100 ? 50 : dimRatio;
245
+ currentAttrs.url === undefined && currentAttrs.dimRatio === 100
246
+ ? 50
247
+ : currentAttrs.dimRatio;
218
248
 
219
249
  const newIsDark = compositeIsDark(
220
250
  newDimRatio,
@@ -256,7 +286,7 @@ function CoverEdit( {
256
286
  useFeaturedImage: undefined,
257
287
  dimRatio: newDimRatio,
258
288
  isDark: newIsDark,
259
- isUserOverlayColor: isUserOverlayColor || false,
289
+ isUserOverlayColor: currentAttrs.isUserOverlayColor || false,
260
290
  } );
261
291
  };
262
292
 
@@ -290,8 +320,12 @@ function CoverEdit( {
290
320
 
291
321
  const onSetOverlayColor = async ( newOverlayColor ) => {
292
322
  const averageBackgroundColor = await getMediaColor( url );
323
+
324
+ // Read latest dimRatio after await to avoid stale closure.
325
+ const { attributes: currentAttrs } = propsRef.current;
326
+
293
327
  const newIsDark = compositeIsDark(
294
- dimRatio,
328
+ currentAttrs.dimRatio,
295
329
  newOverlayColor,
296
330
  averageBackgroundColor
297
331
  );
@@ -309,9 +343,13 @@ function CoverEdit( {
309
343
 
310
344
  const onUpdateDimRatio = async ( newDimRatio ) => {
311
345
  const averageBackgroundColor = await getMediaColor( url );
346
+
347
+ // Read latest overlayColor after await to avoid stale closure.
348
+ const { overlayColor: currentOverlay } = propsRef.current;
349
+
312
350
  const newIsDark = compositeIsDark(
313
351
  newDimRatio,
314
- overlayColor.color,
352
+ currentOverlay.color,
315
353
  averageBackgroundColor
316
354
  );
317
355
 
@@ -365,23 +403,15 @@ function CoverEdit( {
365
403
  [ url, backgroundType ]
366
404
  );
367
405
 
368
- // Compute embedSrc on-the-fly from embed preview for editor display
369
- const embedSrc = useMemo( () => {
406
+ // Compute embed HTML for editor display via SandBox
407
+ const embedHtml = useMemo( () => {
370
408
  if (
371
409
  backgroundType !== EMBED_VIDEO_BACKGROUND_TYPE ||
372
410
  ! embedPreview?.html
373
411
  ) {
374
412
  return null;
375
413
  }
376
-
377
- // Extract iframe src from embed HTML
378
- const iframeSrc = getIframeSrc( embedPreview.html );
379
- if ( ! iframeSrc ) {
380
- return null;
381
- }
382
-
383
- // Modify the src to add background video parameters (provider auto-detected)
384
- return getBackgroundVideoSrc( iframeSrc );
414
+ return getBackgroundEmbedHtml( embedPreview.html );
385
415
  }, [ embedPreview, backgroundType ] );
386
416
 
387
417
  const isUploadingMedia = isTemporaryMedia( id, url );
@@ -477,11 +507,15 @@ function CoverEdit( {
477
507
  ? await getMediaColor( mediaUrl )
478
508
  : DEFAULT_BACKGROUND_COLOR;
479
509
 
480
- const newOverlayColor = ! isUserOverlayColor
510
+ // Read latest values after await to avoid stale closures.
511
+ const { attributes: currentAttrs, overlayColor: currentOverlay } =
512
+ propsRef.current;
513
+
514
+ const newOverlayColor = ! currentAttrs.isUserOverlayColor
481
515
  ? averageBackgroundColor
482
- : overlayColor.color;
516
+ : currentOverlay.color;
483
517
 
484
- if ( ! isUserOverlayColor ) {
518
+ if ( ! currentAttrs.isUserOverlayColor ) {
485
519
  if ( newUseFeaturedImage ) {
486
520
  setOverlayColor( newOverlayColor );
487
521
  } else {
@@ -492,7 +526,8 @@ function CoverEdit( {
492
526
  __unstableMarkNextChangeAsNotPersistent();
493
527
  }
494
528
 
495
- const newDimRatio = dimRatio === 100 ? 50 : dimRatio;
529
+ const newDimRatio =
530
+ currentAttrs.dimRatio === 100 ? 50 : currentAttrs.dimRatio;
496
531
  const newIsDark = compositeIsDark(
497
532
  newDimRatio,
498
533
  newOverlayColor,
@@ -668,21 +703,23 @@ function CoverEdit( {
668
703
  style={ mediaStyle }
669
704
  />
670
705
  ) }
671
- { isEmbedVideoBackground && embedSrc && (
706
+ { isEmbedVideoBackground && embedHtml && (
672
707
  <div
673
708
  ref={ mediaElement }
674
709
  className="wp-block-cover__video-background wp-block-cover__embed-background"
675
710
  style={ mediaStyle }
676
711
  >
677
- <iframe
678
- src={ embedSrc }
712
+ <SandBox
713
+ allowSameOrigin
714
+ html={ embedHtml }
679
715
  title="Background video"
680
- frameBorder="0"
681
- allow="autoplay; fullscreen"
716
+ styles={ [
717
+ 'iframe{position:fixed;top:0;left:0;width:100%;height:100%;}',
718
+ ] }
682
719
  />
683
720
  </div>
684
721
  ) }
685
- { isEmbedVideoBackground && ! embedSrc && isFetchingEmbed && (
722
+ { isEmbedVideoBackground && ! embedHtml && isFetchingEmbed && (
686
723
  <Spinner />
687
724
  ) }
688
725