@wordpress/edit-site 4.15.1-next.4d3b314fd5.0 → 4.17.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 (252) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/block-editor/block-inspector-button.js +1 -1
  3. package/build/components/block-editor/block-inspector-button.js.map +1 -1
  4. package/build/components/block-editor/index.js +17 -11
  5. package/build/components/block-editor/index.js.map +1 -1
  6. package/build/components/block-editor/resizable-editor.js +11 -35
  7. package/build/components/block-editor/resizable-editor.js.map +1 -1
  8. package/build/components/editor/index.js +5 -7
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/preview.js +85 -50
  11. package/build/components/global-styles/preview.js.map +1 -1
  12. package/build/components/global-styles/screen-style-variations.js +35 -4
  13. package/build/components/global-styles/screen-style-variations.js.map +1 -1
  14. package/build/components/global-styles/screen-typography-element.js +49 -2
  15. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  16. package/build/components/global-styles/typography-panel.js +143 -83
  17. package/build/components/global-styles/typography-panel.js.map +1 -1
  18. package/build/components/global-styles/typography-preview.js +54 -0
  19. package/build/components/global-styles/typography-preview.js.map +1 -0
  20. package/build/components/global-styles/typography-utils.js +39 -176
  21. package/build/components/global-styles/typography-utils.js.map +1 -1
  22. package/build/components/global-styles/use-global-styles-output.js +34 -16
  23. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  24. package/build/components/{header → header-edit-mode}/document-actions/index.js +58 -24
  25. package/build/components/header-edit-mode/document-actions/index.js.map +1 -0
  26. package/build/components/{header → header-edit-mode}/index.js +13 -49
  27. package/build/components/header-edit-mode/index.js.map +1 -0
  28. package/build/components/{header → header-edit-mode}/mode-switcher/index.js +0 -0
  29. package/build/components/header-edit-mode/mode-switcher/index.js.map +1 -0
  30. package/build/components/{header → header-edit-mode}/more-menu/copy-content-menu-item.js +0 -0
  31. package/build/components/header-edit-mode/more-menu/copy-content-menu-item.js.map +1 -0
  32. package/build/components/{header → header-edit-mode}/more-menu/index.js +0 -0
  33. package/build/components/header-edit-mode/more-menu/index.js.map +1 -0
  34. package/build/components/{header → header-edit-mode}/more-menu/site-export.js +0 -0
  35. package/build/components/header-edit-mode/more-menu/site-export.js.map +1 -0
  36. package/build/components/{header → header-edit-mode}/more-menu/welcome-guide-menu-item.js +0 -0
  37. package/build/components/header-edit-mode/more-menu/welcome-guide-menu-item.js.map +1 -0
  38. package/build/components/{header → header-edit-mode}/plugin-more-menu-item/index.js +0 -0
  39. package/build/components/header-edit-mode/plugin-more-menu-item/index.js.map +1 -0
  40. package/build/components/{header → header-edit-mode}/plugin-sidebar-more-menu-item/index.js +0 -0
  41. package/build/components/header-edit-mode/plugin-sidebar-more-menu-item/index.js.map +1 -0
  42. package/build/components/{header → header-edit-mode}/tools-more-menu-group/index.js +0 -0
  43. package/build/components/header-edit-mode/tools-more-menu-group/index.js.map +1 -0
  44. package/build/components/{header → header-edit-mode}/undo-redo/redo.js +0 -0
  45. package/build/components/header-edit-mode/undo-redo/redo.js.map +1 -0
  46. package/build/components/{header → header-edit-mode}/undo-redo/undo.js +0 -0
  47. package/build/components/header-edit-mode/undo-redo/undo.js.map +1 -0
  48. package/build/components/keyboard-shortcuts/index.js +1 -1
  49. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  50. package/build/components/main-dashboard-button/index.js +2 -2
  51. package/build/components/main-dashboard-button/index.js.map +1 -1
  52. package/build/components/{sidebar → sidebar-edit-mode}/constants.js +0 -0
  53. package/build/components/sidebar-edit-mode/constants.js.map +1 -0
  54. package/build/components/{sidebar → sidebar-edit-mode}/default-sidebar.js +0 -0
  55. package/build/components/sidebar-edit-mode/default-sidebar.js.map +1 -0
  56. package/build/components/{sidebar → sidebar-edit-mode}/global-styles-sidebar.js +0 -0
  57. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -0
  58. package/build/components/{sidebar → sidebar-edit-mode}/index.js +1 -1
  59. package/build/components/sidebar-edit-mode/index.js.map +1 -0
  60. package/build/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/index.js +0 -0
  61. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/index.js.map +1 -0
  62. package/build/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-inspector.js +0 -0
  63. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +1 -0
  64. package/build/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-menu.js +0 -0
  65. package/build/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +1 -0
  66. package/build/components/{sidebar → sidebar-edit-mode}/plugin-sidebar/index.js +1 -1
  67. package/build/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -0
  68. package/build/components/{sidebar → sidebar-edit-mode}/settings-header/index.js +2 -2
  69. package/build/components/sidebar-edit-mode/settings-header/index.js.map +1 -0
  70. package/build/components/{sidebar → sidebar-edit-mode}/template-card/index.js +0 -0
  71. package/build/components/sidebar-edit-mode/template-card/index.js.map +1 -0
  72. package/build/components/{sidebar → sidebar-edit-mode}/template-card/template-actions.js +0 -0
  73. package/build/components/sidebar-edit-mode/template-card/template-actions.js.map +1 -0
  74. package/build/components/{sidebar → sidebar-edit-mode}/template-card/template-areas.js +0 -0
  75. package/build/components/sidebar-edit-mode/template-card/template-areas.js.map +1 -0
  76. package/build/index.js +23 -4
  77. package/build/index.js.map +1 -1
  78. package/build-module/components/block-editor/block-inspector-button.js +1 -1
  79. package/build-module/components/block-editor/block-inspector-button.js.map +1 -1
  80. package/build-module/components/block-editor/index.js +16 -10
  81. package/build-module/components/block-editor/index.js.map +1 -1
  82. package/build-module/components/block-editor/resizable-editor.js +10 -34
  83. package/build-module/components/block-editor/resizable-editor.js.map +1 -1
  84. package/build-module/components/editor/index.js +4 -6
  85. package/build-module/components/editor/index.js.map +1 -1
  86. package/build-module/components/global-styles/preview.js +85 -50
  87. package/build-module/components/global-styles/preview.js.map +1 -1
  88. package/build-module/components/global-styles/screen-style-variations.js +36 -6
  89. package/build-module/components/global-styles/screen-style-variations.js.map +1 -1
  90. package/build-module/components/global-styles/screen-typography-element.js +48 -2
  91. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  92. package/build-module/components/global-styles/typography-panel.js +143 -85
  93. package/build-module/components/global-styles/typography-panel.js.map +1 -1
  94. package/build-module/components/global-styles/typography-preview.js +46 -0
  95. package/build-module/components/global-styles/typography-preview.js.map +1 -0
  96. package/build-module/components/global-styles/typography-utils.js +37 -169
  97. package/build-module/components/global-styles/typography-utils.js.map +1 -1
  98. package/build-module/components/global-styles/use-global-styles-output.js +33 -16
  99. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  100. package/build-module/components/{header → header-edit-mode}/document-actions/index.js +53 -24
  101. package/build-module/components/header-edit-mode/document-actions/index.js.map +1 -0
  102. package/build-module/components/{header → header-edit-mode}/index.js +13 -46
  103. package/build-module/components/header-edit-mode/index.js.map +1 -0
  104. package/build-module/components/{header → header-edit-mode}/mode-switcher/index.js +0 -0
  105. package/build-module/components/header-edit-mode/mode-switcher/index.js.map +1 -0
  106. package/build-module/components/{header → header-edit-mode}/more-menu/copy-content-menu-item.js +0 -0
  107. package/build-module/components/header-edit-mode/more-menu/copy-content-menu-item.js.map +1 -0
  108. package/build-module/components/{header → header-edit-mode}/more-menu/index.js +0 -0
  109. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -0
  110. package/build-module/components/{header → header-edit-mode}/more-menu/site-export.js +0 -0
  111. package/build-module/components/header-edit-mode/more-menu/site-export.js.map +1 -0
  112. package/build-module/components/{header → header-edit-mode}/more-menu/welcome-guide-menu-item.js +0 -0
  113. package/build-module/components/header-edit-mode/more-menu/welcome-guide-menu-item.js.map +1 -0
  114. package/build-module/components/{header → header-edit-mode}/plugin-more-menu-item/index.js +0 -0
  115. package/build-module/components/header-edit-mode/plugin-more-menu-item/index.js.map +1 -0
  116. package/build-module/components/{header → header-edit-mode}/plugin-sidebar-more-menu-item/index.js +0 -0
  117. package/build-module/components/header-edit-mode/plugin-sidebar-more-menu-item/index.js.map +1 -0
  118. package/build-module/components/{header → header-edit-mode}/tools-more-menu-group/index.js +0 -0
  119. package/build-module/components/header-edit-mode/tools-more-menu-group/index.js.map +1 -0
  120. package/build-module/components/{header → header-edit-mode}/undo-redo/redo.js +0 -0
  121. package/build-module/components/header-edit-mode/undo-redo/redo.js.map +1 -0
  122. package/build-module/components/{header → header-edit-mode}/undo-redo/undo.js +0 -0
  123. package/build-module/components/header-edit-mode/undo-redo/undo.js.map +1 -0
  124. package/build-module/components/keyboard-shortcuts/index.js +1 -1
  125. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  126. package/build-module/components/main-dashboard-button/index.js +3 -3
  127. package/build-module/components/main-dashboard-button/index.js.map +1 -1
  128. package/build-module/components/{sidebar → sidebar-edit-mode}/constants.js +0 -0
  129. package/build-module/components/sidebar-edit-mode/constants.js.map +1 -0
  130. package/build-module/components/{sidebar → sidebar-edit-mode}/default-sidebar.js +0 -0
  131. package/build-module/components/sidebar-edit-mode/default-sidebar.js.map +1 -0
  132. package/build-module/components/{sidebar → sidebar-edit-mode}/global-styles-sidebar.js +0 -0
  133. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -0
  134. package/build-module/components/{sidebar → sidebar-edit-mode}/index.js +1 -1
  135. package/build-module/components/sidebar-edit-mode/index.js.map +1 -0
  136. package/build-module/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/index.js +0 -0
  137. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/index.js.map +1 -0
  138. package/build-module/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-inspector.js +0 -0
  139. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-inspector.js.map +1 -0
  140. package/build-module/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-menu.js +0 -0
  141. package/build-module/components/sidebar-edit-mode/navigation-menu-sidebar/navigation-menu.js.map +1 -0
  142. package/build-module/components/{sidebar → sidebar-edit-mode}/plugin-sidebar/index.js +1 -1
  143. package/build-module/components/sidebar-edit-mode/plugin-sidebar/index.js.map +1 -0
  144. package/build-module/components/{sidebar → sidebar-edit-mode}/settings-header/index.js +2 -2
  145. package/build-module/components/sidebar-edit-mode/settings-header/index.js.map +1 -0
  146. package/build-module/components/{sidebar → sidebar-edit-mode}/template-card/index.js +0 -0
  147. package/build-module/components/sidebar-edit-mode/template-card/index.js.map +1 -0
  148. package/build-module/components/{sidebar → sidebar-edit-mode}/template-card/template-actions.js +0 -0
  149. package/build-module/components/sidebar-edit-mode/template-card/template-actions.js.map +1 -0
  150. package/build-module/components/{sidebar → sidebar-edit-mode}/template-card/template-areas.js +0 -0
  151. package/build-module/components/sidebar-edit-mode/template-card/template-areas.js.map +1 -0
  152. package/build-module/index.js +22 -4
  153. package/build-module/index.js.map +1 -1
  154. package/build-style/style-rtl.css +64 -89
  155. package/build-style/style.css +64 -89
  156. package/package.json +29 -29
  157. package/src/components/block-editor/block-inspector-button.js +1 -1
  158. package/src/components/block-editor/index.js +29 -11
  159. package/src/components/block-editor/resizable-editor.js +8 -37
  160. package/src/components/editor/index.js +2 -4
  161. package/src/components/global-styles/preview.js +81 -60
  162. package/src/components/global-styles/screen-style-variations.js +39 -4
  163. package/src/components/global-styles/screen-typography-element.js +65 -1
  164. package/src/components/global-styles/style.scss +2 -2
  165. package/src/components/global-styles/test/typography-utils.js +333 -103
  166. package/src/components/global-styles/test/use-global-styles-output.js +57 -3
  167. package/src/components/global-styles/typography-panel.js +205 -150
  168. package/src/components/global-styles/typography-preview.js +49 -0
  169. package/src/components/global-styles/typography-utils.js +34 -195
  170. package/src/components/global-styles/use-global-styles-output.js +31 -9
  171. package/src/components/{header → header-edit-mode}/document-actions/index.js +67 -46
  172. package/src/components/{header → header-edit-mode}/document-actions/style.scss +0 -0
  173. package/src/components/{header → header-edit-mode}/index.js +12 -44
  174. package/src/components/{header → header-edit-mode}/mode-switcher/index.js +0 -0
  175. package/src/components/{header → header-edit-mode}/more-menu/copy-content-menu-item.js +0 -0
  176. package/src/components/{header → header-edit-mode}/more-menu/index.js +0 -0
  177. package/src/components/{header → header-edit-mode}/more-menu/site-export.js +0 -0
  178. package/src/components/{header → header-edit-mode}/more-menu/welcome-guide-menu-item.js +0 -0
  179. package/src/components/{header → header-edit-mode}/plugin-more-menu-item/index.js +0 -0
  180. package/src/components/{header → header-edit-mode}/plugin-sidebar-more-menu-item/index.js +0 -0
  181. package/src/components/{header → header-edit-mode}/style.scss +20 -50
  182. package/src/components/{header → header-edit-mode}/tools-more-menu-group/index.js +0 -0
  183. package/src/components/{header → header-edit-mode}/undo-redo/redo.js +0 -0
  184. package/src/components/{header → header-edit-mode}/undo-redo/undo.js +0 -0
  185. package/src/components/keyboard-shortcuts/index.js +1 -1
  186. package/src/components/main-dashboard-button/index.js +3 -3
  187. package/src/components/{sidebar → sidebar-edit-mode}/constants.js +0 -0
  188. package/src/components/{sidebar → sidebar-edit-mode}/default-sidebar.js +0 -0
  189. package/src/components/{sidebar → sidebar-edit-mode}/global-styles-sidebar.js +0 -0
  190. package/src/components/{sidebar → sidebar-edit-mode}/index.js +1 -1
  191. package/src/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/index.js +0 -0
  192. package/src/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-inspector.js +0 -0
  193. package/src/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/navigation-menu.js +0 -0
  194. package/src/components/{sidebar → sidebar-edit-mode}/navigation-menu-sidebar/style.scss +0 -0
  195. package/src/components/{sidebar → sidebar-edit-mode}/plugin-sidebar/index.js +1 -1
  196. package/src/components/{sidebar → sidebar-edit-mode}/settings-header/index.js +2 -2
  197. package/src/components/{sidebar → sidebar-edit-mode}/settings-header/style.scss +2 -2
  198. package/src/components/{sidebar → sidebar-edit-mode}/style.scss +2 -2
  199. package/src/components/{sidebar → sidebar-edit-mode}/template-card/index.js +0 -0
  200. package/src/components/{sidebar → sidebar-edit-mode}/template-card/style.scss +0 -0
  201. package/src/components/{sidebar → sidebar-edit-mode}/template-card/template-actions.js +0 -0
  202. package/src/components/{sidebar → sidebar-edit-mode}/template-card/template-areas.js +0 -0
  203. package/src/index.js +24 -3
  204. package/src/style.scss +6 -6
  205. package/build/components/header/document-actions/index.js.map +0 -1
  206. package/build/components/header/index.js.map +0 -1
  207. package/build/components/header/mode-switcher/index.js.map +0 -1
  208. package/build/components/header/more-menu/copy-content-menu-item.js.map +0 -1
  209. package/build/components/header/more-menu/index.js.map +0 -1
  210. package/build/components/header/more-menu/site-export.js.map +0 -1
  211. package/build/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  212. package/build/components/header/plugin-more-menu-item/index.js.map +0 -1
  213. package/build/components/header/plugin-sidebar-more-menu-item/index.js.map +0 -1
  214. package/build/components/header/tools-more-menu-group/index.js.map +0 -1
  215. package/build/components/header/undo-redo/redo.js.map +0 -1
  216. package/build/components/header/undo-redo/undo.js.map +0 -1
  217. package/build/components/sidebar/constants.js.map +0 -1
  218. package/build/components/sidebar/default-sidebar.js.map +0 -1
  219. package/build/components/sidebar/global-styles-sidebar.js.map +0 -1
  220. package/build/components/sidebar/index.js.map +0 -1
  221. package/build/components/sidebar/navigation-menu-sidebar/index.js.map +0 -1
  222. package/build/components/sidebar/navigation-menu-sidebar/navigation-inspector.js.map +0 -1
  223. package/build/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +0 -1
  224. package/build/components/sidebar/plugin-sidebar/index.js.map +0 -1
  225. package/build/components/sidebar/settings-header/index.js.map +0 -1
  226. package/build/components/sidebar/template-card/index.js.map +0 -1
  227. package/build/components/sidebar/template-card/template-actions.js.map +0 -1
  228. package/build/components/sidebar/template-card/template-areas.js.map +0 -1
  229. package/build-module/components/header/document-actions/index.js.map +0 -1
  230. package/build-module/components/header/index.js.map +0 -1
  231. package/build-module/components/header/mode-switcher/index.js.map +0 -1
  232. package/build-module/components/header/more-menu/copy-content-menu-item.js.map +0 -1
  233. package/build-module/components/header/more-menu/index.js.map +0 -1
  234. package/build-module/components/header/more-menu/site-export.js.map +0 -1
  235. package/build-module/components/header/more-menu/welcome-guide-menu-item.js.map +0 -1
  236. package/build-module/components/header/plugin-more-menu-item/index.js.map +0 -1
  237. package/build-module/components/header/plugin-sidebar-more-menu-item/index.js.map +0 -1
  238. package/build-module/components/header/tools-more-menu-group/index.js.map +0 -1
  239. package/build-module/components/header/undo-redo/redo.js.map +0 -1
  240. package/build-module/components/header/undo-redo/undo.js.map +0 -1
  241. package/build-module/components/sidebar/constants.js.map +0 -1
  242. package/build-module/components/sidebar/default-sidebar.js.map +0 -1
  243. package/build-module/components/sidebar/global-styles-sidebar.js.map +0 -1
  244. package/build-module/components/sidebar/index.js.map +0 -1
  245. package/build-module/components/sidebar/navigation-menu-sidebar/index.js.map +0 -1
  246. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-inspector.js.map +0 -1
  247. package/build-module/components/sidebar/navigation-menu-sidebar/navigation-menu.js.map +0 -1
  248. package/build-module/components/sidebar/plugin-sidebar/index.js.map +0 -1
  249. package/build-module/components/sidebar/settings-header/index.js.map +0 -1
  250. package/build-module/components/sidebar/template-card/index.js.map +0 -1
  251. package/build-module/components/sidebar/template-card/template-actions.js.map +0 -1
  252. package/build-module/components/sidebar/template-card/template-areas.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/use-global-styles-output.js"],"names":["BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS","__experimentalBorder","color","spacing","typography","compileStyleValue","uncompiledValue","VARIABLE_REFERENCE_PREFIX","VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE","VARIABLE_PATH_SEPARATOR_TOKEN_STYLE","startsWith","variable","slice","length","split","join","getPresetsDeclarations","blockPresets","mergedSettings","PRESET_METADATA","declarations","path","valueKey","valueFunc","cssVarInfix","presetByOrigin","forEach","origin","value","push","slug","getPresetsClasses","blockSelector","classes","classSuffix","propertyName","classSelectorToUse","selectorToUse","map","selector","getPresetsSvgFilters","filter","metadata","at","flatMap","preset","flattenTree","input","prefix","token","result","Object","keys","key","newKey","replace","newLeaf","newPrefix","getStylesDeclarations","blockStyles","useRootPaddingAlign","tree","isRoot","ROOT_BLOCK_SELECTOR","output","STYLE_PROPERTY","properties","useEngine","rootOnly","pathToValue","styleValue","entries","entry","name","prop","cssProperty","extraRules","rule","ruleValue","ref","refPath","getLayoutStyles","style","hasBlockGapSupport","hasFallbackGapSupport","fallbackGapValue","ruleset","gapValue","blockGap","settings","layout","definitions","values","className","spacingStyles","spacingStyle","rules","cssValue","combinedSelector","validDisplayModes","displayMode","baseStyles","includes","baseStyle","getNodesWithStyles","blockSelectors","nodes","styles","pickStyleKeys","treeToPickFrom","ELEMENTS","elements","blocks","blockName","node","duotoneSelector","hasLayoutSupport","featureSelectors","elementName","sel","elementSelectors","elementSelector","getNodesWithSettings","pickPresets","presets","custom","blockCustom","toCustomProperties","customProps","toStyles","disableLayoutStyles","nodesWithStyles","nodesWithSettings","useRootPaddingAwareAlignments","contentSize","wideSize","featureName","featureSelector","featureStyles","featureDeclarations","duotoneStyles","duotoneDeclarations","pseudoSelectorStyles","pseudoKey","pseudoStyle","pseudoDeclarations","_selector","pseudoRule","toSvgFilters","getBlockSelectors","blockTypes","blockType","supports","__experimentalSelector","__experimentalDuotone","__experimentalLayout","__experimentalDefault","featureKey","undefined","useGlobalStylesOutput","merged","mergedConfig","GlobalStylesContext","select","getSettings","blockEditorStore","customProperties","globalStyles","filters","stylesheets","css","isGlobalStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, isEmpty, kebabCase, pickBy, reduce, set } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n\tgetBlockTypes,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { getCSSRules } from '@wordpress/style-engine';\nimport {\n\t__unstablePresetDuotoneFilter as PresetDuotoneFilter,\n\t__experimentalGetGapCSSValue as getGapCSSValue,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { PRESET_METADATA, ROOT_BLOCK_SELECTOR, scopeSelector } from './utils';\nimport { GlobalStylesContext } from './context';\nimport { useSetting } from './hooks';\n\n// List of block support features that can have their related styles\n// generated under their own feature level selector rather than the block's.\nconst BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS = {\n\t__experimentalBorder: 'border',\n\tcolor: 'color',\n\tspacing: 'spacing',\n\ttypography: 'typography',\n};\n\nfunction compileStyleValue( uncompiledValue ) {\n\tconst VARIABLE_REFERENCE_PREFIX = 'var:';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';\n\n\tif ( uncompiledValue?.startsWith?.( VARIABLE_REFERENCE_PREFIX ) ) {\n\t\tconst variable = uncompiledValue\n\t\t\t.slice( VARIABLE_REFERENCE_PREFIX.length )\n\t\t\t.split( VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE )\n\t\t\t.join( VARIABLE_PATH_SEPARATOR_TOKEN_STYLE );\n\t\treturn `var(--wp--${ variable })`;\n\t}\n\treturn uncompiledValue;\n}\n\n/**\n * Transform given preset tree into a set of style declarations.\n *\n * @param {Object} blockPresets\n * @param {Object} mergedSettings Merged theme.json settings.\n *\n * @return {Array<Object>} An array of style declarations.\n */\nfunction getPresetsDeclarations( blockPresets = {}, mergedSettings ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, valueKey, valueFunc, cssVarInfix } ) => {\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( value ) => {\n\t\t\t\t\t\tif ( valueKey && ! valueFunc ) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ value[ valueKey ] }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tvalueFunc &&\n\t\t\t\t\t\t\ttypeof valueFunc === 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ valueFunc( value, mergedSettings ) }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n}\n\n/**\n * Transform given preset tree into a set of preset class declarations.\n *\n * @param {string} blockSelector\n * @param {Object} blockPresets\n * @return {string} CSS declarations for the preset classes.\n */\nfunction getPresetsClasses( blockSelector, blockPresets = {} ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, cssVarInfix, classes } ) => {\n\t\t\tif ( ! classes ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( { slug } ) => {\n\t\t\t\t\t\tclasses.forEach( ( { classSuffix, propertyName } ) => {\n\t\t\t\t\t\t\tconst classSelectorToUse = `.has-${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) }-${ classSuffix }`;\n\t\t\t\t\t\t\tconst selectorToUse = blockSelector\n\t\t\t\t\t\t\t\t.split( ',' ) // Selector can be \"h1, h2, h3\"\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t\t\t\t`${ selector }${ classSelectorToUse }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t\t\tconst value = `var(--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) })`;\n\t\t\t\t\t\t\tdeclarations += `${ selectorToUse }{${ propertyName }: ${ value } !important;}`;\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn declarations;\n\t\t},\n\t\t''\n\t);\n}\n\nfunction getPresetsSvgFilters( blockPresets = {} ) {\n\treturn PRESET_METADATA.filter(\n\t\t// Duotone are the only type of filters for now.\n\t\t( metadata ) => metadata.path.at( -1 ) === 'duotone'\n\t).flatMap( ( metadata ) => {\n\t\tconst presetByOrigin = get( blockPresets, metadata.path, {} );\n\t\treturn [ 'default', 'theme' ]\n\t\t\t.filter( ( origin ) => presetByOrigin[ origin ] )\n\t\t\t.flatMap( ( origin ) =>\n\t\t\t\tpresetByOrigin[ origin ].map( ( preset ) => (\n\t\t\t\t\t<PresetDuotoneFilter\n\t\t\t\t\t\tpreset={ preset }\n\t\t\t\t\t\tkey={ preset.slug }\n\t\t\t\t\t/>\n\t\t\t\t) )\n\t\t\t);\n\t} );\n}\n\nfunction flattenTree( input = {}, prefix, token ) {\n\tlet result = [];\n\tObject.keys( input ).forEach( ( key ) => {\n\t\tconst newKey = prefix + kebabCase( key.replace( '/', '-' ) );\n\t\tconst newLeaf = input[ key ];\n\n\t\tif ( newLeaf instanceof Object ) {\n\t\t\tconst newPrefix = newKey + token;\n\t\t\tresult = [ ...result, ...flattenTree( newLeaf, newPrefix, token ) ];\n\t\t} else {\n\t\t\tresult.push( `${ newKey }: ${ newLeaf }` );\n\t\t}\n\t} );\n\treturn result;\n}\n\n/**\n * Transform given style tree into a set of style declarations.\n *\n * @param {Object} blockStyles Block styles.\n *\n * @param {string} selector The selector these declarations should attach to.\n *\n * @param {boolean} useRootPaddingAlign Whether to use CSS custom properties in root selector.\n *\n * @param {Object} tree A theme.json tree containing layout definitions.\n *\n * @return {Array} An array of style declarations.\n */\nexport function getStylesDeclarations(\n\tblockStyles = {},\n\tselector = '',\n\tuseRootPaddingAlign,\n\ttree = {}\n) {\n\tconst isRoot = ROOT_BLOCK_SELECTOR === selector;\n\tconst output = reduce(\n\t\tSTYLE_PROPERTY,\n\t\t( declarations, { value, properties, useEngine, rootOnly }, key ) => {\n\t\t\tif ( rootOnly && ! isRoot ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\t\t\tconst pathToValue = value;\n\t\t\tif ( pathToValue[ 0 ] === 'elements' || useEngine ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst styleValue = get( blockStyles, pathToValue );\n\n\t\t\t// Root-level padding styles don't currently support strings with CSS shorthand values.\n\t\t\t// This may change: https://github.com/WordPress/gutenberg/issues/40132.\n\t\t\tif (\n\t\t\t\tkey === '--wp--style--root--padding' &&\n\t\t\t\t( typeof styleValue === 'string' || ! useRootPaddingAlign )\n\t\t\t) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tif ( !! properties && typeof styleValue !== 'string' ) {\n\t\t\t\tObject.entries( properties ).forEach( ( entry ) => {\n\t\t\t\t\tconst [ name, prop ] = entry;\n\n\t\t\t\t\tif ( ! get( styleValue, [ prop ], false ) ) {\n\t\t\t\t\t\t// Do not create a declaration\n\t\t\t\t\t\t// for sub-properties that don't have any value.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cssProperty = name.startsWith( '--' )\n\t\t\t\t\t\t? name\n\t\t\t\t\t\t: kebabCase( name );\n\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\t\tget( styleValue, [ prop ] )\n\t\t\t\t\t\t) }`\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else if ( get( blockStyles, pathToValue, false ) ) {\n\t\t\t\tconst cssProperty = key.startsWith( '--' )\n\t\t\t\t\t? key\n\t\t\t\t\t: kebabCase( key );\n\t\t\t\tdeclarations.push(\n\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\tget( blockStyles, pathToValue )\n\t\t\t\t\t) }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n\n\t// The goal is to move everything to server side generated engine styles\n\t// This is temporary as we absorb more and more styles into the engine.\n\tconst extraRules = getCSSRules( blockStyles );\n\textraRules.forEach( ( rule ) => {\n\t\t// Don't output padding properties if padding variables are set.\n\t\tif (\n\t\t\tisRoot &&\n\t\t\tuseRootPaddingAlign &&\n\t\t\trule.key.startsWith( 'padding' )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst cssProperty = rule.key.startsWith( '--' )\n\t\t\t? rule.key\n\t\t\t: kebabCase( rule.key );\n\n\t\tlet ruleValue = rule.value;\n\t\tif ( typeof ruleValue !== 'string' && ruleValue?.ref ) {\n\t\t\tconst refPath = ruleValue.ref.split( '.' );\n\t\t\truleValue = get( tree, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! ruleValue || !! ruleValue?.ref ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\toutput.push( `${ cssProperty }: ${ ruleValue }` );\n\t} );\n\n\treturn output;\n}\n\n/**\n * Get generated CSS for layout styles by looking up layout definitions provided\n * in theme.json, and outputting common layout styles, and specific blockGap values.\n *\n * @param {Object} props\n * @param {Object} props.tree A theme.json tree containing layout definitions.\n * @param {Object} props.style A style object containing spacing values.\n * @param {string} props.selector Selector used to group together layout styling rules.\n * @param {boolean} props.hasBlockGapSupport Whether or not the theme opts-in to blockGap support.\n * @param {boolean} props.hasFallbackGapSupport Whether or not the theme allows fallback gap styles.\n * @param {?string} props.fallbackGapValue An optional fallback gap value if no real gap value is available.\n * @return {string} Generated CSS rules for the layout styles.\n */\nexport function getLayoutStyles( {\n\ttree,\n\tstyle,\n\tselector,\n\thasBlockGapSupport,\n\thasFallbackGapSupport,\n\tfallbackGapValue,\n} ) {\n\tlet ruleset = '';\n\tlet gapValue = hasBlockGapSupport\n\t\t? getGapCSSValue( style?.spacing?.blockGap )\n\t\t: '';\n\n\t// Ensure a fallback gap value for the root layout definitions,\n\t// and use a fallback value if one is provided for the current block.\n\tif ( hasFallbackGapSupport ) {\n\t\tif ( selector === ROOT_BLOCK_SELECTOR ) {\n\t\t\tgapValue = ! gapValue ? '0.5em' : gapValue;\n\t\t} else if ( ! hasBlockGapSupport && fallbackGapValue ) {\n\t\t\tgapValue = fallbackGapValue;\n\t\t}\n\t}\n\n\tif ( gapValue && tree?.settings?.layout?.definitions ) {\n\t\tObject.values( tree.settings.layout.definitions ).forEach(\n\t\t\t( { className, name, spacingStyles } ) => {\n\t\t\t\t// Allow outputting fallback gap styles for flex layout type when block gap support isn't available.\n\t\t\t\tif ( ! hasBlockGapSupport && 'flex' !== name ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( spacingStyles?.length ) {\n\t\t\t\t\tspacingStyles.forEach( ( spacingStyle ) => {\n\t\t\t\t\t\tconst declarations = [];\n\n\t\t\t\t\t\tif ( spacingStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( spacingStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${\n\t\t\t\t\t\t\t\t\t\t\tcssValue ? cssValue : gapValue\n\t\t\t\t\t\t\t\t\t\t}`\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\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tlet combinedSelector = '';\n\n\t\t\t\t\t\t\tif ( ! hasBlockGapSupport ) {\n\t\t\t\t\t\t\t\t// For fallback gap styles, use lower specificity, to ensure styles do not unintentionally override theme styles.\n\t\t\t\t\t\t\t\tcombinedSelector =\n\t\t\t\t\t\t\t\t\tselector === ROOT_BLOCK_SELECTOR\n\t\t\t\t\t\t\t\t\t\t? `:where(.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t })`\n\t\t\t\t\t\t\t\t\t\t: `:where(${ selector }.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t })`;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcombinedSelector =\n\t\t\t\t\t\t\t\t\tselector === ROOT_BLOCK_SELECTOR\n\t\t\t\t\t\t\t\t\t\t? `${ selector } .${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t }`\n\t\t\t\t\t\t\t\t\t\t: `${ selector }.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t }`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t// For backwards compatibility, ensure the legacy block gap CSS variable is still available.\n\t\tif ( selector === ROOT_BLOCK_SELECTOR && hasBlockGapSupport ) {\n\t\t\truleset += `${ selector } { --wp--style--block-gap: ${ gapValue }; }`;\n\t\t}\n\t}\n\n\t// Output base styles\n\tif (\n\t\tselector === ROOT_BLOCK_SELECTOR &&\n\t\ttree?.settings?.layout?.definitions\n\t) {\n\t\tconst validDisplayModes = [ 'block', 'flex', 'grid' ];\n\t\tObject.values( tree.settings.layout.definitions ).forEach(\n\t\t\t( { className, displayMode, baseStyles } ) => {\n\t\t\t\tif (\n\t\t\t\t\tdisplayMode &&\n\t\t\t\t\tvalidDisplayModes.includes( displayMode )\n\t\t\t\t) {\n\t\t\t\t\truleset += `${ selector } .${ className } { display:${ displayMode }; }`;\n\t\t\t\t}\n\n\t\t\t\tif ( baseStyles?.length ) {\n\t\t\t\t\tbaseStyles.forEach( ( baseStyle ) => {\n\t\t\t\t\t\tconst declarations = [];\n\n\t\t\t\t\t\tif ( baseStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( baseStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${ cssValue }`\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\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tconst combinedSelector = `${ selector } .${ className }${\n\t\t\t\t\t\t\t\tbaseStyle?.selector || ''\n\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\treturn ruleset;\n}\n\nexport const getNodesWithStyles = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.styles ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickStyleKeys = ( treeToPickFrom ) =>\n\t\tpickBy( treeToPickFrom, ( value, key ) =>\n\t\t\t[ 'border', 'color', 'spacing', 'typography', 'filter' ].includes(\n\t\t\t\tkey\n\t\t\t)\n\t\t);\n\n\t// Top-level.\n\tconst styles = pickStyleKeys( tree.styles );\n\tif ( !! styles ) {\n\t\tnodes.push( {\n\t\t\tstyles,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\n\tObject.entries( ELEMENTS ).forEach( ( [ name, selector ] ) => {\n\t\tif ( !! tree.styles?.elements[ name ] ) {\n\t\t\tnodes.push( {\n\t\t\t\tstyles: tree.styles?.elements[ name ],\n\t\t\t\tselector,\n\t\t\t} );\n\t\t}\n\t} );\n\n\t// Iterate over blocks: they can have styles & elements.\n\tObject.entries( tree.styles?.blocks ?? {} ).forEach(\n\t\t( [ blockName, node ] ) => {\n\t\t\tconst blockStyles = pickStyleKeys( node );\n\t\t\tif (\n\t\t\t\t!! blockStyles &&\n\t\t\t\t!! blockSelectors?.[ blockName ]?.selector\n\t\t\t) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tduotoneSelector:\n\t\t\t\t\t\tblockSelectors[ blockName ].duotoneSelector,\n\t\t\t\t\tfallbackGapValue:\n\t\t\t\t\t\tblockSelectors[ blockName ].fallbackGapValue,\n\t\t\t\t\thasLayoutSupport:\n\t\t\t\t\t\tblockSelectors[ blockName ].hasLayoutSupport,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\t\tstyles: blockStyles,\n\t\t\t\t\tfeatureSelectors:\n\t\t\t\t\t\tblockSelectors[ blockName ].featureSelectors,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tObject.entries( node?.elements ?? {} ).forEach(\n\t\t\t\t( [ elementName, value ] ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!! value &&\n\t\t\t\t\t\t!! blockSelectors?.[ blockName ] &&\n\t\t\t\t\t\t!! ELEMENTS?.[ elementName ]\n\t\t\t\t\t) {\n\t\t\t\t\t\tnodes.push( {\n\t\t\t\t\t\t\tstyles: value,\n\t\t\t\t\t\t\tselector: blockSelectors[ blockName ].selector\n\t\t\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t\t\t.map( ( sel ) => {\n\t\t\t\t\t\t\t\t\tconst elementSelectors =\n\t\t\t\t\t\t\t\t\t\tELEMENTS[ elementName ].split( ',' );\n\t\t\t\t\t\t\t\t\treturn elementSelectors.map(\n\t\t\t\t\t\t\t\t\t\t( elementSelector ) =>\n\t\t\t\t\t\t\t\t\t\t\tsel + ' ' + elementSelector\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.join( ',' ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t);\n\n\treturn nodes;\n};\n\nexport const getNodesWithSettings = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.settings ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickPresets = ( treeToPickFrom ) => {\n\t\tconst presets = {};\n\t\tPRESET_METADATA.forEach( ( { path } ) => {\n\t\t\tconst value = get( treeToPickFrom, path, false );\n\t\t\tif ( value !== false ) {\n\t\t\t\tset( presets, path, value );\n\t\t\t}\n\t\t} );\n\t\treturn presets;\n\t};\n\n\t// Top-level.\n\tconst presets = pickPresets( tree.settings );\n\tconst custom = tree.settings?.custom;\n\tif ( ! isEmpty( presets ) || !! custom ) {\n\t\tnodes.push( {\n\t\t\tpresets,\n\t\t\tcustom,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\n\t// Blocks.\n\tObject.entries( tree.settings?.blocks ?? {} ).forEach(\n\t\t( [ blockName, node ] ) => {\n\t\t\tconst blockPresets = pickPresets( node );\n\t\t\tconst blockCustom = node.custom;\n\t\t\tif ( ! isEmpty( blockPresets ) || !! blockCustom ) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tpresets: blockPresets,\n\t\t\t\t\tcustom: blockCustom,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t);\n\n\treturn nodes;\n};\n\nexport const toCustomProperties = ( tree, blockSelectors ) => {\n\tconst settings = getNodesWithSettings( tree, blockSelectors );\n\tlet ruleset = '';\n\tsettings.forEach( ( { presets, custom, selector } ) => {\n\t\tconst declarations = getPresetsDeclarations( presets, tree?.settings );\n\t\tconst customProps = flattenTree( custom, '--wp--custom--', '--' );\n\t\tif ( customProps.length > 0 ) {\n\t\t\tdeclarations.push( ...customProps );\n\t\t}\n\n\t\tif ( declarations.length > 0 ) {\n\t\t\truleset = ruleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport const toStyles = (\n\ttree,\n\tblockSelectors,\n\thasBlockGapSupport,\n\thasFallbackGapSupport,\n\tdisableLayoutStyles = false\n) => {\n\tconst nodesWithStyles = getNodesWithStyles( tree, blockSelectors );\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\tconst useRootPaddingAlign = tree?.settings?.useRootPaddingAwareAlignments;\n\tconst { contentSize, wideSize } = tree?.settings?.layout || {};\n\n\t/*\n\t * Reset default browser margin on the root body element.\n\t * This is set on the root selector **before** generating the ruleset\n\t * from the `theme.json`. This is to ensure that if the `theme.json` declares\n\t * `margin` in its `spacing` declaration for the `body` element then these\n\t * user-generated values take precedence in the CSS cascade.\n\t * @link https://github.com/WordPress/gutenberg/issues/36147.\n\t */\n\tlet ruleset = 'body {margin: 0;';\n\n\tif ( contentSize ) {\n\t\truleset += ` --wp--style--global--content-size: ${ contentSize };`;\n\t}\n\n\tif ( wideSize ) {\n\t\truleset += ` --wp--style--global--wide-size: ${ wideSize };`;\n\t}\n\n\tif ( useRootPaddingAlign ) {\n\t\truleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) } \n\t\t\t.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); } \n\t\t\t.has-global-padding :where(.has-global-padding) { padding-right: 0; padding-left: 0; } \n\t\t\t.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); } \n\t\t\t.has-global-padding :where(.has-global-padding) > .alignfull { margin-right: 0; margin-left: 0; } \n\t\t\t.has-global-padding > .alignfull:where(:not(.has-global-padding)) > :where([class*=\"wp-block-\"]:not(.alignfull):not([class*=\"__\"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); } \n\t\t\t.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where([class*=\"wp-block-\"]:not(.alignfull):not([class*=\"__\"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0;`;\n\t}\n\n\truleset += '}';\n\n\tnodesWithStyles.forEach(\n\t\t( {\n\t\t\tselector,\n\t\t\tduotoneSelector,\n\t\t\tstyles,\n\t\t\tfallbackGapValue,\n\t\t\thasLayoutSupport,\n\t\t\tfeatureSelectors,\n\t\t} ) => {\n\t\t\t// Process styles for block support features with custom feature level\n\t\t\t// CSS selectors set.\n\t\t\tif ( featureSelectors ) {\n\t\t\t\tObject.entries( featureSelectors ).forEach(\n\t\t\t\t\t( [ featureName, featureSelector ] ) => {\n\t\t\t\t\t\tif ( styles?.[ featureName ] ) {\n\t\t\t\t\t\t\tconst featureStyles = {\n\t\t\t\t\t\t\t\t[ featureName ]: styles[ featureName ],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst featureDeclarations =\n\t\t\t\t\t\t\t\tgetStylesDeclarations( featureStyles );\n\t\t\t\t\t\t\tdelete styles[ featureName ];\n\n\t\t\t\t\t\t\tif ( !! featureDeclarations.length ) {\n\t\t\t\t\t\t\t\truleset =\n\t\t\t\t\t\t\t\t\truleset +\n\t\t\t\t\t\t\t\t\t`${ featureSelector }{${ featureDeclarations.join(\n\t\t\t\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t\t\t\t) } }`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst duotoneStyles = {};\n\t\t\tif ( styles?.filter ) {\n\t\t\t\tduotoneStyles.filter = styles.filter;\n\t\t\t\tdelete styles.filter;\n\t\t\t}\n\n\t\t\t// Process duotone styles (they use color.__experimentalDuotone selector).\n\t\t\tif ( duotoneSelector ) {\n\t\t\t\tconst duotoneDeclarations =\n\t\t\t\t\tgetStylesDeclarations( duotoneStyles );\n\t\t\t\tif ( duotoneDeclarations.length > 0 ) {\n\t\t\t\t\truleset =\n\t\t\t\t\t\truleset +\n\t\t\t\t\t\t`${ duotoneSelector }{${ duotoneDeclarations.join(\n\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t) };}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Process blockGap and layout styles.\n\t\t\tif (\n\t\t\t\t! disableLayoutStyles &&\n\t\t\t\t( ROOT_BLOCK_SELECTOR === selector || hasLayoutSupport )\n\t\t\t) {\n\t\t\t\truleset += getLayoutStyles( {\n\t\t\t\t\ttree,\n\t\t\t\t\tstyle: styles,\n\t\t\t\t\tselector,\n\t\t\t\t\thasBlockGapSupport,\n\t\t\t\t\thasFallbackGapSupport,\n\t\t\t\t\tfallbackGapValue,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Process the remaining block styles (they use either normal block class or __experimentalSelector).\n\t\t\tconst declarations = getStylesDeclarations(\n\t\t\t\tstyles,\n\t\t\t\tselector,\n\t\t\t\tuseRootPaddingAlign,\n\t\t\t\ttree\n\t\t\t);\n\t\t\tif ( declarations?.length ) {\n\t\t\t\truleset =\n\t\t\t\t\truleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t\t}\n\n\t\t\t// Check for pseudo selector in `styles` and handle separately.\n\t\t\tconst pseudoSelectorStyles = Object.entries( styles ).filter(\n\t\t\t\t( [ key ] ) => key.startsWith( ':' )\n\t\t\t);\n\n\t\t\tif ( pseudoSelectorStyles?.length ) {\n\t\t\t\tpseudoSelectorStyles.forEach(\n\t\t\t\t\t( [ pseudoKey, pseudoStyle ] ) => {\n\t\t\t\t\t\tconst pseudoDeclarations =\n\t\t\t\t\t\t\tgetStylesDeclarations( pseudoStyle );\n\n\t\t\t\t\t\tif ( ! pseudoDeclarations?.length ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// `selector` maybe provided in a form\n\t\t\t\t\t\t// where block level selectors have sub element\n\t\t\t\t\t\t// selectors appended to them as a comma separated\n\t\t\t\t\t\t// string.\n\t\t\t\t\t\t// e.g. `h1 a,h2 a,h3 a,h4 a,h5 a,h6 a`;\n\t\t\t\t\t\t// Split and append pseudo selector to create\n\t\t\t\t\t\t// the proper rules to target the elements.\n\t\t\t\t\t\tconst _selector = selector\n\t\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t\t.map( ( sel ) => sel + pseudoKey )\n\t\t\t\t\t\t\t.join( ',' );\n\n\t\t\t\t\t\tconst pseudoRule = `${ _selector }{${ pseudoDeclarations.join(\n\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t) };}`;\n\n\t\t\t\t\t\truleset = ruleset + pseudoRule;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t);\n\n\t/* Add alignment / layout styles */\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignright { float: right; margin-left: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }';\n\n\tif ( hasBlockGapSupport ) {\n\t\t// Use fallback of `0.5em` just in case, however if there is blockGap support, there should nearly always be a real value.\n\t\tconst gapValue =\n\t\t\tgetGapCSSValue( tree?.styles?.spacing?.blockGap ) || '0.5em';\n\t\truleset =\n\t\t\truleset +\n\t\t\t'.wp-site-blocks > * { margin-block-start: 0; margin-block-end: 0; }';\n\t\truleset =\n\t\t\truleset +\n\t\t\t`.wp-site-blocks > * + * { margin-block-start: ${ gapValue }; }`;\n\t}\n\n\tnodesWithSettings.forEach( ( { selector, presets } ) => {\n\t\tif ( ROOT_BLOCK_SELECTOR === selector ) {\n\t\t\t// Do not add extra specificity for top-level classes.\n\t\t\tselector = '';\n\t\t}\n\n\t\tconst classes = getPresetsClasses( selector, presets );\n\t\tif ( ! isEmpty( classes ) ) {\n\t\t\truleset = ruleset + classes;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport function toSvgFilters( tree, blockSelectors ) {\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\treturn nodesWithSettings.flatMap( ( { presets } ) => {\n\t\treturn getPresetsSvgFilters( presets );\n\t} );\n}\n\nexport const getBlockSelectors = ( blockTypes ) => {\n\tconst result = {};\n\tblockTypes.forEach( ( blockType ) => {\n\t\tconst name = blockType.name;\n\t\tconst selector =\n\t\t\tblockType?.supports?.__experimentalSelector ??\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t\tconst duotoneSelector =\n\t\t\tblockType?.supports?.color?.__experimentalDuotone ?? null;\n\t\tconst hasLayoutSupport = !! blockType?.supports?.__experimentalLayout;\n\t\tconst fallbackGapValue =\n\t\t\tblockType?.supports?.spacing?.blockGap?.__experimentalDefault;\n\n\t\t// For each block support feature add any custom selectors.\n\t\tconst featureSelectors = {};\n\t\tObject.entries( BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS ).forEach(\n\t\t\t( [ featureKey, featureName ] ) => {\n\t\t\t\tconst featureSelector =\n\t\t\t\t\tblockType?.supports?.[ featureKey ]?.__experimentalSelector;\n\n\t\t\t\tif ( featureSelector ) {\n\t\t\t\t\tfeatureSelectors[ featureName ] = scopeSelector(\n\t\t\t\t\t\tselector,\n\t\t\t\t\t\tfeatureSelector\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tresult[ name ] = {\n\t\t\tduotoneSelector,\n\t\t\tfallbackGapValue,\n\t\t\tfeatureSelectors: Object.keys( featureSelectors ).length\n\t\t\t\t? featureSelectors\n\t\t\t\t: undefined,\n\t\t\thasLayoutSupport,\n\t\t\tname,\n\t\t\tselector,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\nexport function useGlobalStylesOutput() {\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst [ blockGap ] = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGap !== null;\n\tconst hasFallbackGapSupport = ! hasBlockGapSupport; // This setting isn't useful yet: it exists as a placeholder for a future explicit fallback styles support.\n\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn !! getSettings().disableLayoutStyles;\n\t} );\n\n\treturn useMemo( () => {\n\t\tif ( ! mergedConfig?.styles || ! mergedConfig?.settings ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst blockSelectors = getBlockSelectors( getBlockTypes() );\n\t\tconst customProperties = toCustomProperties(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors\n\t\t);\n\t\tconst globalStyles = toStyles(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors,\n\t\t\thasBlockGapSupport,\n\t\t\thasFallbackGapSupport,\n\t\t\tdisableLayoutStyles\n\t\t);\n\t\tconst filters = toSvgFilters( mergedConfig, blockSelectors );\n\t\tconst stylesheets = [\n\t\t\t{\n\t\t\t\tcss: customProperties,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcss: globalStyles,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t];\n\n\t\treturn [ stylesheets, mergedConfig.settings, filters ];\n\t}, [\n\t\thasBlockGapSupport,\n\t\thasFallbackGapSupport,\n\t\tmergedConfig,\n\t\tdisableLayoutStyles,\n\t] );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/global-styles/use-global-styles-output.js"],"names":["BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS","__experimentalBorder","color","spacing","typography","compileStyleValue","uncompiledValue","VARIABLE_REFERENCE_PREFIX","VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE","VARIABLE_PATH_SEPARATOR_TOKEN_STYLE","startsWith","variable","slice","length","split","join","getPresetsDeclarations","blockPresets","mergedSettings","PRESET_METADATA","declarations","path","valueKey","valueFunc","cssVarInfix","presetByOrigin","forEach","origin","value","push","slug","getPresetsClasses","blockSelector","classes","classSuffix","propertyName","classSelectorToUse","selectorToUse","map","selector","getPresetsSvgFilters","filter","metadata","at","flatMap","preset","flattenTree","input","prefix","token","result","Object","keys","key","newKey","replace","newLeaf","newPrefix","getStylesDeclarations","blockStyles","useRootPaddingAlign","tree","isRoot","ROOT_BLOCK_SELECTOR","output","STYLE_PROPERTY","properties","useEngine","rootOnly","pathToValue","styleValue","entries","entry","name","prop","cssProperty","extraRules","rule","ruleValue","ref","refPath","size","settings","getLayoutStyles","style","hasBlockGapSupport","hasFallbackGapSupport","fallbackGapValue","ruleset","gapValue","blockGap","layout","definitions","values","className","spacingStyles","spacingStyle","rules","cssValue","combinedSelector","validDisplayModes","displayMode","baseStyles","includes","baseStyle","getNodesWithStyles","blockSelectors","nodes","styles","pickStyleKeys","treeToPickFrom","ELEMENTS","elements","blocks","blockName","node","duotoneSelector","hasLayoutSupport","featureSelectors","elementName","sel","elementSelectors","elementSelector","getNodesWithSettings","pickPresets","presets","custom","blockCustom","toCustomProperties","customProps","toStyles","disableLayoutStyles","nodesWithStyles","nodesWithSettings","useRootPaddingAwareAlignments","contentSize","wideSize","featureName","featureSelector","featureStyles","featureDeclarations","duotoneStyles","duotoneDeclarations","pseudoSelectorStyles","pseudoKey","pseudoStyle","pseudoDeclarations","_selector","pseudoRule","toSvgFilters","getBlockSelectors","blockTypes","blockType","supports","__experimentalSelector","__experimentalDuotone","__experimentalLayout","__experimentalDefault","featureKey","undefined","useGlobalStylesOutput","merged","mergedConfig","GlobalStylesContext","select","getSettings","blockEditorStore","customProperties","globalStyles","filters","stylesheets","css","isGlobalStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, isEmpty, kebabCase, pickBy, reduce, set } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__EXPERIMENTAL_STYLE_PROPERTY as STYLE_PROPERTY,\n\t__EXPERIMENTAL_ELEMENTS as ELEMENTS,\n\tgetBlockTypes,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { getCSSRules } from '@wordpress/style-engine';\nimport {\n\t__unstablePresetDuotoneFilter as PresetDuotoneFilter,\n\t__experimentalGetGapCSSValue as getGapCSSValue,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { PRESET_METADATA, ROOT_BLOCK_SELECTOR, scopeSelector } from './utils';\nimport { getTypographyFontSizeValue } from './typography-utils';\nimport { GlobalStylesContext } from './context';\nimport { useSetting } from './hooks';\n\n// List of block support features that can have their related styles\n// generated under their own feature level selector rather than the block's.\nconst BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS = {\n\t__experimentalBorder: 'border',\n\tcolor: 'color',\n\tspacing: 'spacing',\n\ttypography: 'typography',\n};\n\nfunction compileStyleValue( uncompiledValue ) {\n\tconst VARIABLE_REFERENCE_PREFIX = 'var:';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';\n\tconst VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';\n\n\tif ( uncompiledValue?.startsWith?.( VARIABLE_REFERENCE_PREFIX ) ) {\n\t\tconst variable = uncompiledValue\n\t\t\t.slice( VARIABLE_REFERENCE_PREFIX.length )\n\t\t\t.split( VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE )\n\t\t\t.join( VARIABLE_PATH_SEPARATOR_TOKEN_STYLE );\n\t\treturn `var(--wp--${ variable })`;\n\t}\n\treturn uncompiledValue;\n}\n\n/**\n * Transform given preset tree into a set of style declarations.\n *\n * @param {Object} blockPresets\n * @param {Object} mergedSettings Merged theme.json settings.\n *\n * @return {Array<Object>} An array of style declarations.\n */\nfunction getPresetsDeclarations( blockPresets = {}, mergedSettings ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, valueKey, valueFunc, cssVarInfix } ) => {\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( value ) => {\n\t\t\t\t\t\tif ( valueKey && ! valueFunc ) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ value[ valueKey ] }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\tvalueFunc &&\n\t\t\t\t\t\t\ttypeof valueFunc === 'function'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t`--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\t\tvalue.slug\n\t\t\t\t\t\t\t\t) }: ${ valueFunc( value, mergedSettings ) }`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n}\n\n/**\n * Transform given preset tree into a set of preset class declarations.\n *\n * @param {string} blockSelector\n * @param {Object} blockPresets\n * @return {string} CSS declarations for the preset classes.\n */\nfunction getPresetsClasses( blockSelector, blockPresets = {} ) {\n\treturn reduce(\n\t\tPRESET_METADATA,\n\t\t( declarations, { path, cssVarInfix, classes } ) => {\n\t\t\tif ( ! classes ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst presetByOrigin = get( blockPresets, path, [] );\n\t\t\t[ 'default', 'theme', 'custom' ].forEach( ( origin ) => {\n\t\t\t\tif ( presetByOrigin[ origin ] ) {\n\t\t\t\t\tpresetByOrigin[ origin ].forEach( ( { slug } ) => {\n\t\t\t\t\t\tclasses.forEach( ( { classSuffix, propertyName } ) => {\n\t\t\t\t\t\t\tconst classSelectorToUse = `.has-${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) }-${ classSuffix }`;\n\t\t\t\t\t\t\tconst selectorToUse = blockSelector\n\t\t\t\t\t\t\t\t.split( ',' ) // Selector can be \"h1, h2, h3\"\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t\t\t\t`${ selector }${ classSelectorToUse }`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join( ',' );\n\t\t\t\t\t\t\tconst value = `var(--wp--preset--${ cssVarInfix }--${ kebabCase(\n\t\t\t\t\t\t\t\tslug\n\t\t\t\t\t\t\t) })`;\n\t\t\t\t\t\t\tdeclarations += `${ selectorToUse }{${ propertyName }: ${ value } !important;}`;\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t\treturn declarations;\n\t\t},\n\t\t''\n\t);\n}\n\nfunction getPresetsSvgFilters( blockPresets = {} ) {\n\treturn PRESET_METADATA.filter(\n\t\t// Duotone are the only type of filters for now.\n\t\t( metadata ) => metadata.path.at( -1 ) === 'duotone'\n\t).flatMap( ( metadata ) => {\n\t\tconst presetByOrigin = get( blockPresets, metadata.path, {} );\n\t\treturn [ 'default', 'theme' ]\n\t\t\t.filter( ( origin ) => presetByOrigin[ origin ] )\n\t\t\t.flatMap( ( origin ) =>\n\t\t\t\tpresetByOrigin[ origin ].map( ( preset ) => (\n\t\t\t\t\t<PresetDuotoneFilter\n\t\t\t\t\t\tpreset={ preset }\n\t\t\t\t\t\tkey={ preset.slug }\n\t\t\t\t\t/>\n\t\t\t\t) )\n\t\t\t);\n\t} );\n}\n\nfunction flattenTree( input = {}, prefix, token ) {\n\tlet result = [];\n\tObject.keys( input ).forEach( ( key ) => {\n\t\tconst newKey = prefix + kebabCase( key.replace( '/', '-' ) );\n\t\tconst newLeaf = input[ key ];\n\n\t\tif ( newLeaf instanceof Object ) {\n\t\t\tconst newPrefix = newKey + token;\n\t\t\tresult = [ ...result, ...flattenTree( newLeaf, newPrefix, token ) ];\n\t\t} else {\n\t\t\tresult.push( `${ newKey }: ${ newLeaf }` );\n\t\t}\n\t} );\n\treturn result;\n}\n\n/**\n * Transform given style tree into a set of style declarations.\n *\n * @param {Object} blockStyles Block styles.\n *\n * @param {string} selector The selector these declarations should attach to.\n *\n * @param {boolean} useRootPaddingAlign Whether to use CSS custom properties in root selector.\n *\n * @param {Object} tree A theme.json tree containing layout definitions.\n *\n * @return {Array} An array of style declarations.\n */\nexport function getStylesDeclarations(\n\tblockStyles = {},\n\tselector = '',\n\tuseRootPaddingAlign,\n\ttree = {}\n) {\n\tconst isRoot = ROOT_BLOCK_SELECTOR === selector;\n\tconst output = reduce(\n\t\tSTYLE_PROPERTY,\n\t\t( declarations, { value, properties, useEngine, rootOnly }, key ) => {\n\t\t\tif ( rootOnly && ! isRoot ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\t\t\tconst pathToValue = value;\n\t\t\tif ( pathToValue[ 0 ] === 'elements' || useEngine ) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tconst styleValue = get( blockStyles, pathToValue );\n\n\t\t\t// Root-level padding styles don't currently support strings with CSS shorthand values.\n\t\t\t// This may change: https://github.com/WordPress/gutenberg/issues/40132.\n\t\t\tif (\n\t\t\t\tkey === '--wp--style--root--padding' &&\n\t\t\t\t( typeof styleValue === 'string' || ! useRootPaddingAlign )\n\t\t\t) {\n\t\t\t\treturn declarations;\n\t\t\t}\n\n\t\t\tif ( !! properties && typeof styleValue !== 'string' ) {\n\t\t\t\tObject.entries( properties ).forEach( ( entry ) => {\n\t\t\t\t\tconst [ name, prop ] = entry;\n\n\t\t\t\t\tif ( ! get( styleValue, [ prop ], false ) ) {\n\t\t\t\t\t\t// Do not create a declaration\n\t\t\t\t\t\t// for sub-properties that don't have any value.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst cssProperty = name.startsWith( '--' )\n\t\t\t\t\t\t? name\n\t\t\t\t\t\t: kebabCase( name );\n\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\t\tget( styleValue, [ prop ] )\n\t\t\t\t\t\t) }`\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t} else if ( get( blockStyles, pathToValue, false ) ) {\n\t\t\t\tconst cssProperty = key.startsWith( '--' )\n\t\t\t\t\t? key\n\t\t\t\t\t: kebabCase( key );\n\t\t\t\tdeclarations.push(\n\t\t\t\t\t`${ cssProperty }: ${ compileStyleValue(\n\t\t\t\t\t\tget( blockStyles, pathToValue )\n\t\t\t\t\t) }`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn declarations;\n\t\t},\n\t\t[]\n\t);\n\n\t// The goal is to move everything to server side generated engine styles\n\t// This is temporary as we absorb more and more styles into the engine.\n\tconst extraRules = getCSSRules( blockStyles );\n\textraRules.forEach( ( rule ) => {\n\t\t// Don't output padding properties if padding variables are set.\n\t\tif (\n\t\t\tisRoot &&\n\t\t\tuseRootPaddingAlign &&\n\t\t\trule.key.startsWith( 'padding' )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst cssProperty = rule.key.startsWith( '--' )\n\t\t\t? rule.key\n\t\t\t: kebabCase( rule.key );\n\n\t\tlet ruleValue = rule.value;\n\t\tif ( typeof ruleValue !== 'string' && ruleValue?.ref ) {\n\t\t\tconst refPath = ruleValue.ref.split( '.' );\n\t\t\truleValue = get( tree, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! ruleValue || !! ruleValue?.ref ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Calculate fluid typography rules where available.\n\t\tif ( cssProperty === 'font-size' ) {\n\t\t\t/*\n\t\t\t * getTypographyFontSizeValue() will check\n\t\t\t * if fluid typography has been activated and also\n\t\t\t * whether the incoming value can be converted to a fluid value.\n\t\t\t * Values that already have a \"clamp()\" function will not pass the test,\n\t\t\t * and therefore the original $value will be returned.\n\t\t\t */\n\t\t\truleValue = getTypographyFontSizeValue(\n\t\t\t\t{ size: ruleValue },\n\t\t\t\ttree?.settings?.typography\n\t\t\t);\n\t\t}\n\n\t\toutput.push( `${ cssProperty }: ${ ruleValue }` );\n\t} );\n\n\treturn output;\n}\n\n/**\n * Get generated CSS for layout styles by looking up layout definitions provided\n * in theme.json, and outputting common layout styles, and specific blockGap values.\n *\n * @param {Object} props\n * @param {Object} props.tree A theme.json tree containing layout definitions.\n * @param {Object} props.style A style object containing spacing values.\n * @param {string} props.selector Selector used to group together layout styling rules.\n * @param {boolean} props.hasBlockGapSupport Whether or not the theme opts-in to blockGap support.\n * @param {boolean} props.hasFallbackGapSupport Whether or not the theme allows fallback gap styles.\n * @param {?string} props.fallbackGapValue An optional fallback gap value if no real gap value is available.\n * @return {string} Generated CSS rules for the layout styles.\n */\nexport function getLayoutStyles( {\n\ttree,\n\tstyle,\n\tselector,\n\thasBlockGapSupport,\n\thasFallbackGapSupport,\n\tfallbackGapValue,\n} ) {\n\tlet ruleset = '';\n\tlet gapValue = hasBlockGapSupport\n\t\t? getGapCSSValue( style?.spacing?.blockGap )\n\t\t: '';\n\n\t// Ensure a fallback gap value for the root layout definitions,\n\t// and use a fallback value if one is provided for the current block.\n\tif ( hasFallbackGapSupport ) {\n\t\tif ( selector === ROOT_BLOCK_SELECTOR ) {\n\t\t\tgapValue = ! gapValue ? '0.5em' : gapValue;\n\t\t} else if ( ! hasBlockGapSupport && fallbackGapValue ) {\n\t\t\tgapValue = fallbackGapValue;\n\t\t}\n\t}\n\n\tif ( gapValue && tree?.settings?.layout?.definitions ) {\n\t\tObject.values( tree.settings.layout.definitions ).forEach(\n\t\t\t( { className, name, spacingStyles } ) => {\n\t\t\t\t// Allow outputting fallback gap styles for flex layout type when block gap support isn't available.\n\t\t\t\tif ( ! hasBlockGapSupport && 'flex' !== name ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( spacingStyles?.length ) {\n\t\t\t\t\tspacingStyles.forEach( ( spacingStyle ) => {\n\t\t\t\t\t\tconst declarations = [];\n\n\t\t\t\t\t\tif ( spacingStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( spacingStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${\n\t\t\t\t\t\t\t\t\t\t\tcssValue ? cssValue : gapValue\n\t\t\t\t\t\t\t\t\t\t}`\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\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tlet combinedSelector = '';\n\n\t\t\t\t\t\t\tif ( ! hasBlockGapSupport ) {\n\t\t\t\t\t\t\t\t// For fallback gap styles, use lower specificity, to ensure styles do not unintentionally override theme styles.\n\t\t\t\t\t\t\t\tcombinedSelector =\n\t\t\t\t\t\t\t\t\tselector === ROOT_BLOCK_SELECTOR\n\t\t\t\t\t\t\t\t\t\t? `:where(.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t })`\n\t\t\t\t\t\t\t\t\t\t: `:where(${ selector }.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t })`;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcombinedSelector =\n\t\t\t\t\t\t\t\t\tselector === ROOT_BLOCK_SELECTOR\n\t\t\t\t\t\t\t\t\t\t? `${ selector } .${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t }`\n\t\t\t\t\t\t\t\t\t\t: `${ selector }.${ className }${\n\t\t\t\t\t\t\t\t\t\t\t\tspacingStyle?.selector || ''\n\t\t\t\t\t\t\t\t\t\t }`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\t// For backwards compatibility, ensure the legacy block gap CSS variable is still available.\n\t\tif ( selector === ROOT_BLOCK_SELECTOR && hasBlockGapSupport ) {\n\t\t\truleset += `${ selector } { --wp--style--block-gap: ${ gapValue }; }`;\n\t\t}\n\t}\n\n\t// Output base styles\n\tif (\n\t\tselector === ROOT_BLOCK_SELECTOR &&\n\t\ttree?.settings?.layout?.definitions\n\t) {\n\t\tconst validDisplayModes = [ 'block', 'flex', 'grid' ];\n\t\tObject.values( tree.settings.layout.definitions ).forEach(\n\t\t\t( { className, displayMode, baseStyles } ) => {\n\t\t\t\tif (\n\t\t\t\t\tdisplayMode &&\n\t\t\t\t\tvalidDisplayModes.includes( displayMode )\n\t\t\t\t) {\n\t\t\t\t\truleset += `${ selector } .${ className } { display:${ displayMode }; }`;\n\t\t\t\t}\n\n\t\t\t\tif ( baseStyles?.length ) {\n\t\t\t\t\tbaseStyles.forEach( ( baseStyle ) => {\n\t\t\t\t\t\tconst declarations = [];\n\n\t\t\t\t\t\tif ( baseStyle.rules ) {\n\t\t\t\t\t\t\tObject.entries( baseStyle.rules ).forEach(\n\t\t\t\t\t\t\t\t( [ cssProperty, cssValue ] ) => {\n\t\t\t\t\t\t\t\t\tdeclarations.push(\n\t\t\t\t\t\t\t\t\t\t`${ cssProperty }: ${ cssValue }`\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\n\t\t\t\t\t\tif ( declarations.length ) {\n\t\t\t\t\t\t\tconst combinedSelector = `${ selector } .${ className }${\n\t\t\t\t\t\t\t\tbaseStyle?.selector || ''\n\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t\truleset += `${ combinedSelector } { ${ declarations.join(\n\t\t\t\t\t\t\t\t'; '\n\t\t\t\t\t\t\t) }; }`;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n\treturn ruleset;\n}\n\nexport const getNodesWithStyles = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.styles ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickStyleKeys = ( treeToPickFrom ) =>\n\t\tpickBy( treeToPickFrom, ( value, key ) =>\n\t\t\t[\n\t\t\t\t'border',\n\t\t\t\t'color',\n\t\t\t\t'spacing',\n\t\t\t\t'typography',\n\t\t\t\t'filter',\n\t\t\t\t'outline',\n\t\t\t\t'shadow',\n\t\t\t].includes( key )\n\t\t);\n\n\t// Top-level.\n\tconst styles = pickStyleKeys( tree.styles );\n\tif ( !! styles ) {\n\t\tnodes.push( {\n\t\t\tstyles,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\n\tObject.entries( ELEMENTS ).forEach( ( [ name, selector ] ) => {\n\t\tif ( !! tree.styles?.elements[ name ] ) {\n\t\t\tnodes.push( {\n\t\t\t\tstyles: tree.styles?.elements[ name ],\n\t\t\t\tselector,\n\t\t\t} );\n\t\t}\n\t} );\n\n\t// Iterate over blocks: they can have styles & elements.\n\tObject.entries( tree.styles?.blocks ?? {} ).forEach(\n\t\t( [ blockName, node ] ) => {\n\t\t\tconst blockStyles = pickStyleKeys( node );\n\t\t\tif (\n\t\t\t\t!! blockStyles &&\n\t\t\t\t!! blockSelectors?.[ blockName ]?.selector\n\t\t\t) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tduotoneSelector:\n\t\t\t\t\t\tblockSelectors[ blockName ].duotoneSelector,\n\t\t\t\t\tfallbackGapValue:\n\t\t\t\t\t\tblockSelectors[ blockName ].fallbackGapValue,\n\t\t\t\t\thasLayoutSupport:\n\t\t\t\t\t\tblockSelectors[ blockName ].hasLayoutSupport,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\t\tstyles: blockStyles,\n\t\t\t\t\tfeatureSelectors:\n\t\t\t\t\t\tblockSelectors[ blockName ].featureSelectors,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tObject.entries( node?.elements ?? {} ).forEach(\n\t\t\t\t( [ elementName, value ] ) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!! value &&\n\t\t\t\t\t\t!! blockSelectors?.[ blockName ] &&\n\t\t\t\t\t\t!! ELEMENTS?.[ elementName ]\n\t\t\t\t\t) {\n\t\t\t\t\t\tnodes.push( {\n\t\t\t\t\t\t\tstyles: value,\n\t\t\t\t\t\t\tselector: blockSelectors[ blockName ].selector\n\t\t\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t\t\t.map( ( sel ) => {\n\t\t\t\t\t\t\t\t\tconst elementSelectors =\n\t\t\t\t\t\t\t\t\t\tELEMENTS[ elementName ].split( ',' );\n\t\t\t\t\t\t\t\t\treturn elementSelectors.map(\n\t\t\t\t\t\t\t\t\t\t( elementSelector ) =>\n\t\t\t\t\t\t\t\t\t\t\tsel + ' ' + elementSelector\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t.join( ',' ),\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t);\n\n\treturn nodes;\n};\n\nexport const getNodesWithSettings = ( tree, blockSelectors ) => {\n\tconst nodes = [];\n\n\tif ( ! tree?.settings ) {\n\t\treturn nodes;\n\t}\n\n\tconst pickPresets = ( treeToPickFrom ) => {\n\t\tconst presets = {};\n\t\tPRESET_METADATA.forEach( ( { path } ) => {\n\t\t\tconst value = get( treeToPickFrom, path, false );\n\t\t\tif ( value !== false ) {\n\t\t\t\tset( presets, path, value );\n\t\t\t}\n\t\t} );\n\t\treturn presets;\n\t};\n\n\t// Top-level.\n\tconst presets = pickPresets( tree.settings );\n\tconst custom = tree.settings?.custom;\n\tif ( ! isEmpty( presets ) || !! custom ) {\n\t\tnodes.push( {\n\t\t\tpresets,\n\t\t\tcustom,\n\t\t\tselector: ROOT_BLOCK_SELECTOR,\n\t\t} );\n\t}\n\n\t// Blocks.\n\tObject.entries( tree.settings?.blocks ?? {} ).forEach(\n\t\t( [ blockName, node ] ) => {\n\t\t\tconst blockPresets = pickPresets( node );\n\t\t\tconst blockCustom = node.custom;\n\t\t\tif ( ! isEmpty( blockPresets ) || !! blockCustom ) {\n\t\t\t\tnodes.push( {\n\t\t\t\t\tpresets: blockPresets,\n\t\t\t\t\tcustom: blockCustom,\n\t\t\t\t\tselector: blockSelectors[ blockName ].selector,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t);\n\n\treturn nodes;\n};\n\nexport const toCustomProperties = ( tree, blockSelectors ) => {\n\tconst settings = getNodesWithSettings( tree, blockSelectors );\n\tlet ruleset = '';\n\tsettings.forEach( ( { presets, custom, selector } ) => {\n\t\tconst declarations = getPresetsDeclarations( presets, tree?.settings );\n\t\tconst customProps = flattenTree( custom, '--wp--custom--', '--' );\n\t\tif ( customProps.length > 0 ) {\n\t\t\tdeclarations.push( ...customProps );\n\t\t}\n\n\t\tif ( declarations.length > 0 ) {\n\t\t\truleset = ruleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport const toStyles = (\n\ttree,\n\tblockSelectors,\n\thasBlockGapSupport,\n\thasFallbackGapSupport,\n\tdisableLayoutStyles = false\n) => {\n\tconst nodesWithStyles = getNodesWithStyles( tree, blockSelectors );\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\tconst useRootPaddingAlign = tree?.settings?.useRootPaddingAwareAlignments;\n\tconst { contentSize, wideSize } = tree?.settings?.layout || {};\n\n\t/*\n\t * Reset default browser margin on the root body element.\n\t * This is set on the root selector **before** generating the ruleset\n\t * from the `theme.json`. This is to ensure that if the `theme.json` declares\n\t * `margin` in its `spacing` declaration for the `body` element then these\n\t * user-generated values take precedence in the CSS cascade.\n\t * @link https://github.com/WordPress/gutenberg/issues/36147.\n\t */\n\tlet ruleset = 'body {margin: 0;';\n\n\tif ( contentSize ) {\n\t\truleset += ` --wp--style--global--content-size: ${ contentSize };`;\n\t}\n\n\tif ( wideSize ) {\n\t\truleset += ` --wp--style--global--wide-size: ${ wideSize };`;\n\t}\n\n\tif ( useRootPaddingAlign ) {\n\t\truleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) }\n\t\t\t.has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }\n\t\t\t.has-global-padding :where(.has-global-padding) { padding-right: 0; padding-left: 0; }\n\t\t\t.has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); }\n\t\t\t.has-global-padding :where(.has-global-padding) > .alignfull { margin-right: 0; margin-left: 0; }\n\t\t\t.has-global-padding > .alignfull:where(:not(.has-global-padding)) > :where([class*=\"wp-block-\"]:not(.alignfull):not([class*=\"__\"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); }\n\t\t\t.has-global-padding :where(.has-global-padding) > .alignfull:where(:not(.has-global-padding)) > :where([class*=\"wp-block-\"]:not(.alignfull):not([class*=\"__\"]),p,h1,h2,h3,h4,h5,h6,ul,ol) { padding-right: 0; padding-left: 0;`;\n\t}\n\n\truleset += '}';\n\n\tnodesWithStyles.forEach(\n\t\t( {\n\t\t\tselector,\n\t\t\tduotoneSelector,\n\t\t\tstyles,\n\t\t\tfallbackGapValue,\n\t\t\thasLayoutSupport,\n\t\t\tfeatureSelectors,\n\t\t} ) => {\n\t\t\t// Process styles for block support features with custom feature level\n\t\t\t// CSS selectors set.\n\t\t\tif ( featureSelectors ) {\n\t\t\t\tObject.entries( featureSelectors ).forEach(\n\t\t\t\t\t( [ featureName, featureSelector ] ) => {\n\t\t\t\t\t\tif ( styles?.[ featureName ] ) {\n\t\t\t\t\t\t\tconst featureStyles = {\n\t\t\t\t\t\t\t\t[ featureName ]: styles[ featureName ],\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconst featureDeclarations =\n\t\t\t\t\t\t\t\tgetStylesDeclarations( featureStyles );\n\t\t\t\t\t\t\tdelete styles[ featureName ];\n\n\t\t\t\t\t\t\tif ( !! featureDeclarations.length ) {\n\t\t\t\t\t\t\t\truleset =\n\t\t\t\t\t\t\t\t\truleset +\n\t\t\t\t\t\t\t\t\t`${ featureSelector }{${ featureDeclarations.join(\n\t\t\t\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t\t\t\t) } }`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst duotoneStyles = {};\n\t\t\tif ( styles?.filter ) {\n\t\t\t\tduotoneStyles.filter = styles.filter;\n\t\t\t\tdelete styles.filter;\n\t\t\t}\n\n\t\t\t// Process duotone styles (they use color.__experimentalDuotone selector).\n\t\t\tif ( duotoneSelector ) {\n\t\t\t\tconst duotoneDeclarations =\n\t\t\t\t\tgetStylesDeclarations( duotoneStyles );\n\t\t\t\tif ( duotoneDeclarations.length > 0 ) {\n\t\t\t\t\truleset =\n\t\t\t\t\t\truleset +\n\t\t\t\t\t\t`${ duotoneSelector }{${ duotoneDeclarations.join(\n\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t) };}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Process blockGap and layout styles.\n\t\t\tif (\n\t\t\t\t! disableLayoutStyles &&\n\t\t\t\t( ROOT_BLOCK_SELECTOR === selector || hasLayoutSupport )\n\t\t\t) {\n\t\t\t\truleset += getLayoutStyles( {\n\t\t\t\t\ttree,\n\t\t\t\t\tstyle: styles,\n\t\t\t\t\tselector,\n\t\t\t\t\thasBlockGapSupport,\n\t\t\t\t\thasFallbackGapSupport,\n\t\t\t\t\tfallbackGapValue,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Process the remaining block styles (they use either normal block class or __experimentalSelector).\n\t\t\tconst declarations = getStylesDeclarations(\n\t\t\t\tstyles,\n\t\t\t\tselector,\n\t\t\t\tuseRootPaddingAlign,\n\t\t\t\ttree\n\t\t\t);\n\t\t\tif ( declarations?.length ) {\n\t\t\t\truleset =\n\t\t\t\t\truleset + `${ selector }{${ declarations.join( ';' ) };}`;\n\t\t\t}\n\n\t\t\t// Check for pseudo selector in `styles` and handle separately.\n\t\t\tconst pseudoSelectorStyles = Object.entries( styles ).filter(\n\t\t\t\t( [ key ] ) => key.startsWith( ':' )\n\t\t\t);\n\n\t\t\tif ( pseudoSelectorStyles?.length ) {\n\t\t\t\tpseudoSelectorStyles.forEach(\n\t\t\t\t\t( [ pseudoKey, pseudoStyle ] ) => {\n\t\t\t\t\t\tconst pseudoDeclarations =\n\t\t\t\t\t\t\tgetStylesDeclarations( pseudoStyle );\n\n\t\t\t\t\t\tif ( ! pseudoDeclarations?.length ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// `selector` maybe provided in a form\n\t\t\t\t\t\t// where block level selectors have sub element\n\t\t\t\t\t\t// selectors appended to them as a comma separated\n\t\t\t\t\t\t// string.\n\t\t\t\t\t\t// e.g. `h1 a,h2 a,h3 a,h4 a,h5 a,h6 a`;\n\t\t\t\t\t\t// Split and append pseudo selector to create\n\t\t\t\t\t\t// the proper rules to target the elements.\n\t\t\t\t\t\tconst _selector = selector\n\t\t\t\t\t\t\t.split( ',' )\n\t\t\t\t\t\t\t.map( ( sel ) => sel + pseudoKey )\n\t\t\t\t\t\t\t.join( ',' );\n\n\t\t\t\t\t\tconst pseudoRule = `${ _selector }{${ pseudoDeclarations.join(\n\t\t\t\t\t\t\t';'\n\t\t\t\t\t\t) };}`;\n\n\t\t\t\t\t\truleset = ruleset + pseudoRule;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t);\n\n\t/* Add alignment / layout styles */\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .alignright { float: right; margin-left: 2em; }';\n\truleset =\n\t\truleset +\n\t\t'.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }';\n\n\tif ( hasBlockGapSupport ) {\n\t\t// Use fallback of `0.5em` just in case, however if there is blockGap support, there should nearly always be a real value.\n\t\tconst gapValue =\n\t\t\tgetGapCSSValue( tree?.styles?.spacing?.blockGap ) || '0.5em';\n\t\truleset =\n\t\t\truleset +\n\t\t\t'.wp-site-blocks > * { margin-block-start: 0; margin-block-end: 0; }';\n\t\truleset =\n\t\t\truleset +\n\t\t\t`.wp-site-blocks > * + * { margin-block-start: ${ gapValue }; }`;\n\t}\n\n\tnodesWithSettings.forEach( ( { selector, presets } ) => {\n\t\tif ( ROOT_BLOCK_SELECTOR === selector ) {\n\t\t\t// Do not add extra specificity for top-level classes.\n\t\t\tselector = '';\n\t\t}\n\n\t\tconst classes = getPresetsClasses( selector, presets );\n\t\tif ( ! isEmpty( classes ) ) {\n\t\t\truleset = ruleset + classes;\n\t\t}\n\t} );\n\n\treturn ruleset;\n};\n\nexport function toSvgFilters( tree, blockSelectors ) {\n\tconst nodesWithSettings = getNodesWithSettings( tree, blockSelectors );\n\treturn nodesWithSettings.flatMap( ( { presets } ) => {\n\t\treturn getPresetsSvgFilters( presets );\n\t} );\n}\n\nexport const getBlockSelectors = ( blockTypes ) => {\n\tconst result = {};\n\tblockTypes.forEach( ( blockType ) => {\n\t\tconst name = blockType.name;\n\t\tconst selector =\n\t\t\tblockType?.supports?.__experimentalSelector ??\n\t\t\t'.wp-block-' + name.replace( 'core/', '' ).replace( '/', '-' );\n\t\tconst duotoneSelector =\n\t\t\tblockType?.supports?.color?.__experimentalDuotone ?? null;\n\t\tconst hasLayoutSupport = !! blockType?.supports?.__experimentalLayout;\n\t\tconst fallbackGapValue =\n\t\t\tblockType?.supports?.spacing?.blockGap?.__experimentalDefault;\n\n\t\t// For each block support feature add any custom selectors.\n\t\tconst featureSelectors = {};\n\t\tObject.entries( BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS ).forEach(\n\t\t\t( [ featureKey, featureName ] ) => {\n\t\t\t\tconst featureSelector =\n\t\t\t\t\tblockType?.supports?.[ featureKey ]?.__experimentalSelector;\n\n\t\t\t\tif ( featureSelector ) {\n\t\t\t\t\tfeatureSelectors[ featureName ] = scopeSelector(\n\t\t\t\t\t\tselector,\n\t\t\t\t\t\tfeatureSelector\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tresult[ name ] = {\n\t\t\tduotoneSelector,\n\t\t\tfallbackGapValue,\n\t\t\tfeatureSelectors: Object.keys( featureSelectors ).length\n\t\t\t\t? featureSelectors\n\t\t\t\t: undefined,\n\t\t\thasLayoutSupport,\n\t\t\tname,\n\t\t\tselector,\n\t\t};\n\t} );\n\n\treturn result;\n};\n\nexport function useGlobalStylesOutput() {\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst [ blockGap ] = useSetting( 'spacing.blockGap' );\n\tconst hasBlockGapSupport = blockGap !== null;\n\tconst hasFallbackGapSupport = ! hasBlockGapSupport; // This setting isn't useful yet: it exists as a placeholder for a future explicit fallback styles support.\n\tconst disableLayoutStyles = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn !! getSettings().disableLayoutStyles;\n\t} );\n\n\treturn useMemo( () => {\n\t\tif ( ! mergedConfig?.styles || ! mergedConfig?.settings ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst blockSelectors = getBlockSelectors( getBlockTypes() );\n\t\tconst customProperties = toCustomProperties(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors\n\t\t);\n\t\tconst globalStyles = toStyles(\n\t\t\tmergedConfig,\n\t\t\tblockSelectors,\n\t\t\thasBlockGapSupport,\n\t\t\thasFallbackGapSupport,\n\t\t\tdisableLayoutStyles\n\t\t);\n\t\tconst filters = toSvgFilters( mergedConfig, blockSelectors );\n\t\tconst stylesheets = [\n\t\t\t{\n\t\t\t\tcss: customProperties,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcss: globalStyles,\n\t\t\t\tisGlobalStyles: true,\n\t\t\t},\n\t\t];\n\n\t\treturn [ stylesheets, mergedConfig.settings, filters ];\n\t}, [\n\t\thasBlockGapSupport,\n\t\thasFallbackGapSupport,\n\t\tmergedConfig,\n\t\tdisableLayoutStyles,\n\t] );\n}\n"]}
@@ -23,6 +23,16 @@ var _icons = require("@wordpress/icons");
23
23
 
24
24
  var _blockEditor = require("@wordpress/block-editor");
25
25
 
26
+ var _coreData = require("@wordpress/core-data");
27
+
28
+ var _editor = require("@wordpress/editor");
29
+
30
+ var _preferences = require("@wordpress/preferences");
31
+
32
+ var _templateDetails = _interopRequireDefault(require("../../template-details"));
33
+
34
+ var _store = require("../../../store");
35
+
26
36
  /**
27
37
  * External dependencies
28
38
  */
@@ -30,6 +40,10 @@ var _blockEditor = require("@wordpress/block-editor");
30
40
  /**
31
41
  * WordPress dependencies
32
42
  */
43
+
44
+ /**
45
+ * Internal dependencies
46
+ */
33
47
  function getBlockDisplayText(block) {
34
48
  if (block) {
35
49
  const blockType = (0, _blocks.getBlockType)(block.name);
@@ -54,28 +68,40 @@ function useSecondaryText() {
54
68
 
55
69
  return {};
56
70
  }
57
- /**
58
- * @param {Object} props Props for the DocumentActions component.
59
- * @param {string} props.entityTitle The title to display.
60
- * @param {string} props.entityLabel A label to use for entity-related options.
61
- * E.g. "template" would be used for "edit
62
- * template" and "show template details".
63
- * @param {boolean} props.isLoaded Whether the data is available.
64
- * @param {Function} props.children React component to use for the
65
- * information dropdown area. Should be a
66
- * function which accepts dropdown props.
67
- * @param {boolean} props.showIconLabels Whether buttons display icons or text labels.
68
- */
69
-
70
71
 
71
- function DocumentActions(_ref) {
72
- let {
72
+ function DocumentActions() {
73
+ const {
74
+ showIconLabels,
73
75
  entityTitle,
74
- entityLabel,
75
- isLoaded,
76
- children: dropdownContent,
77
- showIconLabels
78
- } = _ref;
76
+ template,
77
+ templateType,
78
+ isLoaded
79
+ } = (0, _data.useSelect)(select => {
80
+ const {
81
+ getEditedPostType,
82
+ getEditedPostId
83
+ } = select(_store.store);
84
+ const {
85
+ getEditedEntityRecord
86
+ } = select(_coreData.store);
87
+ const {
88
+ __experimentalGetTemplateInfo: getTemplateInfo
89
+ } = select(_editor.store);
90
+ const postType = getEditedPostType();
91
+ const postId = getEditedPostId();
92
+ const record = getEditedEntityRecord('postType', postType, postId);
93
+
94
+ const _isLoaded = !!postId;
95
+
96
+ return {
97
+ showIconLabels: select(_preferences.store).get('core/edit-site', 'showIconLabels'),
98
+ entityTitle: getTemplateInfo(record).title,
99
+ isLoaded: _isLoaded,
100
+ template: record,
101
+ templateType: postType
102
+ };
103
+ }, []);
104
+ const entityLabel = templateType === 'wp_template_part' ? 'template part' : 'template';
79
105
  const {
80
106
  label
81
107
  } = useSecondaryText(); // Use internal state instead of a ref to make sure that the component
@@ -120,14 +146,14 @@ function DocumentActions(_ref) {
120
146
  (0, _i18n.__)('Editing %s: '), entityLabel)), entityTitle), (0, _element.createElement)(_components.__experimentalText, {
121
147
  size: "body",
122
148
  className: "edit-site-document-actions__secondary-item"
123
- }, label !== null && label !== void 0 ? label : ''), dropdownContent && (0, _element.createElement)(_components.Dropdown, {
149
+ }, label !== null && label !== void 0 ? label : ''), (0, _element.createElement)(_components.Dropdown, {
124
150
  popoverProps: popoverProps,
125
151
  position: "bottom center",
126
- renderToggle: _ref2 => {
152
+ renderToggle: _ref => {
127
153
  let {
128
154
  isOpen,
129
155
  onToggle
130
- } = _ref2;
156
+ } = _ref;
131
157
  return (0, _element.createElement)(_components.Button, {
132
158
  className: "edit-site-document-actions__get-info",
133
159
  icon: _icons.chevronDown,
@@ -141,7 +167,15 @@ function DocumentActions(_ref) {
141
167
  }, showIconLabels && (0, _i18n.__)('Details'));
142
168
  },
143
169
  contentClassName: "edit-site-document-actions__info-dropdown",
144
- renderContent: dropdownContent
170
+ renderContent: _ref2 => {
171
+ let {
172
+ onClose
173
+ } = _ref2;
174
+ return (0, _element.createElement)(_templateDetails.default, {
175
+ template: template,
176
+ onClose: onClose
177
+ });
178
+ }
145
179
  })));
146
180
  }
147
181
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/header-edit-mode/document-actions/index.js"],"names":["getBlockDisplayText","block","blockType","name","attributes","useSecondaryText","getBlock","blockEditorStore","activeEntityBlockId","select","__experimentalGetActiveBlockIdByBlockNames","label","isActive","DocumentActions","showIconLabels","entityTitle","template","templateType","isLoaded","getEditedPostType","getEditedPostId","editSiteStore","getEditedEntityRecord","coreStore","__experimentalGetTemplateInfo","getTemplateInfo","editorStore","postType","postId","record","_isLoaded","preferencesStore","get","title","entityLabel","popoverAnchor","setPopoverAnchor","popoverProps","anchor","isOpen","onToggle","chevronDown","undefined","onClose"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { sprintf, __ } from '@wordpress/i18n';\nimport {\n\t__experimentalGetBlockLabel as getBlockLabel,\n\tgetBlockType,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tDropdown,\n\tButton,\n\tVisuallyHidden,\n\t__experimentalText as Text,\n} from '@wordpress/components';\nimport { chevronDown } from '@wordpress/icons';\nimport { useState, useMemo } from '@wordpress/element';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport TemplateDetails from '../../template-details';\nimport { store as editSiteStore } from '../../../store';\n\nfunction getBlockDisplayText( block ) {\n\tif ( block ) {\n\t\tconst blockType = getBlockType( block.name );\n\t\treturn blockType ? getBlockLabel( blockType, block.attributes ) : null;\n\t}\n\treturn null;\n}\n\nfunction useSecondaryText() {\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst activeEntityBlockId = useSelect(\n\t\t( select ) =>\n\t\t\tselect(\n\t\t\t\tblockEditorStore\n\t\t\t).__experimentalGetActiveBlockIdByBlockNames( [\n\t\t\t\t'core/template-part',\n\t\t\t] ),\n\t\t[]\n\t);\n\n\tif ( activeEntityBlockId ) {\n\t\treturn {\n\t\t\tlabel: getBlockDisplayText( getBlock( activeEntityBlockId ) ),\n\t\t\tisActive: true,\n\t\t};\n\t}\n\n\treturn {};\n}\n\nexport default function DocumentActions() {\n\tconst { showIconLabels, entityTitle, template, templateType, isLoaded } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst { getEditedPostType, getEditedPostId } =\n\t\t\t\tselect( editSiteStore );\n\t\t\tconst { getEditedEntityRecord } = select( coreStore );\n\t\t\tconst { __experimentalGetTemplateInfo: getTemplateInfo } =\n\t\t\t\tselect( editorStore );\n\t\t\tconst postType = getEditedPostType();\n\t\t\tconst postId = getEditedPostId();\n\t\t\tconst record = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tpostType,\n\t\t\t\tpostId\n\t\t\t);\n\t\t\tconst _isLoaded = !! postId;\n\n\t\t\treturn {\n\t\t\t\tshowIconLabels: select( preferencesStore ).get(\n\t\t\t\t\t'core/edit-site',\n\t\t\t\t\t'showIconLabels'\n\t\t\t\t),\n\t\t\t\tentityTitle: getTemplateInfo( record ).title,\n\t\t\t\tisLoaded: _isLoaded,\n\t\t\t\ttemplate: record,\n\t\t\t\ttemplateType: postType,\n\t\t\t};\n\t\t}, [] );\n\tconst entityLabel =\n\t\ttemplateType === 'wp_template_part' ? 'template part' : 'template';\n\tconst { label } = useSecondaryText();\n\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\n\t// Memoize popoverProps to avoid returning a new object every time.\n\tconst popoverProps = useMemo(\n\t\t() => ( {\n\t\t\t// Use the title wrapper as the popover anchor so that the dropdown is\n\t\t\t// centered over the whole title area rather than just one part of it.\n\t\t\tanchor: popoverAnchor,\n\t\t} ),\n\t\t[ popoverAnchor ]\n\t);\n\n\t// Return a simple loading indicator until we have information to show.\n\tif ( ! isLoaded ) {\n\t\treturn (\n\t\t\t<div className=\"edit-site-document-actions\">\n\t\t\t\t{ __( 'Loading…' ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Return feedback that the template does not seem to exist.\n\tif ( ! entityTitle ) {\n\t\treturn (\n\t\t\t<div className=\"edit-site-document-actions\">\n\t\t\t\t{ __( 'Template not found' ) }\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ classnames( 'edit-site-document-actions', {\n\t\t\t\t'has-secondary-label': !! label,\n\t\t\t} ) }\n\t\t>\n\t\t\t<div\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\tclassName=\"edit-site-document-actions__title-wrapper\"\n\t\t\t>\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tclassName=\"edit-site-document-actions__title\"\n\t\t\t\t\tas=\"h1\"\n\t\t\t\t>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t/* translators: %s: the entity being edited, like \"template\"*/\n\t\t\t\t\t\t\t__( 'Editing %s: ' ),\n\t\t\t\t\t\t\tentityLabel\n\t\t\t\t\t\t) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t{ entityTitle }\n\t\t\t\t</Text>\n\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"body\"\n\t\t\t\t\tclassName=\"edit-site-document-actions__secondary-item\"\n\t\t\t\t>\n\t\t\t\t\t{ label ?? '' }\n\t\t\t\t</Text>\n\n\t\t\t\t<Dropdown\n\t\t\t\t\tpopoverProps={ popoverProps }\n\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"edit-site-document-actions__get-info\"\n\t\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\t\tvariant={ showIconLabels ? 'tertiary' : undefined }\n\t\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t\t/* translators: %s: the entity to see details about, like \"template\"*/\n\t\t\t\t\t\t\t\t__( 'Show %s details' ),\n\t\t\t\t\t\t\t\tentityLabel\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ showIconLabels && __( 'Details' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t\tcontentClassName=\"edit-site-document-actions__info-dropdown\"\n\t\t\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t\t\t<TemplateDetails\n\t\t\t\t\t\t\ttemplate={ template }\n\t\t\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -27,10 +27,6 @@ var _components = require("@wordpress/components");
27
27
 
28
28
  var _keyboardShortcuts = require("@wordpress/keyboard-shortcuts");
29
29
 
30
- var _editor = require("@wordpress/editor");
31
-
32
- var _coreData = require("@wordpress/core-data");
33
-
34
30
  var _moreMenu = _interopRequireDefault(require("./more-menu"));
35
31
 
36
32
  var _saveButton = _interopRequireDefault(require("../save-button"));
@@ -41,8 +37,6 @@ var _redo = _interopRequireDefault(require("./undo-redo/redo"));
41
37
 
42
38
  var _documentActions = _interopRequireDefault(require("./document-actions"));
43
39
 
44
- var _templateDetails = _interopRequireDefault(require("../template-details"));
45
-
46
40
  var _store = require("../../store");
47
41
 
48
42
  /**
@@ -71,13 +65,10 @@ function Header(_ref) {
71
65
  const inserterButton = (0, _element.useRef)();
72
66
  const {
73
67
  deviceType,
74
- entityTitle,
75
- template,
76
68
  templateType,
77
69
  isInserterOpen,
78
70
  isListViewOpen,
79
71
  listViewShortcut,
80
- isLoaded,
81
72
  isVisualMode,
82
73
  settings,
83
74
  blockEditorMode
@@ -85,18 +76,11 @@ function Header(_ref) {
85
76
  const {
86
77
  __experimentalGetPreviewDeviceType,
87
78
  getEditedPostType,
88
- getEditedPostId,
89
79
  isInserterOpened,
90
80
  isListViewOpened,
91
81
  getEditorMode,
92
82
  getSettings
93
83
  } = select(_store.store);
94
- const {
95
- getEditedEntityRecord
96
- } = select(_coreData.store);
97
- const {
98
- __experimentalGetTemplateInfo: getTemplateInfo
99
- } = select(_editor.store);
100
84
  const {
101
85
  getShortcutRepresentation
102
86
  } = select(_keyboardShortcuts.store);
@@ -104,16 +88,8 @@ function Header(_ref) {
104
88
  __unstableGetEditorMode
105
89
  } = select(_blockEditor.store);
106
90
  const postType = getEditedPostType();
107
- const postId = getEditedPostId();
108
- const record = getEditedEntityRecord('postType', postType, postId);
109
-
110
- const _isLoaded = !!postId;
111
-
112
91
  return {
113
92
  deviceType: __experimentalGetPreviewDeviceType(),
114
- entityTitle: getTemplateInfo(record).title,
115
- isLoaded: _isLoaded,
116
- template: record,
117
93
  templateType: postType,
118
94
  isInserterOpen: isInserterOpened(),
119
95
  isListViewOpen: isListViewOpened(),
@@ -149,16 +125,16 @@ function Header(_ref) {
149
125
  const isZoomedOutViewExperimentEnabled = ((_window = window) === null || _window === void 0 ? void 0 : _window.__experimentalEnableZoomedOutView) && isVisualMode;
150
126
  const isZoomedOutView = blockEditorMode === 'zoom-out';
151
127
  return (0, _element.createElement)("div", {
152
- className: "edit-site-header"
128
+ className: "edit-site-header-edit-mode"
153
129
  }, (0, _element.createElement)(_blockEditor.NavigableToolbar, {
154
- className: "edit-site-header_start",
130
+ className: "edit-site-header-edit-mode__start",
155
131
  "aria-label": (0, _i18n.__)('Document tools')
156
132
  }, (0, _element.createElement)("div", {
157
- className: "edit-site-header__toolbar"
133
+ className: "edit-site-header-edit-mode__toolbar"
158
134
  }, (0, _element.createElement)(_components.ToolbarItem, {
159
135
  ref: inserterButton,
160
136
  as: _components.Button,
161
- className: "edit-site-header-toolbar__inserter-toggle",
137
+ className: "edit-site-header-edit-mode__inserter-toggle",
162
138
  variant: "primary",
163
139
  isPressed: isInserterOpen,
164
140
  onMouseDown: preventDefault,
@@ -182,7 +158,7 @@ function Header(_ref) {
182
158
  variant: showIconLabels ? 'tertiary' : undefined
183
159
  }), (0, _element.createElement)(_components.ToolbarItem, {
184
160
  as: _components.Button,
185
- className: "edit-site-header-toolbar__list-view-toggle",
161
+ className: "edit-site-header-edit-mode__list-view-toggle",
186
162
  disabled: !isVisualMode && isZoomedOutView,
187
163
  icon: _icons.listView,
188
164
  isPressed: isListViewOpen
@@ -195,7 +171,6 @@ function Header(_ref) {
195
171
  variant: showIconLabels ? 'tertiary' : undefined
196
172
  }), isZoomedOutViewExperimentEnabled && (0, _element.createElement)(_components.ToolbarItem, {
197
173
  as: _components.Button,
198
- className: "edit-site-header-toolbar__zoom-out-view-toggle",
199
174
  icon: _icons.chevronUpDown,
200
175
  isPressed: isZoomedOutView
201
176
  /* translators: button label text should, if possible, be under 16 characters. */
@@ -203,36 +178,25 @@ function Header(_ref) {
203
178
  label: (0, _i18n.__)('Zoom-out View'),
204
179
  onClick: () => {
205
180
  setPreviewDeviceType('desktop');
206
- setIsListViewOpened(false);
207
181
 
208
182
  __unstableSetEditorMode(isZoomedOutView ? 'edit' : 'zoom-out');
209
183
  }
210
184
  })))), (0, _element.createElement)("div", {
211
- className: "edit-site-header_center"
212
- }, (0, _element.createElement)(_documentActions.default, {
213
- entityTitle: entityTitle,
214
- entityLabel: templateType === 'wp_template_part' ? 'template part' : 'template',
215
- isLoaded: isLoaded,
216
- showIconLabels: showIconLabels
217
- }, _ref2 => {
218
- let {
219
- onClose
220
- } = _ref2;
221
- return (0, _element.createElement)(_templateDetails.default, {
222
- template: template,
223
- onClose: onClose
224
- });
225
- })), (0, _element.createElement)("div", {
226
- className: "edit-site-header_end"
185
+ className: "edit-site-header-edit-mode__center"
186
+ }, (0, _element.createElement)(_documentActions.default, null)), (0, _element.createElement)("div", {
187
+ className: "edit-site-header-edit-mode__end"
227
188
  }, (0, _element.createElement)("div", {
228
- className: "edit-site-header__actions"
189
+ className: "edit-site-header-edit-mode__actions"
229
190
  }, !isFocusMode && (0, _element.createElement)("div", {
230
- className: (0, _classnames.default)('edit-site-header__actions__preview-options', {
191
+ className: (0, _classnames.default)('edit-site-header-edit-mode__preview-options', {
231
192
  'is-zoomed-out': isZoomedOutView
232
193
  })
233
194
  }, (0, _element.createElement)(_blockEditor.__experimentalPreviewOptions, {
234
195
  deviceType: deviceType,
235
196
  setDeviceType: setPreviewDeviceType
197
+ /* translators: button label text should, if possible, be under 16 characters. */
198
+ ,
199
+ viewLabel: (0, _i18n.__)('View')
236
200
  }, (0, _element.createElement)(_components.MenuGroup, null, (0, _element.createElement)(_components.MenuItem, {
237
201
  href: settings === null || settings === void 0 ? void 0 : settings.siteUrl,
238
202
  target: "_blank",
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/header-edit-mode/index.js"],"names":["preventDefault","event","Header","openEntitiesSavedStates","isEntitiesSavedStatesOpen","showIconLabels","inserterButton","deviceType","templateType","isInserterOpen","isListViewOpen","listViewShortcut","isVisualMode","settings","blockEditorMode","select","__experimentalGetPreviewDeviceType","getEditedPostType","isInserterOpened","isListViewOpened","getEditorMode","getSettings","editSiteStore","getShortcutRepresentation","keyboardShortcutsStore","__unstableGetEditorMode","blockEditorStore","postType","__experimentalSetPreviewDeviceType","setPreviewDeviceType","setIsInserterOpened","setIsListViewOpened","__unstableSetEditorMode","isLargeViewport","openInserter","current","focus","toggleListView","isFocusMode","longLabel","shortLabel","isZoomedOutViewExperimentEnabled","window","__experimentalEnableZoomedOutView","isZoomedOutView","Button","plus","ToolSelector","undefined","UndoButton","RedoButton","listView","chevronUpDown","siteUrl","external"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tToolSelector,\n\t__experimentalPreviewOptions as PreviewOptions,\n\tNavigableToolbar,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { PinnedItems } from '@wordpress/interface';\nimport { _x, __ } from '@wordpress/i18n';\nimport { listView, plus, external, chevronUpDown } from '@wordpress/icons';\nimport {\n\tButton,\n\tToolbarItem,\n\tMenuGroup,\n\tMenuItem,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport MoreMenu from './more-menu';\nimport SaveButton from '../save-button';\nimport UndoButton from './undo-redo/undo';\nimport RedoButton from './undo-redo/redo';\nimport DocumentActions from './document-actions';\nimport { store as editSiteStore } from '../../store';\n\nconst preventDefault = ( event ) => {\n\tevent.preventDefault();\n};\n\nexport default function Header( {\n\topenEntitiesSavedStates,\n\tisEntitiesSavedStatesOpen,\n\tshowIconLabels,\n} ) {\n\tconst inserterButton = useRef();\n\tconst {\n\t\tdeviceType,\n\t\ttemplateType,\n\t\tisInserterOpen,\n\t\tisListViewOpen,\n\t\tlistViewShortcut,\n\t\tisVisualMode,\n\t\tsettings,\n\t\tblockEditorMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\t__experimentalGetPreviewDeviceType,\n\t\t\tgetEditedPostType,\n\t\t\tisInserterOpened,\n\t\t\tisListViewOpened,\n\t\t\tgetEditorMode,\n\t\t\tgetSettings,\n\t\t} = select( editSiteStore );\n\t\tconst { getShortcutRepresentation } = select( keyboardShortcutsStore );\n\t\tconst { __unstableGetEditorMode } = select( blockEditorStore );\n\n\t\tconst postType = getEditedPostType();\n\n\t\treturn {\n\t\t\tdeviceType: __experimentalGetPreviewDeviceType(),\n\t\t\ttemplateType: postType,\n\t\t\tisInserterOpen: isInserterOpened(),\n\t\t\tisListViewOpen: isListViewOpened(),\n\t\t\tlistViewShortcut: getShortcutRepresentation(\n\t\t\t\t'core/edit-site/toggle-list-view'\n\t\t\t),\n\t\t\tisVisualMode: getEditorMode() === 'visual',\n\t\t\tsettings: getSettings(),\n\t\t\tblockEditorMode: __unstableGetEditorMode(),\n\t\t};\n\t}, [] );\n\n\tconst {\n\t\t__experimentalSetPreviewDeviceType: setPreviewDeviceType,\n\t\tsetIsInserterOpened,\n\t\tsetIsListViewOpened,\n\t} = useDispatch( editSiteStore );\n\tconst { __unstableSetEditorMode } = useDispatch( blockEditorStore );\n\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\n\tconst openInserter = useCallback( () => {\n\t\tif ( isInserterOpen ) {\n\t\t\t// Focusing the inserter button closes the inserter popover.\n\t\t\tinserterButton.current.focus();\n\t\t} else {\n\t\t\tsetIsInserterOpened( true );\n\t\t}\n\t}, [ isInserterOpen, setIsInserterOpened ] );\n\n\tconst toggleListView = useCallback(\n\t\t() => setIsListViewOpened( ! isListViewOpen ),\n\t\t[ setIsListViewOpened, isListViewOpen ]\n\t);\n\n\tconst isFocusMode = templateType === 'wp_template_part';\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst longLabel = _x(\n\t\t'Toggle block inserter',\n\t\t'Generic label for block inserter button'\n\t);\n\tconst shortLabel = ! isInserterOpen ? __( 'Add' ) : __( 'Close' );\n\n\tconst isZoomedOutViewExperimentEnabled =\n\t\twindow?.__experimentalEnableZoomedOutView && isVisualMode;\n\tconst isZoomedOutView = blockEditorMode === 'zoom-out';\n\n\treturn (\n\t\t<div className=\"edit-site-header-edit-mode\">\n\t\t\t<NavigableToolbar\n\t\t\t\tclassName=\"edit-site-header-edit-mode__start\"\n\t\t\t\taria-label={ __( 'Document tools' ) }\n\t\t\t>\n\t\t\t\t<div className=\"edit-site-header-edit-mode__toolbar\">\n\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\tref={ inserterButton }\n\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\tclassName=\"edit-site-header-edit-mode__inserter-toggle\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tisPressed={ isInserterOpen }\n\t\t\t\t\t\tonMouseDown={ preventDefault }\n\t\t\t\t\t\tonClick={ openInserter }\n\t\t\t\t\t\tdisabled={ ! isVisualMode }\n\t\t\t\t\t\ticon={ plus }\n\t\t\t\t\t\tlabel={ showIconLabels ? shortLabel : longLabel }\n\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isLargeViewport && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ ToolSelector }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ ! isVisualMode }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ UndoButton }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ RedoButton }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\t\tclassName=\"edit-site-header-edit-mode__list-view-toggle\"\n\t\t\t\t\t\t\t\tdisabled={ ! isVisualMode && isZoomedOutView }\n\t\t\t\t\t\t\t\ticon={ listView }\n\t\t\t\t\t\t\t\tisPressed={ isListViewOpen }\n\t\t\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\t\t\tlabel={ __( 'List View' ) }\n\t\t\t\t\t\t\t\tonClick={ toggleListView }\n\t\t\t\t\t\t\t\tshortcut={ listViewShortcut }\n\t\t\t\t\t\t\t\tshowTooltip={ ! showIconLabels }\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tshowIconLabels ? 'tertiary' : undefined\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ isZoomedOutViewExperimentEnabled && (\n\t\t\t\t\t\t\t\t<ToolbarItem\n\t\t\t\t\t\t\t\t\tas={ Button }\n\t\t\t\t\t\t\t\t\ticon={ chevronUpDown }\n\t\t\t\t\t\t\t\t\tisPressed={ isZoomedOutView }\n\t\t\t\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Zoom-out View' ) }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tsetPreviewDeviceType( 'desktop' );\n\t\t\t\t\t\t\t\t\t\t__unstableSetEditorMode(\n\t\t\t\t\t\t\t\t\t\t\tisZoomedOutView\n\t\t\t\t\t\t\t\t\t\t\t\t? 'edit'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'zoom-out'\n\t\t\t\t\t\t\t\t\t\t);\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) }\n\t\t\t\t</div>\n\t\t\t</NavigableToolbar>\n\n\t\t\t<div className=\"edit-site-header-edit-mode__center\">\n\t\t\t\t<DocumentActions />\n\t\t\t</div>\n\n\t\t\t<div className=\"edit-site-header-edit-mode__end\">\n\t\t\t\t<div className=\"edit-site-header-edit-mode__actions\">\n\t\t\t\t\t{ ! isFocusMode && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'edit-site-header-edit-mode__preview-options',\n\t\t\t\t\t\t\t\t{ 'is-zoomed-out': isZoomedOutView }\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<PreviewOptions\n\t\t\t\t\t\t\t\tdeviceType={ deviceType }\n\t\t\t\t\t\t\t\tsetDeviceType={ setPreviewDeviceType }\n\t\t\t\t\t\t\t\t/* translators: button label text should, if possible, be under 16 characters. */\n\t\t\t\t\t\t\t\tviewLabel={ __( 'View' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\thref={ settings?.siteUrl }\n\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'View site' ) }\n\t\t\t\t\t\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text */\n\t\t\t\t\t\t\t\t\t\t\t\t__( '(opens in a new tab)' )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t</PreviewOptions>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t\t<SaveButton\n\t\t\t\t\t\topenEntitiesSavedStates={ openEntitiesSavedStates }\n\t\t\t\t\t\tisEntitiesSavedStatesOpen={ isEntitiesSavedStatesOpen }\n\t\t\t\t\t/>\n\t\t\t\t\t<PinnedItems.Slot scope=\"core/edit-site\" />\n\t\t\t\t\t<MoreMenu showIconLabels={ showIconLabels } />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/header-edit-mode/mode-switcher/index.js"],"names":["MODES","value","label","ModeSwitcher","shortcut","mode","select","keyboardShortcutsStore","getShortcutRepresentation","isRichEditingEnabled","editSiteStore","getSettings","richEditingEnabled","isCodeEditingEnabled","codeEditingEnabled","getEditorMode","switchEditorMode","choices","map","choice"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAMA,KAAK,GAAG,CACb;AACCC,EAAAA,KAAK,EAAE,QADR;AAECC,EAAAA,KAAK,EAAE,cAAI,eAAJ;AAFR,CADa,EAKb;AACCD,EAAAA,KAAK,EAAE,MADR;AAECC,EAAAA,KAAK,EAAE,cAAI,aAAJ;AAFR,CALa,CAAd;;AAWA,SAASC,YAAT,GAAwB;AACvB,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAAqB,qBACxBC,MAAF,KAAgB;AACfF,IAAAA,QAAQ,EAAEE,MAAM,CACfC,wBADe,CAAN,CAERC,yBAFQ,CAEmB,4BAFnB,CADK;AAIfC,IAAAA,oBAAoB,EACnBH,MAAM,CAAEI,YAAF,CAAN,CAAwBC,WAAxB,GAAsCC,kBALxB;AAMfC,IAAAA,oBAAoB,EACnBP,MAAM,CAAEI,YAAF,CAAN,CAAwBC,WAAxB,GAAsCG,kBAPxB;AAQfT,IAAAA,IAAI,EAAEC,MAAM,CAAEI,YAAF,CAAN,CAAwBK,aAAxB;AARS,GAAhB,CAD0B,EAW1B,EAX0B,CAA3B;AAaA,QAAM;AAAEC,IAAAA;AAAF,MAAuB,uBAAaN,YAAb,CAA7B;AAEA,QAAMO,OAAO,GAAGjB,KAAK,CAACkB,GAAN,CAAaC,MAAF,IAAc;AACxC,QAAKA,MAAM,CAAClB,KAAP,KAAiBI,IAAtB,EAA6B;AAC5B,aAAO,EAAE,GAAGc,MAAL;AAAaf,QAAAA;AAAb,OAAP;AACA;;AACD,WAAOe,MAAP;AACA,GALe,CAAhB;AAOA,SACC,4BAAC,qBAAD;AAAW,IAAA,KAAK,EAAG,cAAI,QAAJ;AAAnB,KACC,4BAAC,2BAAD;AACC,IAAA,OAAO,EAAGF,OADX;AAEC,IAAA,KAAK,EAAGZ,IAFT;AAGC,IAAA,QAAQ,EAAGW;AAHZ,IADD,CADD;AASA;;eAEcb,Y","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItemsChoice, MenuGroup } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\n\n/**\n * Set of available mode options.\n *\n * @type {Array}\n */\nconst MODES = [\n\t{\n\t\tvalue: 'visual',\n\t\tlabel: __( 'Visual editor' ),\n\t},\n\t{\n\t\tvalue: 'text',\n\t\tlabel: __( 'Code editor' ),\n\t},\n];\n\nfunction ModeSwitcher() {\n\tconst { shortcut, mode } = useSelect(\n\t\t( select ) => ( {\n\t\t\tshortcut: select(\n\t\t\t\tkeyboardShortcutsStore\n\t\t\t).getShortcutRepresentation( 'core/edit-site/toggle-mode' ),\n\t\t\tisRichEditingEnabled:\n\t\t\t\tselect( editSiteStore ).getSettings().richEditingEnabled,\n\t\t\tisCodeEditingEnabled:\n\t\t\t\tselect( editSiteStore ).getSettings().codeEditingEnabled,\n\t\t\tmode: select( editSiteStore ).getEditorMode(),\n\t\t} ),\n\t\t[]\n\t);\n\tconst { switchEditorMode } = useDispatch( editSiteStore );\n\n\tconst choices = MODES.map( ( choice ) => {\n\t\tif ( choice.value !== mode ) {\n\t\t\treturn { ...choice, shortcut };\n\t\t}\n\t\treturn choice;\n\t} );\n\n\treturn (\n\t\t<MenuGroup label={ __( 'Editor' ) }>\n\t\t\t<MenuItemsChoice\n\t\t\t\tchoices={ choices }\n\t\t\t\tvalue={ mode }\n\t\t\t\tonSelect={ switchEditorMode }\n\t\t\t/>\n\t\t</MenuGroup>\n\t);\n}\n\nexport default ModeSwitcher;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["@wordpress/edit-site/src/components/header-edit-mode/more-menu/copy-content-menu-item.js"],"names":["CopyContentMenuItem","createNotice","noticesStore","getText","select","getEditedPostId","getEditedPostType","editSiteStore","getEditedEntityRecord","coreStore","record","content","blocks","onSuccess","isDismissible","type","ref"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAKA;;AAdA;AACA;AACA;;AASA;AACA;AACA;AAGe,SAASA,mBAAT,GAA+B;AAC7C,QAAM;AAAEC,IAAAA;AAAF,MAAmB,uBAAaC,cAAb,CAAzB;AACA,QAAMC,OAAO,GAAG,qBAAaC,MAAF,IAAc;AACxC,WAAO,MAAM;AACZ,YAAM;AAAEC,QAAAA,eAAF;AAAmBC,QAAAA;AAAnB,UACLF,MAAM,CAAEG,YAAF,CADP;AAEA,YAAM;AAAEC,QAAAA;AAAF,UAA4BJ,MAAM,CAAEK,eAAF,CAAxC;AACA,YAAMC,MAAM,GAAGF,qBAAqB,CACnC,UADmC,EAEnCF,iBAAiB,EAFkB,EAGnCD,eAAe,EAHoB,CAApC;;AAKA,UAAKK,MAAL,EAAc;AACb,YAAK,OAAOA,MAAM,CAACC,OAAd,KAA0B,UAA/B,EAA4C;AAC3C,iBAAOD,MAAM,CAACC,OAAP,CAAgBD,MAAhB,CAAP;AACA,SAFD,MAEO,IAAKA,MAAM,CAACE,MAAZ,EAAqB;AAC3B,iBAAO,yCAA6BF,MAAM,CAACE,MAApC,CAAP;AACA,SAFM,MAEA,IAAKF,MAAM,CAACC,OAAZ,EAAsB;AAC5B,iBAAOD,MAAM,CAACC,OAAd;AACA;AACD;;AACD,aAAO,EAAP;AACA,KAnBD;AAoBA,GArBe,EAqBb,EArBa,CAAhB;;AAuBA,WAASE,SAAT,GAAqB;AACpBZ,IAAAA,YAAY,CAAE,MAAF,EAAU,cAAI,qBAAJ,CAAV,EAAuC;AAClDa,MAAAA,aAAa,EAAE,IADmC;AAElDC,MAAAA,IAAI,EAAE;AAF4C,KAAvC,CAAZ;AAIA;;AAED,QAAMC,GAAG,GAAG,iCAAoBb,OAApB,EAA6BU,SAA7B,CAAZ;AAEA,SAAO,4BAAC,oBAAD;AAAU,IAAA,GAAG,EAAGG;AAAhB,KAAwB,cAAI,iBAAJ,CAAxB,CAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { useCopyToClipboard } from '@wordpress/compose';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { __unstableSerializeAndClean } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\n\nexport default function CopyContentMenuItem() {\n\tconst { createNotice } = useDispatch( noticesStore );\n\tconst getText = useSelect( ( select ) => {\n\t\treturn () => {\n\t\t\tconst { getEditedPostId, getEditedPostType } =\n\t\t\t\tselect( editSiteStore );\n\t\t\tconst { getEditedEntityRecord } = select( coreStore );\n\t\t\tconst record = getEditedEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tgetEditedPostType(),\n\t\t\t\tgetEditedPostId()\n\t\t\t);\n\t\t\tif ( record ) {\n\t\t\t\tif ( typeof record.content === 'function' ) {\n\t\t\t\t\treturn record.content( record );\n\t\t\t\t} else if ( record.blocks ) {\n\t\t\t\t\treturn __unstableSerializeAndClean( record.blocks );\n\t\t\t\t} else if ( record.content ) {\n\t\t\t\t\treturn record.content;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn '';\n\t\t};\n\t}, [] );\n\n\tfunction onSuccess() {\n\t\tcreateNotice( 'info', __( 'All content copied.' ), {\n\t\t\tisDismissible: true,\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}\n\n\tconst ref = useCopyToClipboard( getText, onSuccess );\n\n\treturn <MenuItem ref={ ref }>{ __( 'Copy all blocks' ) }</MenuItem>;\n}\n"]}