@wordpress/block-library 9.38.1-next.v.0 → 9.39.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 (273) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/button/index.cjs +3 -0
  3. package/build/button/index.cjs.map +2 -2
  4. package/build/comments-title/block.json +1 -3
  5. package/build/comments-title/deprecated.cjs +148 -24
  6. package/build/comments-title/deprecated.cjs.map +3 -3
  7. package/build/comments-title/edit.cjs +17 -31
  8. package/build/comments-title/edit.cjs.map +3 -3
  9. package/build/cover/edit/block-controls.cjs +10 -2
  10. package/build/cover/edit/block-controls.cjs.map +2 -2
  11. package/build/cover/edit/embed-video-url-input.cjs +6 -2
  12. package/build/cover/edit/embed-video-url-input.cjs.map +2 -2
  13. package/build/details/index.cjs +3 -0
  14. package/build/details/index.cjs.map +2 -2
  15. package/build/heading/index.cjs +3 -0
  16. package/build/heading/index.cjs.map +2 -2
  17. package/build/image/index.cjs +1 -1
  18. package/build/image/index.cjs.map +2 -2
  19. package/build/index.cjs +6 -0
  20. package/build/index.cjs.map +2 -2
  21. package/build/list-item/index.cjs +3 -0
  22. package/build/list-item/index.cjs.map +2 -2
  23. package/build/more/index.cjs +1 -1
  24. package/build/more/index.cjs.map +2 -2
  25. package/build/navigation/edit/index.cjs +23 -2
  26. package/build/navigation/edit/index.cjs.map +2 -2
  27. package/build/navigation-submenu/index.cjs +2 -2
  28. package/build/navigation-submenu/index.cjs.map +2 -2
  29. package/build/paragraph/index.cjs +1 -1
  30. package/build/paragraph/index.cjs.map +2 -2
  31. package/build/post-excerpt/edit.cjs +1 -1
  32. package/build/post-excerpt/edit.cjs.map +2 -2
  33. package/build/tab/add-tab-toolbar-control.cjs +31 -9
  34. package/build/tab/add-tab-toolbar-control.cjs.map +2 -2
  35. package/build/tab/block.json +18 -4
  36. package/build/tab/controls.cjs +4 -8
  37. package/build/tab/controls.cjs.map +3 -3
  38. package/build/tab/edit.cjs +46 -118
  39. package/build/tab/edit.cjs.map +3 -3
  40. package/build/tab/remove-tab-toolbar-control.cjs +91 -0
  41. package/build/tab/remove-tab-toolbar-control.cjs.map +7 -0
  42. package/build/tab/save.cjs +2 -2
  43. package/build/tab/save.cjs.map +2 -2
  44. package/build/tab-panels/block.json +70 -0
  45. package/build/tab-panels/edit.cjs +63 -0
  46. package/build/tab-panels/edit.cjs.map +7 -0
  47. package/build/tab-panels/icon.cjs +29 -0
  48. package/build/tab-panels/icon.cjs.map +7 -0
  49. package/build/tab-panels/index.cjs +58 -0
  50. package/build/tab-panels/index.cjs.map +7 -0
  51. package/build/tab-panels/save.cjs +33 -0
  52. package/build/tab-panels/save.cjs.map +7 -0
  53. package/build/tabs/block.json +61 -90
  54. package/build/tabs/controls.cjs +19 -221
  55. package/build/tabs/controls.cjs.map +3 -3
  56. package/build/tabs/deprecated.cjs +179 -0
  57. package/build/tabs/deprecated.cjs.map +7 -0
  58. package/build/tabs/edit.cjs +84 -62
  59. package/build/tabs/edit.cjs.map +3 -3
  60. package/build/tabs/index.cjs +3 -1
  61. package/build/tabs/index.cjs.map +3 -3
  62. package/build/tabs/save.cjs +6 -9
  63. package/build/tabs/save.cjs.map +2 -2
  64. package/build/tabs-menu/block.json +77 -0
  65. package/build/tabs-menu/edit.cjs +204 -0
  66. package/build/tabs-menu/edit.cjs.map +7 -0
  67. package/build/tabs-menu/icon.cjs +29 -0
  68. package/build/tabs-menu/icon.cjs.map +7 -0
  69. package/build/tabs-menu/index.cjs +58 -0
  70. package/build/tabs-menu/index.cjs.map +7 -0
  71. package/build/tabs-menu/save.cjs +35 -0
  72. package/build/tabs-menu/save.cjs.map +7 -0
  73. package/build/tabs-menu-item/block.json +98 -0
  74. package/build/tabs-menu-item/controls.cjs +247 -0
  75. package/build/tabs-menu-item/controls.cjs.map +7 -0
  76. package/build/tabs-menu-item/edit.cjs +272 -0
  77. package/build/tabs-menu-item/edit.cjs.map +7 -0
  78. package/build/tabs-menu-item/icon.cjs +29 -0
  79. package/build/tabs-menu-item/icon.cjs.map +7 -0
  80. package/build/tabs-menu-item/index.cjs +58 -0
  81. package/build/tabs-menu-item/index.cjs.map +7 -0
  82. package/build/tabs-menu-item/save.cjs +50 -0
  83. package/build/tabs-menu-item/save.cjs.map +7 -0
  84. package/build/template-part/edit/index.cjs +1 -1
  85. package/build/template-part/edit/index.cjs.map +2 -2
  86. package/build/utils/caption.cjs +4 -6
  87. package/build/utils/caption.cjs.map +3 -3
  88. package/build/video/edit.cjs +4 -2
  89. package/build/video/edit.cjs.map +2 -2
  90. package/build-module/button/index.mjs +3 -0
  91. package/build-module/button/index.mjs.map +2 -2
  92. package/build-module/comments-title/block.json +1 -3
  93. package/build-module/comments-title/deprecated.mjs +148 -24
  94. package/build-module/comments-title/deprecated.mjs.map +2 -2
  95. package/build-module/comments-title/edit.mjs +17 -32
  96. package/build-module/comments-title/edit.mjs.map +2 -2
  97. package/build-module/cover/edit/block-controls.mjs +11 -3
  98. package/build-module/cover/edit/block-controls.mjs.map +2 -2
  99. package/build-module/cover/edit/embed-video-url-input.mjs +6 -2
  100. package/build-module/cover/edit/embed-video-url-input.mjs.map +2 -2
  101. package/build-module/details/index.mjs +3 -0
  102. package/build-module/details/index.mjs.map +2 -2
  103. package/build-module/heading/index.mjs +3 -0
  104. package/build-module/heading/index.mjs.map +2 -2
  105. package/build-module/image/index.mjs +1 -1
  106. package/build-module/image/index.mjs.map +2 -2
  107. package/build-module/index.mjs +6 -0
  108. package/build-module/index.mjs.map +2 -2
  109. package/build-module/list-item/index.mjs +3 -0
  110. package/build-module/list-item/index.mjs.map +2 -2
  111. package/build-module/more/index.mjs +1 -1
  112. package/build-module/more/index.mjs.map +2 -2
  113. package/build-module/navigation/edit/index.mjs +23 -2
  114. package/build-module/navigation/edit/index.mjs.map +2 -2
  115. package/build-module/navigation-submenu/index.mjs +2 -2
  116. package/build-module/navigation-submenu/index.mjs.map +2 -2
  117. package/build-module/paragraph/index.mjs +1 -1
  118. package/build-module/paragraph/index.mjs.map +2 -2
  119. package/build-module/post-excerpt/edit.mjs +1 -1
  120. package/build-module/post-excerpt/edit.mjs.map +2 -2
  121. package/build-module/tab/add-tab-toolbar-control.mjs +32 -10
  122. package/build-module/tab/add-tab-toolbar-control.mjs.map +2 -2
  123. package/build-module/tab/block.json +18 -4
  124. package/build-module/tab/controls.mjs +4 -8
  125. package/build-module/tab/controls.mjs.map +2 -2
  126. package/build-module/tab/edit.mjs +48 -128
  127. package/build-module/tab/edit.mjs.map +2 -2
  128. package/build-module/tab/remove-tab-toolbar-control.mjs +73 -0
  129. package/build-module/tab/remove-tab-toolbar-control.mjs.map +7 -0
  130. package/build-module/tab/save.mjs +2 -2
  131. package/build-module/tab/save.mjs.map +2 -2
  132. package/build-module/tab-panels/block.json +70 -0
  133. package/build-module/tab-panels/edit.mjs +36 -0
  134. package/build-module/tab-panels/edit.mjs.map +7 -0
  135. package/build-module/tab-panels/icon.mjs +8 -0
  136. package/build-module/tab-panels/icon.mjs.map +7 -0
  137. package/build-module/tab-panels/index.mjs +20 -0
  138. package/build-module/tab-panels/index.mjs.map +7 -0
  139. package/build-module/tab-panels/save.mjs +12 -0
  140. package/build-module/tab-panels/save.mjs.map +7 -0
  141. package/build-module/tabs/block.json +61 -90
  142. package/build-module/tabs/controls.mjs +21 -228
  143. package/build-module/tabs/controls.mjs.map +2 -2
  144. package/build-module/tabs/deprecated.mjs +158 -0
  145. package/build-module/tabs/deprecated.mjs.map +7 -0
  146. package/build-module/tabs/edit.mjs +87 -64
  147. package/build-module/tabs/edit.mjs.map +2 -2
  148. package/build-module/tabs/index.mjs +3 -1
  149. package/build-module/tabs/index.mjs.map +2 -2
  150. package/build-module/tabs/save.mjs +7 -10
  151. package/build-module/tabs/save.mjs.map +2 -2
  152. package/build-module/tabs-menu/block.json +77 -0
  153. package/build-module/tabs-menu/edit.mjs +186 -0
  154. package/build-module/tabs-menu/edit.mjs.map +7 -0
  155. package/build-module/tabs-menu/icon.mjs +8 -0
  156. package/build-module/tabs-menu/icon.mjs.map +7 -0
  157. package/build-module/tabs-menu/index.mjs +20 -0
  158. package/build-module/tabs-menu/index.mjs.map +7 -0
  159. package/build-module/tabs-menu/save.mjs +14 -0
  160. package/build-module/tabs-menu/save.mjs.map +7 -0
  161. package/build-module/tabs-menu-item/block.json +98 -0
  162. package/build-module/tabs-menu-item/controls.mjs +227 -0
  163. package/build-module/tabs-menu-item/controls.mjs.map +7 -0
  164. package/build-module/tabs-menu-item/edit.mjs +253 -0
  165. package/build-module/tabs-menu-item/edit.mjs.map +7 -0
  166. package/build-module/tabs-menu-item/icon.mjs +8 -0
  167. package/build-module/tabs-menu-item/icon.mjs.map +7 -0
  168. package/build-module/tabs-menu-item/index.mjs +20 -0
  169. package/build-module/tabs-menu-item/index.mjs.map +7 -0
  170. package/build-module/tabs-menu-item/save.mjs +29 -0
  171. package/build-module/tabs-menu-item/save.mjs.map +7 -0
  172. package/build-module/template-part/edit/index.mjs +1 -1
  173. package/build-module/template-part/edit/index.mjs.map +2 -2
  174. package/build-module/utils/caption.mjs +1 -3
  175. package/build-module/utils/caption.mjs.map +2 -2
  176. package/build-module/video/edit.mjs +4 -2
  177. package/build-module/video/edit.mjs.map +2 -2
  178. package/build-style/editor-rtl.css +16 -21
  179. package/build-style/editor.css +16 -21
  180. package/build-style/gallery/style-rtl.css +1 -1
  181. package/build-style/gallery/style.css +1 -1
  182. package/build-style/style-rtl.css +42 -153
  183. package/build-style/style.css +42 -153
  184. package/build-style/tab/style-rtl.css +7 -1
  185. package/build-style/tab/style.css +7 -1
  186. package/build-style/tab-panels/style-rtl.css +4 -0
  187. package/build-style/tab-panels/style.css +4 -0
  188. package/build-style/tabs/style-rtl.css +1 -167
  189. package/build-style/tabs/style.css +1 -167
  190. package/build-style/tabs-menu/editor-rtl.css +4 -0
  191. package/build-style/tabs-menu/editor.css +4 -0
  192. package/build-style/tabs-menu/style-rtl.css +8 -0
  193. package/build-style/tabs-menu/style.css +8 -0
  194. package/build-style/tabs-menu-item/editor-rtl.css +16 -0
  195. package/build-style/tabs-menu-item/editor.css +16 -0
  196. package/build-style/tabs-menu-item/style-rtl.css +34 -0
  197. package/build-style/tabs-menu-item/style.css +34 -0
  198. package/package.json +37 -37
  199. package/src/button/index.js +4 -0
  200. package/src/comments-title/block.json +1 -3
  201. package/src/comments-title/deprecated.js +153 -23
  202. package/src/comments-title/edit.js +9 -25
  203. package/src/cover/edit/block-controls.js +14 -3
  204. package/src/cover/edit/embed-video-url-input.js +6 -2
  205. package/src/details/index.js +4 -0
  206. package/src/editor.scss +2 -1
  207. package/src/gallery/style.scss +1 -1
  208. package/src/heading/index.js +4 -0
  209. package/src/image/index.js +4 -1
  210. package/src/index.js +6 -0
  211. package/src/list-item/index.js +4 -0
  212. package/src/more/index.js +4 -1
  213. package/src/navigation/edit/index.js +28 -4
  214. package/src/navigation-submenu/index.js +6 -3
  215. package/src/paragraph/index.js +4 -1
  216. package/src/post-excerpt/edit.js +1 -1
  217. package/src/post-excerpt/index.php +39 -16
  218. package/src/style.scss +3 -0
  219. package/src/tab/add-tab-toolbar-control.js +36 -11
  220. package/src/tab/block.json +18 -4
  221. package/src/tab/controls.js +4 -5
  222. package/src/tab/edit.js +75 -150
  223. package/src/tab/index.php +5 -63
  224. package/src/tab/remove-tab-toolbar-control.js +103 -0
  225. package/src/tab/save.js +1 -3
  226. package/src/tab/style.scss +8 -1
  227. package/src/tab-panels/block.json +70 -0
  228. package/src/tab-panels/edit.js +44 -0
  229. package/src/tab-panels/icon.js +10 -0
  230. package/src/tab-panels/index.js +21 -0
  231. package/src/tab-panels/save.js +11 -0
  232. package/src/tab-panels/style.scss +4 -0
  233. package/src/tabs/block.json +61 -90
  234. package/src/tabs/controls.js +7 -221
  235. package/src/tabs/deprecated.js +214 -0
  236. package/src/tabs/edit.js +108 -68
  237. package/src/tabs/index.js +2 -0
  238. package/src/tabs/index.php +86 -191
  239. package/src/tabs/save.js +6 -13
  240. package/src/tabs/style.scss +1 -187
  241. package/src/tabs-menu/block.json +77 -0
  242. package/src/tabs-menu/edit.js +251 -0
  243. package/src/tabs-menu/editor.scss +6 -0
  244. package/src/tabs-menu/icon.js +10 -0
  245. package/src/tabs-menu/index.js +21 -0
  246. package/src/tabs-menu/index.php +74 -0
  247. package/src/tabs-menu/save.js +18 -0
  248. package/src/tabs-menu/style.scss +8 -0
  249. package/src/tabs-menu-item/block.json +98 -0
  250. package/src/tabs-menu-item/controls.js +262 -0
  251. package/src/tabs-menu-item/edit.js +322 -0
  252. package/src/tabs-menu-item/editor.scss +20 -0
  253. package/src/tabs-menu-item/icon.js +10 -0
  254. package/src/tabs-menu-item/index.js +21 -0
  255. package/src/tabs-menu-item/index.php +82 -0
  256. package/src/tabs-menu-item/save.js +44 -0
  257. package/src/tabs-menu-item/style.scss +42 -0
  258. package/src/template-part/edit/index.js +1 -3
  259. package/src/utils/caption.js +1 -7
  260. package/src/video/edit.js +4 -2
  261. package/build/tab/tabs-list.cjs +0 -132
  262. package/build/tab/tabs-list.cjs.map +0 -7
  263. package/build/tabs/style-engine.cjs +0 -119
  264. package/build/tabs/style-engine.cjs.map +0 -7
  265. package/build-module/tab/tabs-list.mjs +0 -101
  266. package/build-module/tab/tabs-list.mjs.map +0 -7
  267. package/build-module/tabs/style-engine.mjs +0 -101
  268. package/build-module/tabs/style-engine.mjs.map +0 -7
  269. package/build-style/tabs/editor-rtl.css +0 -26
  270. package/build-style/tabs/editor.css +0 -26
  271. package/src/tab/tabs-list.js +0 -122
  272. package/src/tabs/editor.scss +0 -30
  273. package/src/tabs/style-engine.js +0 -164
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/tabs/style-engine.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalGetGapCSSValue as getGapCSSValue,\n\tuseStyleOverride,\n} from '@wordpress/block-editor';\n\n/**\n * Gets the gap styles for the tab block.\n * @param {Object} props\n * @param {Object} props.attributes Block attributes\n * @return {Object} CSS custom properties for gap styles\n */\nfunction getGapStyles( { attributes } ) {\n\tconst { style, orientation } = attributes || {};\n\tconst { spacing } = style || {};\n\tconst { blockGap } = spacing || {};\n\t//--wp--style--tabs-list-gap-default should be used by themes that want to set a default\n\t// gap on the tabs list.\n\tconst fallbackValue = `var( --wp--style--tabs-gap-default, var( --wp--style--block-gap, 0.5em ) )`;\n\tlet listGapValue = fallbackValue;\n\tlet gapValue = fallbackValue;\n\n\t// Check for a value.\n\tif ( !! blockGap ) {\n\t\tlistGapValue =\n\t\t\ttypeof blockGap === 'string'\n\t\t\t\t? getGapCSSValue( blockGap )\n\t\t\t\t: getGapCSSValue( blockGap?.left ) || fallbackValue;\n\t\tgapValue =\n\t\t\ttypeof blockGap === 'string'\n\t\t\t\t? getGapCSSValue( blockGap )\n\t\t\t\t: getGapCSSValue( blockGap?.top ) || fallbackValue;\n\t}\n\n\tif ( orientation === 'vertical' ) {\n\t\tconst _listGapValue = listGapValue;\n\t\tconst _gapValue = gapValue;\n\t\tlistGapValue = _gapValue;\n\t\tgapValue = _listGapValue;\n\t}\n\n\t// The unstable tabs list gap calculation requires a real value (such as `0px`) and not `0`.\n\tconst gapMap = {\n\t\t'--wp--style--unstable-tabs-list-gap':\n\t\t\tlistGapValue === '0' ? '0px' : listGapValue,\n\t\t'--wp--style--unstable-tabs-gap': gapValue,\n\t};\n\n\treturn gapMap;\n}\n\n/**\n * Gets the color styles for the tab block.\n *\n * @param {Object} props\n * @param {Object} props.attributes Block attributes\n * @return {Object} CSS custom properties for color styles\n */\nfunction getColorStyles( { attributes } ) {\n\tconst {\n\t\tcustomTabInactiveColor,\n\t\tcustomTabHoverColor,\n\t\tcustomTabActiveColor,\n\t\tcustomTabTextColor,\n\t\tcustomTabActiveTextColor,\n\t\tcustomTabHoverTextColor,\n\t} = attributes || {};\n\n\t// Helper to normalize color objects (preset { slug } vs direct value).\n\tfunction getColorValue( color ) {\n\t\tif ( ! color ) {\n\t\t\treturn null;\n\t\t}\n\t\tif ( typeof color === 'object' && color.slug ) {\n\t\t\treturn `var(--wp--preset--color--${ color.slug })`;\n\t\t}\n\t\treturn color;\n\t}\n\n\tconst colorVarMap = {\n\t\t'--custom-tab-inactive-color': getColorValue( customTabInactiveColor ),\n\t\t'--custom-tab-active-color': getColorValue( customTabActiveColor ),\n\t\t'--custom-tab-hover-color': getColorValue( customTabHoverColor ),\n\t\t'--custom-tab-text-color': getColorValue( customTabTextColor ),\n\t\t'--custom-tab-active-text-color': getColorValue(\n\t\t\tcustomTabActiveTextColor\n\t\t),\n\t\t'--custom-tab-hover-text-color': getColorValue(\n\t\t\tcustomTabHoverTextColor\n\t\t),\n\t};\n\n\treturn colorVarMap;\n}\n\n/**\n * Gets the border styles for the tab block.\n *\n * @param {Object} props\n * @param {Object} props.attributes Block attributes\n * @return {Object} CSS custom properties for border styles\n */\nfunction getBorderStyles( { attributes } ) {\n\tconst { radius } = attributes?.style?.border || {};\n\n\tif ( ! radius ) {\n\t\treturn {};\n\t}\n\n\tlet radiusValue = radius;\n\n\tif ( typeof radius === 'object' ) {\n\t\tconst {\n\t\t\ttopLeft = '0',\n\t\t\ttopRight = '0',\n\t\t\tbottomRight = '0',\n\t\t\tbottomLeft = '0',\n\t\t} = radius;\n\t\tradiusValue = `${ topLeft } ${ topRight } ${ bottomRight } ${ bottomLeft }`;\n\t}\n\n\tconst borderMap = {\n\t\t'--tab-border-radius': radiusValue,\n\t};\n\n\treturn borderMap;\n}\n\n/**\n * Injects color CSS custom properties for the tabs block, mirroring the pattern\n * used by gap-styles (scoped to `#block-{ clientId }`). This replaces the prior\n * inline-style object return value approach so that these values participate in\n * style engine cascade like other dynamic style overrides.\n *\n * @param {Object} props\n * @param {Object} props.attributes Block attributes\n * @param {string} props.clientId Block client ID\n * @return {null} No UI output\n */\nexport default function StyleEngine( { attributes, clientId } ) {\n\tconst gapVarMap = getGapStyles( { attributes } );\n\tconst colorVarMap = getColorStyles( { attributes } );\n\tconst borderVarMap = getBorderStyles( { attributes } );\n\n\tconst styleVarMap = {\n\t\t...gapVarMap,\n\t\t...colorVarMap,\n\t\t...borderVarMap,\n\t};\n\n\t// Build scoped CSS only for defined values to avoid unnecessary empty declarations.\n\tconst declarations = Object.entries( styleVarMap )\n\t\t.filter( ( [ , value ] ) => !! value )\n\t\t.map( ( [ name, value ] ) => `\\t${ name }: ${ value };` )\n\t\t.join( '\\n' );\n\n\tuseStyleOverride( {\n\t\tcss: clientId ? `#block-${ clientId } {\\n${ declarations }\\n}` : '',\n\t} );\n\n\treturn null;\n}\n"],
5
- "mappings": ";AAGA;AAAA,EACC,gCAAgC;AAAA,EAChC;AAAA,OACM;AAQP,SAAS,aAAc,EAAE,WAAW,GAAI;AACvC,QAAM,EAAE,OAAO,YAAY,IAAI,cAAc,CAAC;AAC9C,QAAM,EAAE,QAAQ,IAAI,SAAS,CAAC;AAC9B,QAAM,EAAE,SAAS,IAAI,WAAW,CAAC;AAGjC,QAAM,gBAAgB;AACtB,MAAI,eAAe;AACnB,MAAI,WAAW;AAGf,MAAK,CAAC,CAAE,UAAW;AAClB,mBACC,OAAO,aAAa,WACjB,eAAgB,QAAS,IACzB,eAAgB,UAAU,IAAK,KAAK;AACxC,eACC,OAAO,aAAa,WACjB,eAAgB,QAAS,IACzB,eAAgB,UAAU,GAAI,KAAK;AAAA,EACxC;AAEA,MAAK,gBAAgB,YAAa;AACjC,UAAM,gBAAgB;AACtB,UAAM,YAAY;AAClB,mBAAe;AACf,eAAW;AAAA,EACZ;AAGA,QAAM,SAAS;AAAA,IACd,uCACC,iBAAiB,MAAM,QAAQ;AAAA,IAChC,kCAAkC;AAAA,EACnC;AAEA,SAAO;AACR;AASA,SAAS,eAAgB,EAAE,WAAW,GAAI;AACzC,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI,cAAc,CAAC;AAGnB,WAAS,cAAe,OAAQ;AAC/B,QAAK,CAAE,OAAQ;AACd,aAAO;AAAA,IACR;AACA,QAAK,OAAO,UAAU,YAAY,MAAM,MAAO;AAC9C,aAAO,4BAA6B,MAAM,IAAK;AAAA,IAChD;AACA,WAAO;AAAA,EACR;AAEA,QAAM,cAAc;AAAA,IACnB,+BAA+B,cAAe,sBAAuB;AAAA,IACrE,6BAA6B,cAAe,oBAAqB;AAAA,IACjE,4BAA4B,cAAe,mBAAoB;AAAA,IAC/D,2BAA2B,cAAe,kBAAmB;AAAA,IAC7D,kCAAkC;AAAA,MACjC;AAAA,IACD;AAAA,IACA,iCAAiC;AAAA,MAChC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AASA,SAAS,gBAAiB,EAAE,WAAW,GAAI;AAC1C,QAAM,EAAE,OAAO,IAAI,YAAY,OAAO,UAAU,CAAC;AAEjD,MAAK,CAAE,QAAS;AACf,WAAO,CAAC;AAAA,EACT;AAEA,MAAI,cAAc;AAElB,MAAK,OAAO,WAAW,UAAW;AACjC,UAAM;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,cAAc;AAAA,MACd,aAAa;AAAA,IACd,IAAI;AACJ,kBAAc,GAAI,OAAQ,IAAK,QAAS,IAAK,WAAY,IAAK,UAAW;AAAA,EAC1E;AAEA,QAAM,YAAY;AAAA,IACjB,uBAAuB;AAAA,EACxB;AAEA,SAAO;AACR;AAae,SAAR,YAA8B,EAAE,YAAY,SAAS,GAAI;AAC/D,QAAM,YAAY,aAAc,EAAE,WAAW,CAAE;AAC/C,QAAM,cAAc,eAAgB,EAAE,WAAW,CAAE;AACnD,QAAM,eAAe,gBAAiB,EAAE,WAAW,CAAE;AAErD,QAAM,cAAc;AAAA,IACnB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACJ;AAGA,QAAM,eAAe,OAAO,QAAS,WAAY,EAC/C,OAAQ,CAAE,CAAE,EAAE,KAAM,MAAO,CAAC,CAAE,KAAM,EACpC,IAAK,CAAE,CAAE,MAAM,KAAM,MAAO,IAAM,IAAK,KAAM,KAAM,GAAI,EACvD,KAAM,IAAK;AAEb,mBAAkB;AAAA,IACjB,KAAK,WAAW,UAAW,QAAS;AAAA,EAAQ,YAAa;AAAA,KAAQ;AAAA,EAClE,CAAE;AAEF,SAAO;AACR;",
6
- "names": []
7
- }
@@ -1,26 +0,0 @@
1
- .wp-block-tabs.wp-block .wp-block-tabs__tab-item__inserter {
2
- height: 100%;
3
- display: flex;
4
- align-items: center;
5
- }
6
- .wp-block-tabs.wp-block .wp-block-tab.wp-block {
7
- display: flex;
8
- flex-direction: column;
9
- gap: var(--wp--style--unstable-tabs-gap);
10
- }
11
- .wp-block-tabs.wp-block .wp-block-tab.wp-block > section {
12
- flex-grow: 1;
13
- }
14
- .wp-block-tabs.wp-block .wp-block-tab.wp-block > section > .wp-block:first-child {
15
- margin-top: 0;
16
- }
17
- .wp-block-tabs.wp-block .wp-block-tab.wp-block > section > .wp-block:last-child {
18
- margin-bottom: 0;
19
- }
20
- .wp-block-tabs.wp-block.is-vertical > .wp-block-tab.wp-block {
21
- flex-direction: row;
22
- }
23
- .wp-block-tabs.wp-block.is-vertical .wp-block-tabs__tab-item__inserter {
24
- align-items: flex-start;
25
- margin-left: -1px;
26
- }
@@ -1,26 +0,0 @@
1
- .wp-block-tabs.wp-block .wp-block-tabs__tab-item__inserter {
2
- height: 100%;
3
- display: flex;
4
- align-items: center;
5
- }
6
- .wp-block-tabs.wp-block .wp-block-tab.wp-block {
7
- display: flex;
8
- flex-direction: column;
9
- gap: var(--wp--style--unstable-tabs-gap);
10
- }
11
- .wp-block-tabs.wp-block .wp-block-tab.wp-block > section {
12
- flex-grow: 1;
13
- }
14
- .wp-block-tabs.wp-block .wp-block-tab.wp-block > section > .wp-block:first-child {
15
- margin-top: 0;
16
- }
17
- .wp-block-tabs.wp-block .wp-block-tab.wp-block > section > .wp-block:last-child {
18
- margin-bottom: 0;
19
- }
20
- .wp-block-tabs.wp-block.is-vertical > .wp-block-tab.wp-block {
21
- flex-direction: row;
22
- }
23
- .wp-block-tabs.wp-block.is-vertical .wp-block-tabs__tab-item__inserter {
24
- align-items: flex-start;
25
- margin-right: -1px;
26
- }
@@ -1,122 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import clsx from 'clsx';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import { __, sprintf } from '@wordpress/i18n';
10
- import { RichText } from '@wordpress/block-editor';
11
- import { decodeEntities } from '@wordpress/html-entities';
12
- import { RawHTML } from '@wordpress/element';
13
-
14
- /**
15
- * Internal dependencies
16
- */
17
- import slugFromLabel from './slug-from-label';
18
-
19
- function StaticLabel( { label, index } ) {
20
- if ( label ) {
21
- return (
22
- <span>
23
- <RawHTML>{ decodeEntities( label ) }</RawHTML>
24
- </span>
25
- );
26
- }
27
- return (
28
- <span>
29
- { sprintf(
30
- /* translators: %d is the tab index + 1 */
31
- __( 'Tab %d' ),
32
- index + 1
33
- ) }
34
- </span>
35
- );
36
- }
37
-
38
- export default function TabsList( {
39
- siblingTabs,
40
- currentClientId,
41
- currentBlockIndex,
42
- currentLabel,
43
- tabItemColorProps,
44
- onSelectTab,
45
- onLabelChange,
46
- labelRef,
47
- focusRef,
48
- labelElementRef,
49
- } ) {
50
- return (
51
- <div role="tablist" className="tabs__list">
52
- { siblingTabs.map( ( tab, index ) => {
53
- const isCurrentTab = tab.clientId === currentClientId;
54
- const isSiblingTabActive = index === currentBlockIndex;
55
- const tabAttributes = tab.attributes || {};
56
- const siblingLabel = tabAttributes.label || '';
57
- const siblingAnchor =
58
- tabAttributes.anchor ||
59
- slugFromLabel( siblingLabel, index );
60
- const siblingTabPanelId = siblingAnchor;
61
- const siblingTabLabelId = `${ siblingTabPanelId }--tab`;
62
-
63
- return (
64
- <button
65
- key={ tab.clientId }
66
- aria-controls={ siblingTabPanelId }
67
- aria-selected={ isSiblingTabActive }
68
- id={ siblingTabLabelId }
69
- role="tab"
70
- className={ clsx(
71
- 'tabs__tab-label',
72
- tabItemColorProps.className
73
- ) }
74
- style={ {
75
- ...tabItemColorProps.style,
76
- } }
77
- tabIndex={ isSiblingTabActive ? 0 : -1 }
78
- onClick={ ( event ) => {
79
- event.preventDefault();
80
- onSelectTab( tab.clientId );
81
- } }
82
- onKeyDown={ ( event ) => {
83
- // If shift is also pressed, do not select the block.
84
- if ( event.key === 'Enter' && ! event.shiftKey ) {
85
- event.preventDefault();
86
- onSelectTab( tab.clientId );
87
- if ( isCurrentTab ) {
88
- const { requestAnimationFrame } = window;
89
- focusRef.current = requestAnimationFrame(
90
- () => {
91
- labelElementRef.current?.focus();
92
- }
93
- );
94
- }
95
- }
96
- } }
97
- >
98
- { isCurrentTab ? (
99
- <RichText
100
- ref={ labelRef }
101
- tagName="span"
102
- withoutInteractiveFormatting
103
- placeholder={ sprintf(
104
- /* translators: %d is the tab index + 1 */
105
- __( 'Tab %d…' ),
106
- currentBlockIndex + 1
107
- ) }
108
- value={ decodeEntities( currentLabel ) }
109
- onChange={ onLabelChange }
110
- />
111
- ) : (
112
- <StaticLabel
113
- label={ siblingLabel }
114
- index={ index }
115
- />
116
- ) }
117
- </button>
118
- );
119
- } ) }
120
- </div>
121
- );
122
- }
@@ -1,30 +0,0 @@
1
- .wp-block-tabs.wp-block {
2
- .wp-block-tabs__tab-item__inserter {
3
- height: 100%;
4
- display: flex;
5
- align-items: center;
6
- }
7
- .wp-block-tab.wp-block {
8
- display: flex;
9
- flex-direction: column;
10
- gap: var(--wp--style--unstable-tabs-gap);
11
- & > section {
12
- flex-grow: 1;
13
- & > .wp-block:first-child {
14
- margin-top: 0;
15
- }
16
- & > .wp-block:last-child {
17
- margin-bottom: 0;
18
- }
19
- }
20
- }
21
- &.is-vertical {
22
- & > .wp-block-tab.wp-block {
23
- flex-direction: row;
24
- }
25
- .wp-block-tabs__tab-item__inserter {
26
- align-items: flex-start;
27
- margin-right: -1px; // Hack to get the inserter to align with the tab border
28
- }
29
- }
30
- }
@@ -1,164 +0,0 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import {
5
- __experimentalGetGapCSSValue as getGapCSSValue,
6
- useStyleOverride,
7
- } from '@wordpress/block-editor';
8
-
9
- /**
10
- * Gets the gap styles for the tab block.
11
- * @param {Object} props
12
- * @param {Object} props.attributes Block attributes
13
- * @return {Object} CSS custom properties for gap styles
14
- */
15
- function getGapStyles( { attributes } ) {
16
- const { style, orientation } = attributes || {};
17
- const { spacing } = style || {};
18
- const { blockGap } = spacing || {};
19
- //--wp--style--tabs-list-gap-default should be used by themes that want to set a default
20
- // gap on the tabs list.
21
- const fallbackValue = `var( --wp--style--tabs-gap-default, var( --wp--style--block-gap, 0.5em ) )`;
22
- let listGapValue = fallbackValue;
23
- let gapValue = fallbackValue;
24
-
25
- // Check for a value.
26
- if ( !! blockGap ) {
27
- listGapValue =
28
- typeof blockGap === 'string'
29
- ? getGapCSSValue( blockGap )
30
- : getGapCSSValue( blockGap?.left ) || fallbackValue;
31
- gapValue =
32
- typeof blockGap === 'string'
33
- ? getGapCSSValue( blockGap )
34
- : getGapCSSValue( blockGap?.top ) || fallbackValue;
35
- }
36
-
37
- if ( orientation === 'vertical' ) {
38
- const _listGapValue = listGapValue;
39
- const _gapValue = gapValue;
40
- listGapValue = _gapValue;
41
- gapValue = _listGapValue;
42
- }
43
-
44
- // The unstable tabs list gap calculation requires a real value (such as `0px`) and not `0`.
45
- const gapMap = {
46
- '--wp--style--unstable-tabs-list-gap':
47
- listGapValue === '0' ? '0px' : listGapValue,
48
- '--wp--style--unstable-tabs-gap': gapValue,
49
- };
50
-
51
- return gapMap;
52
- }
53
-
54
- /**
55
- * Gets the color styles for the tab block.
56
- *
57
- * @param {Object} props
58
- * @param {Object} props.attributes Block attributes
59
- * @return {Object} CSS custom properties for color styles
60
- */
61
- function getColorStyles( { attributes } ) {
62
- const {
63
- customTabInactiveColor,
64
- customTabHoverColor,
65
- customTabActiveColor,
66
- customTabTextColor,
67
- customTabActiveTextColor,
68
- customTabHoverTextColor,
69
- } = attributes || {};
70
-
71
- // Helper to normalize color objects (preset { slug } vs direct value).
72
- function getColorValue( color ) {
73
- if ( ! color ) {
74
- return null;
75
- }
76
- if ( typeof color === 'object' && color.slug ) {
77
- return `var(--wp--preset--color--${ color.slug })`;
78
- }
79
- return color;
80
- }
81
-
82
- const colorVarMap = {
83
- '--custom-tab-inactive-color': getColorValue( customTabInactiveColor ),
84
- '--custom-tab-active-color': getColorValue( customTabActiveColor ),
85
- '--custom-tab-hover-color': getColorValue( customTabHoverColor ),
86
- '--custom-tab-text-color': getColorValue( customTabTextColor ),
87
- '--custom-tab-active-text-color': getColorValue(
88
- customTabActiveTextColor
89
- ),
90
- '--custom-tab-hover-text-color': getColorValue(
91
- customTabHoverTextColor
92
- ),
93
- };
94
-
95
- return colorVarMap;
96
- }
97
-
98
- /**
99
- * Gets the border styles for the tab block.
100
- *
101
- * @param {Object} props
102
- * @param {Object} props.attributes Block attributes
103
- * @return {Object} CSS custom properties for border styles
104
- */
105
- function getBorderStyles( { attributes } ) {
106
- const { radius } = attributes?.style?.border || {};
107
-
108
- if ( ! radius ) {
109
- return {};
110
- }
111
-
112
- let radiusValue = radius;
113
-
114
- if ( typeof radius === 'object' ) {
115
- const {
116
- topLeft = '0',
117
- topRight = '0',
118
- bottomRight = '0',
119
- bottomLeft = '0',
120
- } = radius;
121
- radiusValue = `${ topLeft } ${ topRight } ${ bottomRight } ${ bottomLeft }`;
122
- }
123
-
124
- const borderMap = {
125
- '--tab-border-radius': radiusValue,
126
- };
127
-
128
- return borderMap;
129
- }
130
-
131
- /**
132
- * Injects color CSS custom properties for the tabs block, mirroring the pattern
133
- * used by gap-styles (scoped to `#block-{ clientId }`). This replaces the prior
134
- * inline-style object return value approach so that these values participate in
135
- * style engine cascade like other dynamic style overrides.
136
- *
137
- * @param {Object} props
138
- * @param {Object} props.attributes Block attributes
139
- * @param {string} props.clientId Block client ID
140
- * @return {null} No UI output
141
- */
142
- export default function StyleEngine( { attributes, clientId } ) {
143
- const gapVarMap = getGapStyles( { attributes } );
144
- const colorVarMap = getColorStyles( { attributes } );
145
- const borderVarMap = getBorderStyles( { attributes } );
146
-
147
- const styleVarMap = {
148
- ...gapVarMap,
149
- ...colorVarMap,
150
- ...borderVarMap,
151
- };
152
-
153
- // Build scoped CSS only for defined values to avoid unnecessary empty declarations.
154
- const declarations = Object.entries( styleVarMap )
155
- .filter( ( [ , value ] ) => !! value )
156
- .map( ( [ name, value ] ) => `\t${ name }: ${ value };` )
157
- .join( '\n' );
158
-
159
- useStyleOverride( {
160
- css: clientId ? `#block-${ clientId } {\n${ declarations }\n}` : '',
161
- } );
162
-
163
- return null;
164
- }