@wordpress/edit-site 5.28.2 → 5.29.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 (258) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-pattern/index.js +18 -8
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/block-editor/use-site-editor-settings.js +2 -1
  5. package/build/components/block-editor/use-site-editor-settings.js.map +1 -1
  6. package/build/components/code-editor/index.js +3 -2
  7. package/build/components/code-editor/index.js.map +1 -1
  8. package/build/components/editor/index.js +4 -4
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/editor-canvas-container/index.js +1 -1
  11. package/build/components/editor-canvas-container/index.js.map +1 -1
  12. package/build/components/global-styles/block-preview-panel.js +2 -2
  13. package/build/components/global-styles/block-preview-panel.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  15. package/build/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/font-collection.js +84 -7
  17. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  19. package/build/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/installed-fonts.js +10 -7
  21. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  22. package/build/components/header-edit-mode/document-tools/index.js +1 -2
  23. package/build/components/header-edit-mode/document-tools/index.js.map +1 -1
  24. package/build/components/header-edit-mode/index.js +3 -1
  25. package/build/components/header-edit-mode/index.js.map +1 -1
  26. package/build/components/header-edit-mode/more-menu/index.js +7 -4
  27. package/build/components/header-edit-mode/more-menu/index.js.map +1 -1
  28. package/build/components/keyboard-shortcuts/edit-mode.js +0 -13
  29. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  30. package/build/components/keyboard-shortcuts/register.js +0 -18
  31. package/build/components/keyboard-shortcuts/register.js.map +1 -1
  32. package/build/components/layout/index.js +8 -4
  33. package/build/components/layout/index.js.map +1 -1
  34. package/build/components/layout/router.js +26 -5
  35. package/build/components/layout/router.js.map +1 -1
  36. package/build/components/page-patterns/dataviews-pattern-actions.js +25 -8
  37. package/build/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  38. package/build/components/page-patterns/header.js +2 -1
  39. package/build/components/page-patterns/header.js.map +1 -1
  40. package/build/components/page-patterns/index.js +0 -1
  41. package/build/components/page-patterns/index.js.map +1 -1
  42. package/build/components/page-patterns/use-patterns.js +10 -5
  43. package/build/components/page-patterns/use-patterns.js.map +1 -1
  44. package/build/components/page-templates-template-parts/index.js +1 -0
  45. package/build/components/page-templates-template-parts/index.js.map +1 -1
  46. package/build/components/save-button/index.js +2 -1
  47. package/build/components/save-button/index.js.map +1 -1
  48. package/build/components/sidebar/index.js +5 -2
  49. package/build/components/sidebar/index.js.map +1 -1
  50. package/build/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  51. package/build/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  52. package/build/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  53. package/build/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  54. package/build/components/sidebar-edit-mode/template-panel/index.js +48 -5
  55. package/build/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  56. package/build/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  57. package/build/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  58. package/build/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  59. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  60. package/build/components/sidebar-navigation-screen-pages/index.js +3 -1
  61. package/build/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  62. package/build/components/style-book/index.js +2 -0
  63. package/build/components/style-book/index.js.map +1 -1
  64. package/build/hooks/commands/use-edit-mode-commands.js +3 -171
  65. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  66. package/build/hooks/index.js +0 -1
  67. package/build/hooks/index.js.map +1 -1
  68. package/build/hooks/push-changes-to-global-styles/index.js +4 -5
  69. package/build/hooks/push-changes-to-global-styles/index.js.map +1 -1
  70. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +91 -0
  71. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  72. package/build/store/actions.js +19 -50
  73. package/build/store/actions.js.map +1 -1
  74. package/build/store/private-actions.js +3 -1
  75. package/build/store/private-actions.js.map +1 -1
  76. package/build/utils/clone-deep.js +15 -0
  77. package/build/utils/clone-deep.js.map +1 -0
  78. package/build-module/components/add-new-pattern/index.js +18 -8
  79. package/build-module/components/add-new-pattern/index.js.map +1 -1
  80. package/build-module/components/block-editor/use-site-editor-settings.js +2 -1
  81. package/build-module/components/block-editor/use-site-editor-settings.js.map +1 -1
  82. package/build-module/components/code-editor/index.js +3 -2
  83. package/build-module/components/code-editor/index.js.map +1 -1
  84. package/build-module/components/editor/index.js +4 -4
  85. package/build-module/components/editor/index.js.map +1 -1
  86. package/build-module/components/editor-canvas-container/index.js +2 -2
  87. package/build-module/components/editor-canvas-container/index.js.map +1 -1
  88. package/build-module/components/global-styles/block-preview-panel.js +2 -2
  89. package/build-module/components/global-styles/block-preview-panel.js.map +1 -1
  90. package/build-module/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  91. package/build-module/components/global-styles/font-library-modal/collection-font-details.js.map +1 -1
  92. package/build-module/components/global-styles/font-library-modal/font-collection.js +87 -10
  93. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  94. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  95. package/build-module/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js.map +1 -1
  96. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +11 -8
  97. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  98. package/build-module/components/header-edit-mode/document-tools/index.js +1 -2
  99. package/build-module/components/header-edit-mode/document-tools/index.js.map +1 -1
  100. package/build-module/components/header-edit-mode/index.js +3 -1
  101. package/build-module/components/header-edit-mode/index.js.map +1 -1
  102. package/build-module/components/header-edit-mode/more-menu/index.js +6 -3
  103. package/build-module/components/header-edit-mode/more-menu/index.js.map +1 -1
  104. package/build-module/components/keyboard-shortcuts/edit-mode.js +0 -13
  105. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  106. package/build-module/components/keyboard-shortcuts/register.js +0 -18
  107. package/build-module/components/keyboard-shortcuts/register.js.map +1 -1
  108. package/build-module/components/layout/index.js +9 -5
  109. package/build-module/components/layout/index.js.map +1 -1
  110. package/build-module/components/layout/router.js +26 -5
  111. package/build-module/components/layout/router.js.map +1 -1
  112. package/build-module/components/page-patterns/dataviews-pattern-actions.js +25 -8
  113. package/build-module/components/page-patterns/dataviews-pattern-actions.js.map +1 -1
  114. package/build-module/components/page-patterns/header.js +2 -1
  115. package/build-module/components/page-patterns/header.js.map +1 -1
  116. package/build-module/components/page-patterns/index.js +0 -1
  117. package/build-module/components/page-patterns/index.js.map +1 -1
  118. package/build-module/components/page-patterns/use-patterns.js +10 -5
  119. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  120. package/build-module/components/page-templates-template-parts/index.js +1 -0
  121. package/build-module/components/page-templates-template-parts/index.js.map +1 -1
  122. package/build-module/components/save-button/index.js +2 -1
  123. package/build-module/components/save-button/index.js.map +1 -1
  124. package/build-module/components/sidebar/index.js +5 -2
  125. package/build-module/components/sidebar/index.js.map +1 -1
  126. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js +5 -5
  127. package/build-module/components/sidebar-edit-mode/global-styles-sidebar.js.map +1 -1
  128. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js +20 -5
  129. package/build-module/components/sidebar-edit-mode/template-panel/hooks.js.map +1 -1
  130. package/build-module/components/sidebar-edit-mode/template-panel/index.js +50 -7
  131. package/build-module/components/sidebar-edit-mode/template-panel/index.js.map +1 -1
  132. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js +2 -9
  133. package/build-module/components/sidebar-edit-mode/template-panel/template-actions.js.map +1 -1
  134. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +6 -2
  135. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  136. package/build-module/components/sidebar-navigation-screen-pages/index.js +3 -1
  137. package/build-module/components/sidebar-navigation-screen-pages/index.js.map +1 -1
  138. package/build-module/components/style-book/index.js +2 -0
  139. package/build-module/components/style-book/index.js.map +1 -1
  140. package/build-module/hooks/commands/use-edit-mode-commands.js +4 -172
  141. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  142. package/build-module/hooks/index.js +0 -1
  143. package/build-module/hooks/index.js.map +1 -1
  144. package/build-module/hooks/push-changes-to-global-styles/index.js +1 -3
  145. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  146. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +82 -0
  147. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -0
  148. package/build-module/store/actions.js +19 -50
  149. package/build-module/store/actions.js.map +1 -1
  150. package/build-module/store/private-actions.js +3 -1
  151. package/build-module/store/private-actions.js.map +1 -1
  152. package/build-module/utils/clone-deep.js +9 -0
  153. package/build-module/utils/clone-deep.js.map +1 -0
  154. package/build-style/style-rtl.css +46 -209
  155. package/build-style/style.css +46 -209
  156. package/package.json +43 -42
  157. package/src/components/add-new-pattern/index.js +27 -11
  158. package/src/components/block-editor/use-site-editor-settings.js +1 -0
  159. package/src/components/code-editor/index.js +3 -2
  160. package/src/components/editor/index.js +11 -7
  161. package/src/components/editor-canvas-container/index.js +2 -5
  162. package/src/components/{test → error-boundary/test}/error-boundary.js +7 -5
  163. package/src/components/global-styles/block-preview-panel.js +2 -2
  164. package/src/components/global-styles/font-library-modal/collection-font-details.js +1 -1
  165. package/src/components/global-styles/font-library-modal/font-collection.js +118 -13
  166. package/src/components/global-styles/font-library-modal/google-fonts-confirm-dialog.js +1 -1
  167. package/src/components/global-styles/font-library-modal/installed-fonts.js +25 -23
  168. package/src/components/global-styles/font-library-modal/style.scss +2 -5
  169. package/src/components/global-styles/screen-revisions/style.scss +2 -2
  170. package/src/components/global-styles/style.scss +1 -1
  171. package/src/components/header-edit-mode/document-tools/index.js +1 -2
  172. package/src/components/header-edit-mode/index.js +1 -1
  173. package/src/components/header-edit-mode/more-menu/index.js +8 -3
  174. package/src/components/keyboard-shortcuts/edit-mode.js +0 -11
  175. package/src/components/keyboard-shortcuts/register.js +0 -19
  176. package/src/components/layout/index.js +47 -32
  177. package/src/components/layout/router.js +31 -2
  178. package/src/components/layout/style.scss +7 -0
  179. package/src/components/page-patterns/dataviews-pattern-actions.js +41 -10
  180. package/src/components/page-patterns/header.js +1 -0
  181. package/src/components/page-patterns/index.js +0 -1
  182. package/src/components/page-patterns/style.scss +8 -180
  183. package/src/components/page-patterns/use-patterns.js +13 -5
  184. package/src/components/page-templates-template-parts/index.js +1 -0
  185. package/src/components/page-templates-template-parts/style.scss +6 -0
  186. package/src/components/save-button/index.js +2 -1
  187. package/src/components/save-hub/style.scss +1 -1
  188. package/src/components/sidebar/index.js +8 -3
  189. package/src/components/sidebar-button/style.scss +1 -1
  190. package/src/components/sidebar-edit-mode/global-styles-sidebar.js +5 -7
  191. package/src/components/sidebar-edit-mode/style.scss +4 -0
  192. package/src/components/sidebar-edit-mode/template-panel/hooks.js +37 -24
  193. package/src/components/sidebar-edit-mode/template-panel/index.js +76 -18
  194. package/src/components/sidebar-edit-mode/template-panel/style.scss +5 -14
  195. package/src/components/sidebar-edit-mode/template-panel/template-actions.js +1 -12
  196. package/src/components/sidebar-navigation-screen-global-styles/index.js +4 -1
  197. package/src/components/sidebar-navigation-screen-pages/index.js +10 -6
  198. package/src/components/style-book/index.js +5 -1
  199. package/src/hooks/commands/use-edit-mode-commands.js +3 -184
  200. package/src/hooks/index.js +0 -1
  201. package/src/hooks/push-changes-to-global-styles/index.js +1 -4
  202. package/src/hooks/use-theme-style-variations/test/use-theme-style-variations-by-property.js +964 -0
  203. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +92 -0
  204. package/src/store/actions.js +21 -85
  205. package/src/store/private-actions.js +4 -0
  206. package/src/store/test/actions.js +0 -75
  207. package/src/style.scss +1 -6
  208. package/src/utils/clone-deep.js +8 -0
  209. package/build/components/global-styles/font-library-modal/fonts-grid.js +0 -57
  210. package/build/components/global-styles/font-library-modal/fonts-grid.js.map +0 -1
  211. package/build/components/header-edit-mode/mode-switcher/index.js +0 -62
  212. package/build/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  213. package/build/components/page-patterns/duplicate-menu-item.js +0 -93
  214. package/build/components/page-patterns/duplicate-menu-item.js.map +0 -1
  215. package/build/components/page-patterns/grid-item.js +0 -223
  216. package/build/components/page-patterns/grid-item.js.map +0 -1
  217. package/build/components/page-patterns/grid.js +0 -31
  218. package/build/components/page-patterns/grid.js.map +0 -1
  219. package/build/components/page-patterns/no-patterns.js +0 -18
  220. package/build/components/page-patterns/no-patterns.js.map +0 -1
  221. package/build/components/page-patterns/patterns-list.js +0 -168
  222. package/build/components/page-patterns/patterns-list.js.map +0 -1
  223. package/build/components/page-patterns/rename-menu-item.js +0 -105
  224. package/build/components/page-patterns/rename-menu-item.js.map +0 -1
  225. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -83
  226. package/build/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  227. package/build/hooks/navigation-menu-edit.js +0 -82
  228. package/build/hooks/navigation-menu-edit.js.map +0 -1
  229. package/build-module/components/global-styles/font-library-modal/fonts-grid.js +0 -50
  230. package/build-module/components/global-styles/font-library-modal/fonts-grid.js.map +0 -1
  231. package/build-module/components/header-edit-mode/mode-switcher/index.js +0 -56
  232. package/build-module/components/header-edit-mode/mode-switcher/index.js.map +0 -1
  233. package/build-module/components/page-patterns/duplicate-menu-item.js +0 -85
  234. package/build-module/components/page-patterns/duplicate-menu-item.js.map +0 -1
  235. package/build-module/components/page-patterns/grid-item.js +0 -215
  236. package/build-module/components/page-patterns/grid-item.js.map +0 -1
  237. package/build-module/components/page-patterns/grid.js +0 -23
  238. package/build-module/components/page-patterns/grid.js.map +0 -1
  239. package/build-module/components/page-patterns/no-patterns.js +0 -11
  240. package/build-module/components/page-patterns/no-patterns.js.map +0 -1
  241. package/build-module/components/page-patterns/patterns-list.js +0 -160
  242. package/build-module/components/page-patterns/patterns-list.js.map +0 -1
  243. package/build-module/components/page-patterns/rename-menu-item.js +0 -98
  244. package/build-module/components/page-patterns/rename-menu-item.js.map +0 -1
  245. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -76
  246. package/build-module/components/sidebar-edit-mode/template-panel/replace-template-button.js.map +0 -1
  247. package/build-module/hooks/navigation-menu-edit.js +0 -75
  248. package/build-module/hooks/navigation-menu-edit.js.map +0 -1
  249. package/src/components/global-styles/font-library-modal/fonts-grid.js +0 -59
  250. package/src/components/header-edit-mode/mode-switcher/index.js +0 -60
  251. package/src/components/page-patterns/duplicate-menu-item.js +0 -105
  252. package/src/components/page-patterns/grid-item.js +0 -331
  253. package/src/components/page-patterns/grid.js +0 -22
  254. package/src/components/page-patterns/no-patterns.js +0 -12
  255. package/src/components/page-patterns/patterns-list.js +0 -229
  256. package/src/components/page-patterns/rename-menu-item.js +0 -132
  257. package/src/components/sidebar-edit-mode/template-panel/replace-template-button.js +0 -89
  258. package/src/hooks/navigation-menu-edit.js +0 -92
@@ -1 +0,0 @@
1
- {"version":3,"names":["_components","require","_coreData","_data","_element","_i18n","_notices","_constants","RenameMenuItem","item","onClose","title","setTitle","useState","isModalOpen","setIsModalOpen","editEntityRecord","saveEditedEntityRecord","useDispatch","coreStore","createSuccessNotice","createErrorNotice","noticesStore","type","TEMPLATE_PART_POST_TYPE","isCustom","onRename","event","preventDefault","id","throwOnError","__","error","fallbackErrorMessage","errorMessage","message","code","_react","createElement","Fragment","MenuItem","onClick","Modal","onRequestClose","overlayClassName","onSubmit","__experimentalVStack","spacing","TextControl","__nextHasNoMarginBottom","__next40pxDefaultSize","label","value","onChange","required","__experimentalHStack","justify","Button","variant"],"sources":["@wordpress/edit-site/src/components/page-patterns/rename-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tMenuItem,\n\tModal,\n\tTextControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_PART_POST_TYPE } from '../../utils/constants';\n\nexport default function RenameMenuItem( { item, onClose } ) {\n\tconst [ title, setTitle ] = useState( () => item.title );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\n\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\tuseDispatch( coreStore );\n\tconst { createSuccessNotice, createErrorNotice } =\n\t\tuseDispatch( noticesStore );\n\n\tif ( item.type === TEMPLATE_PART_POST_TYPE && ! item.isCustom ) {\n\t\treturn null;\n\t}\n\n\tasync function onRename( event ) {\n\t\tevent.preventDefault();\n\n\t\ttry {\n\t\t\tawait editEntityRecord( 'postType', item.type, item.id, { title } );\n\n\t\t\t// Update state before saving rerenders the list.\n\t\t\tsetTitle( '' );\n\t\t\tsetIsModalOpen( false );\n\t\t\tonClose();\n\n\t\t\t// Persist edited entity.\n\t\t\tawait saveEditedEntityRecord( 'postType', item.type, item.id, {\n\t\t\t\tthrowOnError: true,\n\t\t\t} );\n\n\t\t\tcreateSuccessNotice(\n\t\t\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t\t\t? __( 'Template part renamed.' )\n\t\t\t\t\t: __( 'Pattern renamed.' ),\n\t\t\t\t{\n\t\t\t\t\ttype: 'snackbar',\n\t\t\t\t}\n\t\t\t);\n\t\t} catch ( error ) {\n\t\t\tconst fallbackErrorMessage =\n\t\t\t\titem.type === TEMPLATE_PART_POST_TYPE\n\t\t\t\t\t? __(\n\t\t\t\t\t\t\t'An error occurred while renaming the template part.'\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'An error occurred while renaming the pattern.' );\n\t\t\tconst errorMessage =\n\t\t\t\terror.message && error.code !== 'unknown_error'\n\t\t\t\t\t? error.message\n\t\t\t\t\t: fallbackErrorMessage;\n\n\t\t\tcreateErrorNotice( errorMessage, { type: 'snackbar' } );\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetIsModalOpen( true );\n\t\t\t\t\tsetTitle( item.title );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Rename' ) }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Rename' ) }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tonClose();\n\t\t\t\t\t} }\n\t\t\t\t\toverlayClassName=\"edit-site-list__rename-modal\"\n\t\t\t\t>\n\t\t\t\t\t<form onSubmit={ onRename }>\n\t\t\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,OAAA;AAQA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAKA,IAAAM,UAAA,GAAAN,OAAA;AApBA;AACA;AACA;;AAeA;AACA;AACA;;AAGe,SAASO,cAAcA,CAAE;EAAEC,IAAI;EAAEC;AAAQ,CAAC,EAAG;EAC3D,MAAM,CAAEC,KAAK,EAAEC,QAAQ,CAAE,GAAG,IAAAC,iBAAQ,EAAE,MAAMJ,IAAI,CAACE,KAAM,CAAC;EACxD,MAAM,CAAEG,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAAF,iBAAQ,EAAE,KAAM,CAAC;EAEzD,MAAM;IAAEG,gBAAgB;IAAEC;EAAuB,CAAC,GACjD,IAAAC,iBAAW,EAAEC,eAAU,CAAC;EACzB,MAAM;IAAEC,mBAAmB;IAAEC;EAAkB,CAAC,GAC/C,IAAAH,iBAAW,EAAEI,cAAa,CAAC;EAE5B,IAAKb,IAAI,CAACc,IAAI,KAAKC,kCAAuB,IAAI,CAAEf,IAAI,CAACgB,QAAQ,EAAG;IAC/D,OAAO,IAAI;EACZ;EAEA,eAAeC,QAAQA,CAAEC,KAAK,EAAG;IAChCA,KAAK,CAACC,cAAc,CAAC,CAAC;IAEtB,IAAI;MACH,MAAMZ,gBAAgB,CAAE,UAAU,EAAEP,IAAI,CAACc,IAAI,EAAEd,IAAI,CAACoB,EAAE,EAAE;QAAElB;MAAM,CAAE,CAAC;;MAEnE;MACAC,QAAQ,CAAE,EAAG,CAAC;MACdG,cAAc,CAAE,KAAM,CAAC;MACvBL,OAAO,CAAC,CAAC;;MAET;MACA,MAAMO,sBAAsB,CAAE,UAAU,EAAER,IAAI,CAACc,IAAI,EAAEd,IAAI,CAACoB,EAAE,EAAE;QAC7DC,YAAY,EAAE;MACf,CAAE,CAAC;MAEHV,mBAAmB,CAClBX,IAAI,CAACc,IAAI,KAAKC,kCAAuB,GAClC,IAAAO,QAAE,EAAE,wBAAyB,CAAC,GAC9B,IAAAA,QAAE,EAAE,kBAAmB,CAAC,EAC3B;QACCR,IAAI,EAAE;MACP,CACD,CAAC;IACF,CAAC,CAAC,OAAQS,KAAK,EAAG;MACjB,MAAMC,oBAAoB,GACzBxB,IAAI,CAACc,IAAI,KAAKC,kCAAuB,GAClC,IAAAO,QAAE,EACF,qDACA,CAAC,GACD,IAAAA,QAAE,EAAE,+CAAgD,CAAC;MACzD,MAAMG,YAAY,GACjBF,KAAK,CAACG,OAAO,IAAIH,KAAK,CAACI,IAAI,KAAK,eAAe,GAC5CJ,KAAK,CAACG,OAAO,GACbF,oBAAoB;MAExBZ,iBAAiB,CAAEa,YAAY,EAAE;QAAEX,IAAI,EAAE;MAAW,CAAE,CAAC;IACxD;EACD;EAEA,OACC,IAAAc,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAE,QAAA,QACC,IAAAF,MAAA,CAAAC,aAAA,EAACtC,WAAA,CAAAwC,QAAQ;IACRC,OAAO,EAAGA,CAAA,KAAM;MACf1B,cAAc,CAAE,IAAK,CAAC;MACtBH,QAAQ,CAAEH,IAAI,CAACE,KAAM,CAAC;IACvB;EAAG,GAED,IAAAoB,QAAE,EAAE,QAAS,CACN,CAAC,EACTjB,WAAW,IACZ,IAAAuB,MAAA,CAAAC,aAAA,EAACtC,WAAA,CAAA0C,KAAK;IACL/B,KAAK,EAAG,IAAAoB,QAAE,EAAE,QAAS,CAAG;IACxBY,cAAc,EAAGA,CAAA,KAAM;MACtB5B,cAAc,CAAE,KAAM,CAAC;MACvBL,OAAO,CAAC,CAAC;IACV,CAAG;IACHkC,gBAAgB,EAAC;EAA8B,GAE/C,IAAAP,MAAA,CAAAC,aAAA;IAAMO,QAAQ,EAAGnB;EAAU,GAC1B,IAAAW,MAAA,CAAAC,aAAA,EAACtC,WAAA,CAAA8C,oBAAM;IAACC,OAAO,EAAC;EAAG,GAClB,IAAAV,MAAA,CAAAC,aAAA,EAACtC,WAAA,CAAAgD,WAAW;IACXC,uBAAuB;IACvBC,qBAAqB;IACrBC,KAAK,EAAG,IAAApB,QAAE,EAAE,MAAO,CAAG;IACtBqB,KAAK,EAAGzC,KAAO;IACf0C,QAAQ,EAAGzC,QAAU;IACrB0C,QAAQ;EAAA,CACR,CAAC,EAEF,IAAAjB,MAAA,CAAAC,aAAA,EAACtC,WAAA,CAAAuD,oBAAM;IAACC,OAAO,EAAC;EAAO,GACtB,IAAAnB,MAAA,CAAAC,aAAA,EAACtC,WAAA,CAAAyD,MAAM;IACNP,qBAAqB;IACrBQ,OAAO,EAAC,UAAU;IAClBjB,OAAO,EAAGA,CAAA,KAAM;MACf1B,cAAc,CAAE,KAAM,CAAC;MACvBL,OAAO,CAAC,CAAC;IACV;EAAG,GAED,IAAAqB,QAAE,EAAE,QAAS,CACR,CAAC,EAET,IAAAM,MAAA,CAAAC,aAAA,EAACtC,WAAA,CAAAyD,MAAM;IACNP,qBAAqB;IACrBQ,OAAO,EAAC,SAAS;IACjBnC,IAAI,EAAC;EAAQ,GAEX,IAAAQ,QAAE,EAAE,MAAO,CACN,CACD,CACD,CACH,CACA,CAEP,CAAC;AAEL"}
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = ReplaceTemplateButton;
7
- var _react = require("react");
8
- var _data = require("@wordpress/data");
9
- var _element = require("@wordpress/element");
10
- var _blockEditor = require("@wordpress/block-editor");
11
- var _components = require("@wordpress/components");
12
- var _i18n = require("@wordpress/i18n");
13
- var _coreData = require("@wordpress/core-data");
14
- var _compose = require("@wordpress/compose");
15
- var _blocks = require("@wordpress/blocks");
16
- var _store = require("../../../store");
17
- /**
18
- * WordPress dependencies
19
- */
20
-
21
- /**
22
- * Internal dependencies
23
- */
24
-
25
- function ReplaceTemplateButton({
26
- onClick,
27
- availableTemplates
28
- }) {
29
- const {
30
- editEntityRecord
31
- } = (0, _data.useDispatch)(_coreData.store);
32
- const [showModal, setShowModal] = (0, _element.useState)(false);
33
- const onClose = () => {
34
- setShowModal(false);
35
- };
36
- const {
37
- postId,
38
- postType
39
- } = (0, _data.useSelect)(select => {
40
- return {
41
- postId: select(_store.store).getEditedPostId(),
42
- postType: select(_store.store).getEditedPostType()
43
- };
44
- }, []);
45
- const onTemplateSelect = async selectedTemplate => {
46
- onClose(); // Close the template suggestions modal first.
47
- onClick();
48
- await editEntityRecord('postType', postType, postId, {
49
- blocks: selectedTemplate.blocks,
50
- content: (0, _blocks.serialize)(selectedTemplate.blocks)
51
- });
52
- };
53
- if (!availableTemplates.length || availableTemplates.length < 1) {
54
- return null;
55
- }
56
- return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.MenuItem, {
57
- info: (0, _i18n.__)('Replace the contents of this template with another.'),
58
- onClick: () => setShowModal(true)
59
- }, (0, _i18n.__)('Replace template')), showModal && (0, _react.createElement)(_components.Modal, {
60
- title: (0, _i18n.__)('Choose a template'),
61
- onRequestClose: onClose,
62
- overlayClassName: "edit-site-template-panel__replace-template-modal",
63
- isFullScreen: true
64
- }, (0, _react.createElement)("div", {
65
- className: "edit-site-template-panel__replace-template-modal__content"
66
- }, (0, _react.createElement)(TemplatesList, {
67
- availableTemplates: availableTemplates,
68
- onSelect: onTemplateSelect
69
- }))));
70
- }
71
- function TemplatesList({
72
- availableTemplates,
73
- onSelect
74
- }) {
75
- const shownTemplates = (0, _compose.useAsyncList)(availableTemplates);
76
- return (0, _react.createElement)(_blockEditor.__experimentalBlockPatternsList, {
77
- label: (0, _i18n.__)('Templates'),
78
- blockPatterns: availableTemplates,
79
- shownPatterns: shownTemplates,
80
- onClickPattern: onSelect
81
- });
82
- }
83
- //# sourceMappingURL=replace-template-button.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_data","require","_element","_blockEditor","_components","_i18n","_coreData","_compose","_blocks","_store","ReplaceTemplateButton","onClick","availableTemplates","editEntityRecord","useDispatch","coreStore","showModal","setShowModal","useState","onClose","postId","postType","useSelect","select","editSiteStore","getEditedPostId","getEditedPostType","onTemplateSelect","selectedTemplate","blocks","content","serialize","length","_react","createElement","Fragment","MenuItem","info","__","Modal","title","onRequestClose","overlayClassName","isFullScreen","className","TemplatesList","onSelect","shownTemplates","useAsyncList","__experimentalBlockPatternsList","label","blockPatterns","shownPatterns","onClickPattern"],"sources":["@wordpress/edit-site/src/components/sidebar-edit-mode/template-panel/replace-template-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __experimentalBlockPatternsList as BlockPatternsList } from '@wordpress/block-editor';\nimport { MenuItem, Modal } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useAsyncList } from '@wordpress/compose';\nimport { serialize } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../../store';\n\nexport default function ReplaceTemplateButton( {\n\tonClick,\n\tavailableTemplates,\n} ) {\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\tconst [ showModal, setShowModal ] = useState( false );\n\tconst onClose = () => {\n\t\tsetShowModal( false );\n\t};\n\n\tconst { postId, postType } = useSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostId: select( editSiteStore ).getEditedPostId(),\n\t\t\tpostType: select( editSiteStore ).getEditedPostType(),\n\t\t};\n\t}, [] );\n\n\tconst onTemplateSelect = async ( selectedTemplate ) => {\n\t\tonClose(); // Close the template suggestions modal first.\n\t\tonClick();\n\t\tawait editEntityRecord( 'postType', postType, postId, {\n\t\t\tblocks: selectedTemplate.blocks,\n\t\t\tcontent: serialize( selectedTemplate.blocks ),\n\t\t} );\n\t};\n\n\tif ( ! availableTemplates.length || availableTemplates.length < 1 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\tinfo={ __(\n\t\t\t\t\t'Replace the contents of this template with another.'\n\t\t\t\t) }\n\t\t\t\tonClick={ () => setShowModal( true ) }\n\t\t\t>\n\t\t\t\t{ __( 'Replace template' ) }\n\t\t\t</MenuItem>\n\n\t\t\t{ showModal && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Choose a template' ) }\n\t\t\t\t\tonRequestClose={ onClose }\n\t\t\t\t\toverlayClassName=\"edit-site-template-panel__replace-template-modal\"\n\t\t\t\t\tisFullScreen\n\t\t\t\t>\n\t\t\t\t\t<div className=\"edit-site-template-panel__replace-template-modal__content\">\n\t\t\t\t\t\t<TemplatesList\n\t\t\t\t\t\t\tavailableTemplates={ availableTemplates }\n\t\t\t\t\t\t\tonSelect={ onTemplateSelect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nfunction TemplatesList( { availableTemplates, onSelect } ) {\n\tconst shownTemplates = useAsyncList( availableTemplates );\n\n\treturn (\n\t\t<BlockPatternsList\n\t\t\tlabel={ __( 'Templates' ) }\n\t\t\tblockPatterns={ availableTemplates }\n\t\t\tshownPatterns={ shownTemplates }\n\t\t\tonClickPattern={ onSelect }\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
@@ -1,82 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.withEditBlockControls = void 0;
7
- var _react = require("react");
8
- var _i18n = require("@wordpress/i18n");
9
- var _data = require("@wordpress/data");
10
- var _blockEditor = require("@wordpress/block-editor");
11
- var _coreData = require("@wordpress/core-data");
12
- var _components = require("@wordpress/components");
13
- var _hooks = require("@wordpress/hooks");
14
- var _compose = require("@wordpress/compose");
15
- var _router = require("@wordpress/router");
16
- var _link = require("../components/routes/link");
17
- var _lockUnlock = require("../lock-unlock");
18
- var _constants = require("../utils/constants");
19
- /**
20
- * WordPress dependencies
21
- */
22
-
23
- /**
24
- * Internal dependencies
25
- */
26
-
27
- const {
28
- useLocation
29
- } = (0, _lockUnlock.unlock)(_router.privateApis);
30
- function NavigationMenuEdit({
31
- attributes
32
- }) {
33
- const {
34
- ref
35
- } = attributes;
36
- const {
37
- params
38
- } = useLocation();
39
- const blockEditingMode = (0, _blockEditor.useBlockEditingMode)();
40
- const navigationMenu = (0, _data.useSelect)(select => {
41
- return select(_coreData.store).getEntityRecord('postType', _constants.NAVIGATION_POST_TYPE,
42
- // Ideally this should be an official public API.
43
- ref);
44
- }, [ref]);
45
- const linkProps = (0, _link.useLink)({
46
- postId: navigationMenu?.id,
47
- postType: navigationMenu?.type,
48
- canvas: 'edit'
49
- }, {
50
- // this applies to Navigation Menus as well.
51
- fromTemplateId: params.postId || navigationMenu?.id
52
- });
53
-
54
- // A non-default setting for block editing mode indicates that the
55
- // editor should restrict "editing" actions. Therefore the `Edit` button
56
- // should not be displayed.
57
- if (!navigationMenu || blockEditingMode !== 'default') {
58
- return null;
59
- }
60
- return (0, _react.createElement)(_blockEditor.BlockControls, {
61
- group: "other"
62
- }, (0, _react.createElement)(_components.ToolbarButton, {
63
- ...linkProps,
64
- onClick: event => {
65
- linkProps.onClick(event);
66
- }
67
- }, (0, _i18n.__)('Edit')));
68
- }
69
- const withEditBlockControls = exports.withEditBlockControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
70
- const {
71
- attributes,
72
- name
73
- } = props;
74
- const isDisplayed = name === 'core/navigation' && attributes.ref;
75
- return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(BlockEdit, {
76
- ...props
77
- }), isDisplayed && (0, _react.createElement)(NavigationMenuEdit, {
78
- attributes: attributes
79
- }));
80
- }, 'withEditBlockControls');
81
- (0, _hooks.addFilter)('editor.BlockEdit', 'core/edit-site/navigation-edit-button', withEditBlockControls);
82
- //# sourceMappingURL=navigation-menu-edit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_i18n","require","_data","_blockEditor","_coreData","_components","_hooks","_compose","_router","_link","_lockUnlock","_constants","useLocation","unlock","routerPrivateApis","NavigationMenuEdit","attributes","ref","params","blockEditingMode","useBlockEditingMode","navigationMenu","useSelect","select","coreStore","getEntityRecord","NAVIGATION_POST_TYPE","linkProps","useLink","postId","id","postType","type","canvas","fromTemplateId","_react","createElement","BlockControls","group","ToolbarButton","onClick","event","__","withEditBlockControls","exports","createHigherOrderComponent","BlockEdit","props","name","isDisplayed","Fragment","addFilter"],"sources":["@wordpress/edit-site/src/hooks/navigation-menu-edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { BlockControls, useBlockEditingMode } from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { ToolbarButton } from '@wordpress/components';\nimport { addFilter } from '@wordpress/hooks';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { useLink } from '../components/routes/link';\nimport { unlock } from '../lock-unlock';\nimport { NAVIGATION_POST_TYPE } from '../utils/constants';\n\nconst { useLocation } = unlock( routerPrivateApis );\n\nfunction NavigationMenuEdit( { attributes } ) {\n\tconst { ref } = attributes;\n\tconst { params } = useLocation();\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst navigationMenu = useSelect(\n\t\t( select ) => {\n\t\t\treturn select( coreStore ).getEntityRecord(\n\t\t\t\t'postType',\n\t\t\t\tNAVIGATION_POST_TYPE,\n\t\t\t\t// Ideally this should be an official public API.\n\t\t\t\tref\n\t\t\t);\n\t\t},\n\t\t[ ref ]\n\t);\n\n\tconst linkProps = useLink(\n\t\t{\n\t\t\tpostId: navigationMenu?.id,\n\t\t\tpostType: navigationMenu?.type,\n\t\t\tcanvas: 'edit',\n\t\t},\n\t\t{\n\t\t\t// this applies to Navigation Menus as well.\n\t\t\tfromTemplateId: params.postId || navigationMenu?.id,\n\t\t}\n\t);\n\n\t// A non-default setting for block editing mode indicates that the\n\t// editor should restrict \"editing\" actions. Therefore the `Edit` button\n\t// should not be displayed.\n\tif ( ! navigationMenu || blockEditingMode !== 'default' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockControls group=\"other\">\n\t\t\t<ToolbarButton\n\t\t\t\t{ ...linkProps }\n\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\tlinkProps.onClick( event );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ __( 'Edit' ) }\n\t\t\t</ToolbarButton>\n\t\t</BlockControls>\n\t);\n}\n\nexport const withEditBlockControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { attributes, name } = props;\n\t\tconst isDisplayed = name === 'core/navigation' && attributes.ref;\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t\t{ isDisplayed && (\n\t\t\t\t\t<NavigationMenuEdit attributes={ attributes } />\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t},\n\t'withEditBlockControls'\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/edit-site/navigation-edit-button',\n\twithEditBlockControls\n);\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAKA,IAAAQ,KAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,UAAA,GAAAV,OAAA;AAjBA;AACA;AACA;;AAUA;AACA;AACA;;AAKA,MAAM;EAAEW;AAAY,CAAC,GAAG,IAAAC,kBAAM,EAAEC,mBAAkB,CAAC;AAEnD,SAASC,kBAAkBA,CAAE;EAAEC;AAAW,CAAC,EAAG;EAC7C,MAAM;IAAEC;EAAI,CAAC,GAAGD,UAAU;EAC1B,MAAM;IAAEE;EAAO,CAAC,GAAGN,WAAW,CAAC,CAAC;EAChC,MAAMO,gBAAgB,GAAG,IAAAC,gCAAmB,EAAC,CAAC;EAC9C,MAAMC,cAAc,GAAG,IAAAC,eAAS,EAC7BC,MAAM,IAAM;IACb,OAAOA,MAAM,CAAEC,eAAU,CAAC,CAACC,eAAe,CACzC,UAAU,EACVC,+BAAoB;IACpB;IACAT,GACD,CAAC;EACF,CAAC,EACD,CAAEA,GAAG,CACN,CAAC;EAED,MAAMU,SAAS,GAAG,IAAAC,aAAO,EACxB;IACCC,MAAM,EAAER,cAAc,EAAES,EAAE;IAC1BC,QAAQ,EAAEV,cAAc,EAAEW,IAAI;IAC9BC,MAAM,EAAE;EACT,CAAC,EACD;IACC;IACAC,cAAc,EAAEhB,MAAM,CAACW,MAAM,IAAIR,cAAc,EAAES;EAClD,CACD,CAAC;;EAED;EACA;EACA;EACA,IAAK,CAAET,cAAc,IAAIF,gBAAgB,KAAK,SAAS,EAAG;IACzD,OAAO,IAAI;EACZ;EAEA,OACC,IAAAgB,MAAA,CAAAC,aAAA,EAACjC,YAAA,CAAAkC,aAAa;IAACC,KAAK,EAAC;EAAO,GAC3B,IAAAH,MAAA,CAAAC,aAAA,EAAC/B,WAAA,CAAAkC,aAAa;IAAA,GACRZ,SAAS;IACda,OAAO,EAAKC,KAAK,IAAM;MACtBd,SAAS,CAACa,OAAO,CAAEC,KAAM,CAAC;IAC3B;EAAG,GAED,IAAAC,QAAE,EAAE,MAAO,CACC,CACD,CAAC;AAElB;AAEO,MAAMC,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAG,IAAAE,mCAA0B,EAC5DC,SAAS,IAAQC,KAAK,IAAM;EAC7B,MAAM;IAAE/B,UAAU;IAAEgC;EAAK,CAAC,GAAGD,KAAK;EAClC,MAAME,WAAW,GAAGD,IAAI,KAAK,iBAAiB,IAAIhC,UAAU,CAACC,GAAG;EAEhE,OACC,IAAAkB,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAe,QAAA,QACC,IAAAf,MAAA,CAAAC,aAAA,EAACU,SAAS;IAAA,GAAMC;EAAK,CAAI,CAAC,EACxBE,WAAW,IACZ,IAAAd,MAAA,CAAAC,aAAA,EAACrB,kBAAkB;IAACC,UAAU,EAAGA;EAAY,CAAE,CAE/C,CAAC;AAEL,CAAC,EACD,uBACD,CAAC;AAED,IAAAmC,gBAAS,EACR,kBAAkB,EAClB,uCAAuC,EACvCR,qBACD,CAAC"}
@@ -1,50 +0,0 @@
1
- import { createElement, Fragment } from "react";
2
- /**
3
- * WordPress dependencies
4
- */
5
- import { __experimentalVStack as VStack, __experimentalText as Text, __experimentalSpacer as Spacer } from '@wordpress/components';
6
- import { useState, useEffect } from '@wordpress/element';
7
- function FontsGrid({
8
- title,
9
- children,
10
- pageSize = 32
11
- }) {
12
- const [lastItem, setLastItem] = useState(null);
13
- const [page, setPage] = useState(1);
14
- const itemsLimit = page * pageSize;
15
- const items = children.slice(0, itemsLimit);
16
- useEffect(() => {
17
- if (lastItem) {
18
- const observer = new window.IntersectionObserver(([entry]) => {
19
- if (entry.isIntersecting) {
20
- setPage(prevPage => prevPage + 1);
21
- }
22
- });
23
- observer.observe(lastItem);
24
- return () => observer.disconnect();
25
- }
26
- }, [lastItem]);
27
- return createElement("div", {
28
- className: "font-library-modal__fonts-grid"
29
- }, createElement(VStack, {
30
- spacing: 0
31
- }, title && createElement(Fragment, null, createElement(Text, {
32
- className: "font-library-modal__subtitle"
33
- }, title), createElement(Spacer, {
34
- margin: 2
35
- })), createElement("div", {
36
- className: "font-library-modal__fonts-grid__main"
37
- }, items.map((child, i) => {
38
- if (i === itemsLimit - 1) {
39
- return createElement("div", {
40
- key: child.key,
41
- ref: setLastItem
42
- }, child);
43
- }
44
- return createElement("div", {
45
- key: child.key
46
- }, child);
47
- }))));
48
- }
49
- export default FontsGrid;
50
- //# sourceMappingURL=fonts-grid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["__experimentalVStack","VStack","__experimentalText","Text","__experimentalSpacer","Spacer","useState","useEffect","FontsGrid","title","children","pageSize","lastItem","setLastItem","page","setPage","itemsLimit","items","slice","observer","window","IntersectionObserver","entry","isIntersecting","prevPage","observe","disconnect","createElement","className","spacing","Fragment","margin","map","child","i","key","ref"],"sources":["@wordpress/edit-site/src/components/global-styles/font-library-modal/fonts-grid.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalVStack as VStack,\n\t__experimentalText as Text,\n\t__experimentalSpacer as Spacer,\n} from '@wordpress/components';\nimport { useState, useEffect } from '@wordpress/element';\n\nfunction FontsGrid( { title, children, pageSize = 32 } ) {\n\tconst [ lastItem, setLastItem ] = useState( null );\n\tconst [ page, setPage ] = useState( 1 );\n\tconst itemsLimit = page * pageSize;\n\tconst items = children.slice( 0, itemsLimit );\n\n\tuseEffect( () => {\n\t\tif ( lastItem ) {\n\t\t\tconst observer = new window.IntersectionObserver( ( [ entry ] ) => {\n\t\t\t\tif ( entry.isIntersecting ) {\n\t\t\t\t\tsetPage( ( prevPage ) => prevPage + 1 );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tobserver.observe( lastItem );\n\n\t\t\treturn () => observer.disconnect();\n\t\t}\n\t}, [ lastItem ] );\n\n\treturn (\n\t\t<div className=\"font-library-modal__fonts-grid\">\n\t\t\t<VStack spacing={ 0 }>\n\t\t\t\t{ title && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Text className=\"font-library-modal__subtitle\">\n\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Spacer margin={ 2 } />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t\t<div className=\"font-library-modal__fonts-grid__main\">\n\t\t\t\t\t{ items.map( ( child, i ) => {\n\t\t\t\t\t\tif ( i === itemsLimit - 1 ) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={ child.key } ref={ setLastItem }>\n\t\t\t\t\t\t\t\t\t{ child }\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn <div key={ child.key }>{ child }</div>;\n\t\t\t\t\t} ) }\n\t\t\t\t</div>\n\t\t\t</VStack>\n\t\t</div>\n\t);\n}\n\nexport default FontsGrid;\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,oBAAoB,IAAIC,MAAM,EAC9BC,kBAAkB,IAAIC,IAAI,EAC1BC,oBAAoB,IAAIC,MAAM,QACxB,uBAAuB;AAC9B,SAASC,QAAQ,EAAEC,SAAS,QAAQ,oBAAoB;AAExD,SAASC,SAASA,CAAE;EAAEC,KAAK;EAAEC,QAAQ;EAAEC,QAAQ,GAAG;AAAG,CAAC,EAAG;EACxD,MAAM,CAAEC,QAAQ,EAAEC,WAAW,CAAE,GAAGP,QAAQ,CAAE,IAAK,CAAC;EAClD,MAAM,CAAEQ,IAAI,EAAEC,OAAO,CAAE,GAAGT,QAAQ,CAAE,CAAE,CAAC;EACvC,MAAMU,UAAU,GAAGF,IAAI,GAAGH,QAAQ;EAClC,MAAMM,KAAK,GAAGP,QAAQ,CAACQ,KAAK,CAAE,CAAC,EAAEF,UAAW,CAAC;EAE7CT,SAAS,CAAE,MAAM;IAChB,IAAKK,QAAQ,EAAG;MACf,MAAMO,QAAQ,GAAG,IAAIC,MAAM,CAACC,oBAAoB,CAAE,CAAE,CAAEC,KAAK,CAAE,KAAM;QAClE,IAAKA,KAAK,CAACC,cAAc,EAAG;UAC3BR,OAAO,CAAIS,QAAQ,IAAMA,QAAQ,GAAG,CAAE,CAAC;QACxC;MACD,CAAE,CAAC;MAEHL,QAAQ,CAACM,OAAO,CAAEb,QAAS,CAAC;MAE5B,OAAO,MAAMO,QAAQ,CAACO,UAAU,CAAC,CAAC;IACnC;EACD,CAAC,EAAE,CAAEd,QAAQ,CAAG,CAAC;EAEjB,OACCe,aAAA;IAAKC,SAAS,EAAC;EAAgC,GAC9CD,aAAA,CAAC1B,MAAM;IAAC4B,OAAO,EAAG;EAAG,GAClBpB,KAAK,IACNkB,aAAA,CAAAG,QAAA,QACCH,aAAA,CAACxB,IAAI;IAACyB,SAAS,EAAC;EAA8B,GAC3CnB,KACG,CAAC,EACPkB,aAAA,CAACtB,MAAM;IAAC0B,MAAM,EAAG;EAAG,CAAE,CACrB,CACF,EACDJ,aAAA;IAAKC,SAAS,EAAC;EAAsC,GAClDX,KAAK,CAACe,GAAG,CAAE,CAAEC,KAAK,EAAEC,CAAC,KAAM;IAC5B,IAAKA,CAAC,KAAKlB,UAAU,GAAG,CAAC,EAAG;MAC3B,OACCW,aAAA;QAAKQ,GAAG,EAAGF,KAAK,CAACE,GAAK;QAACC,GAAG,EAAGvB;MAAa,GACvCoB,KACE,CAAC;IAER;IACA,OAAON,aAAA;MAAKQ,GAAG,EAAGF,KAAK,CAACE;IAAK,GAAGF,KAAY,CAAC;EAC9C,CAAE,CACE,CACE,CACJ,CAAC;AAER;AAEA,eAAezB,SAAS"}
@@ -1,56 +0,0 @@
1
- import { createElement } from "react";
2
- /**
3
- * WordPress dependencies
4
- */
5
- import { __ } from '@wordpress/i18n';
6
- import { MenuItemsChoice, MenuGroup } from '@wordpress/components';
7
- import { useSelect, useDispatch } from '@wordpress/data';
8
- import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
9
-
10
- /**
11
- * Internal dependencies
12
- */
13
- import { store as editSiteStore } from '../../../store';
14
-
15
- /**
16
- * Set of available mode options.
17
- *
18
- * @type {Array}
19
- */
20
- const MODES = [{
21
- value: 'visual',
22
- label: __('Visual editor')
23
- }, {
24
- value: 'text',
25
- label: __('Code editor')
26
- }];
27
- function ModeSwitcher() {
28
- const {
29
- shortcut,
30
- mode
31
- } = useSelect(select => ({
32
- shortcut: select(keyboardShortcutsStore).getShortcutRepresentation('core/edit-site/toggle-mode'),
33
- mode: select(editSiteStore).getEditorMode()
34
- }), []);
35
- const {
36
- switchEditorMode
37
- } = useDispatch(editSiteStore);
38
- const choices = MODES.map(choice => {
39
- if (choice.value !== mode) {
40
- return {
41
- ...choice,
42
- shortcut
43
- };
44
- }
45
- return choice;
46
- });
47
- return createElement(MenuGroup, {
48
- label: __('Editor')
49
- }, createElement(MenuItemsChoice, {
50
- choices: choices,
51
- value: mode,
52
- onSelect: switchEditorMode
53
- }));
54
- }
55
- export default ModeSwitcher;
56
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["__","MenuItemsChoice","MenuGroup","useSelect","useDispatch","store","keyboardShortcutsStore","editSiteStore","MODES","value","label","ModeSwitcher","shortcut","mode","select","getShortcutRepresentation","getEditorMode","switchEditorMode","choices","map","choice","createElement","onSelect"],"sources":["@wordpress/edit-site/src/components/header-edit-mode/mode-switcher/index.js"],"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\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"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,eAAe,EAAEC,SAAS,QAAQ,uBAAuB;AAClE,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,KAAK,IAAIC,sBAAsB,QAAQ,+BAA+B;;AAE/E;AACA;AACA;AACA,SAASD,KAAK,IAAIE,aAAa,QAAQ,gBAAgB;;AAEvD;AACA;AACA;AACA;AACA;AACA,MAAMC,KAAK,GAAG,CACb;EACCC,KAAK,EAAE,QAAQ;EACfC,KAAK,EAAEV,EAAE,CAAE,eAAgB;AAC5B,CAAC,EACD;EACCS,KAAK,EAAE,MAAM;EACbC,KAAK,EAAEV,EAAE,CAAE,aAAc;AAC1B,CAAC,CACD;AAED,SAASW,YAAYA,CAAA,EAAG;EACvB,MAAM;IAAEC,QAAQ;IAAEC;EAAK,CAAC,GAAGV,SAAS,CACjCW,MAAM,KAAQ;IACfF,QAAQ,EAAEE,MAAM,CACfR,sBACD,CAAC,CAACS,yBAAyB,CAAE,4BAA6B,CAAC;IAC3DF,IAAI,EAAEC,MAAM,CAAEP,aAAc,CAAC,CAACS,aAAa,CAAC;EAC7C,CAAC,CAAE,EACH,EACD,CAAC;EACD,MAAM;IAAEC;EAAiB,CAAC,GAAGb,WAAW,CAAEG,aAAc,CAAC;EAEzD,MAAMW,OAAO,GAAGV,KAAK,CAACW,GAAG,CAAIC,MAAM,IAAM;IACxC,IAAKA,MAAM,CAACX,KAAK,KAAKI,IAAI,EAAG;MAC5B,OAAO;QAAE,GAAGO,MAAM;QAAER;MAAS,CAAC;IAC/B;IACA,OAAOQ,MAAM;EACd,CAAE,CAAC;EAEH,OACCC,aAAA,CAACnB,SAAS;IAACQ,KAAK,EAAGV,EAAE,CAAE,QAAS;EAAG,GAClCqB,aAAA,CAACpB,eAAe;IACfiB,OAAO,EAAGA,OAAS;IACnBT,KAAK,EAAGI,IAAM;IACdS,QAAQ,EAAGL;EAAkB,CAC7B,CACS,CAAC;AAEd;AAEA,eAAeN,YAAY"}
@@ -1,85 +0,0 @@
1
- import { createElement, Fragment } from "react";
2
- /**
3
- * WordPress dependencies
4
- */
5
- import { MenuItem } from '@wordpress/components';
6
- import { useDispatch } from '@wordpress/data';
7
- import { useState } from '@wordpress/element';
8
- import { __, sprintf } from '@wordpress/i18n';
9
- import { store as noticesStore } from '@wordpress/notices';
10
- import { privateApis as patternsPrivateApis } from '@wordpress/patterns';
11
- import { privateApis as routerPrivateApis } from '@wordpress/router';
12
-
13
- /**
14
- * Internal dependencies
15
- */
16
- import { TEMPLATE_PART_POST_TYPE, PATTERN_TYPES } from '../../utils/constants';
17
- import { unlock } from '../../lock-unlock';
18
- import CreateTemplatePartModal from '../create-template-part-modal';
19
- const {
20
- DuplicatePatternModal
21
- } = unlock(patternsPrivateApis);
22
- const {
23
- useHistory
24
- } = unlock(routerPrivateApis);
25
- export default function DuplicateMenuItem({
26
- categoryId,
27
- item,
28
- label = __('Duplicate'),
29
- onClose
30
- }) {
31
- const {
32
- createSuccessNotice
33
- } = useDispatch(noticesStore);
34
- const [isModalOpen, setIsModalOpen] = useState(false);
35
- const history = useHistory();
36
- const closeModal = () => setIsModalOpen(false);
37
- const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
38
- const isThemePattern = item.type === PATTERN_TYPES.theme;
39
- async function onTemplatePartSuccess(templatePart) {
40
- createSuccessNotice(sprintf(
41
- // translators: %s: The new template part's title e.g. 'Call to action (copy)'.
42
- __('"%s" duplicated.'), item.title), {
43
- type: 'snackbar',
44
- id: 'edit-site-patterns-success'
45
- });
46
- history.push({
47
- postType: TEMPLATE_PART_POST_TYPE,
48
- postId: templatePart?.id,
49
- categoryType: TEMPLATE_PART_POST_TYPE,
50
- categoryId
51
- });
52
- onClose();
53
- }
54
- function onPatternSuccess({
55
- pattern
56
- }) {
57
- history.push({
58
- categoryType: PATTERN_TYPES.theme,
59
- categoryId,
60
- postType: PATTERN_TYPES.user,
61
- postId: pattern.id
62
- });
63
- onClose();
64
- }
65
- return createElement(Fragment, null, createElement(MenuItem, {
66
- onClick: () => setIsModalOpen(true),
67
- "aria-expanded": isModalOpen,
68
- "aria-haspopup": "dialog"
69
- }, label), isModalOpen && !isTemplatePart && createElement(DuplicatePatternModal, {
70
- onClose: closeModal,
71
- onSuccess: onPatternSuccess,
72
- pattern: isThemePattern ? item : item.patternPost
73
- }), isModalOpen && isTemplatePart && createElement(CreateTemplatePartModal, {
74
- blocks: item.blocks,
75
- closeModal: closeModal,
76
- confirmLabel: __('Duplicate'),
77
- defaultArea: item.templatePart.area,
78
- defaultTitle: sprintf( /* translators: %s: Existing template part title */
79
- __('%s (Copy)'), item.title),
80
- modalTitle: __('Duplicate template part'),
81
- onCreate: onTemplatePartSuccess,
82
- onError: closeModal
83
- }));
84
- }
85
- //# sourceMappingURL=duplicate-menu-item.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["MenuItem","useDispatch","useState","__","sprintf","store","noticesStore","privateApis","patternsPrivateApis","routerPrivateApis","TEMPLATE_PART_POST_TYPE","PATTERN_TYPES","unlock","CreateTemplatePartModal","DuplicatePatternModal","useHistory","DuplicateMenuItem","categoryId","item","label","onClose","createSuccessNotice","isModalOpen","setIsModalOpen","history","closeModal","isTemplatePart","type","isThemePattern","theme","onTemplatePartSuccess","templatePart","title","id","push","postType","postId","categoryType","onPatternSuccess","pattern","user","createElement","Fragment","onClick","onSuccess","patternPost","blocks","confirmLabel","defaultArea","area","defaultTitle","modalTitle","onCreate","onError"],"sources":["@wordpress/edit-site/src/components/page-patterns/duplicate-menu-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { privateApis as patternsPrivateApis } from '@wordpress/patterns';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\n\n/**\n * Internal dependencies\n */\nimport { TEMPLATE_PART_POST_TYPE, PATTERN_TYPES } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport CreateTemplatePartModal from '../create-template-part-modal';\n\nconst { DuplicatePatternModal } = unlock( patternsPrivateApis );\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport default function DuplicateMenuItem( {\n\tcategoryId,\n\titem,\n\tlabel = __( 'Duplicate' ),\n\tonClose,\n} ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst history = useHistory();\n\n\tconst closeModal = () => setIsModalOpen( false );\n\n\tconst isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;\n\tconst isThemePattern = item.type === PATTERN_TYPES.theme;\n\n\tasync function onTemplatePartSuccess( templatePart ) {\n\t\tcreateSuccessNotice(\n\t\t\tsprintf(\n\t\t\t\t// translators: %s: The new template part's title e.g. 'Call to action (copy)'.\n\t\t\t\t__( '\"%s\" duplicated.' ),\n\t\t\t\titem.title\n\t\t\t),\n\t\t\t{\n\t\t\t\ttype: 'snackbar',\n\t\t\t\tid: 'edit-site-patterns-success',\n\t\t\t}\n\t\t);\n\n\t\thistory.push( {\n\t\t\tpostType: TEMPLATE_PART_POST_TYPE,\n\t\t\tpostId: templatePart?.id,\n\t\t\tcategoryType: TEMPLATE_PART_POST_TYPE,\n\t\t\tcategoryId,\n\t\t} );\n\n\t\tonClose();\n\t}\n\n\tfunction onPatternSuccess( { pattern } ) {\n\t\thistory.push( {\n\t\t\tcategoryType: PATTERN_TYPES.theme,\n\t\t\tcategoryId,\n\t\t\tpostType: PATTERN_TYPES.user,\n\t\t\tpostId: pattern.id,\n\t\t} );\n\n\t\tonClose();\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\taria-expanded={ isModalOpen }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ label }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && ! isTemplatePart && (\n\t\t\t\t<DuplicatePatternModal\n\t\t\t\t\tonClose={ closeModal }\n\t\t\t\t\tonSuccess={ onPatternSuccess }\n\t\t\t\t\tpattern={ isThemePattern ? item : item.patternPost }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ isModalOpen && isTemplatePart && (\n\t\t\t\t<CreateTemplatePartModal\n\t\t\t\t\tblocks={ item.blocks }\n\t\t\t\t\tcloseModal={ closeModal }\n\t\t\t\t\tconfirmLabel={ __( 'Duplicate' ) }\n\t\t\t\t\tdefaultArea={ item.templatePart.area }\n\t\t\t\t\tdefaultTitle={ sprintf(\n\t\t\t\t\t\t/* translators: %s: Existing template part title */\n\t\t\t\t\t\t__( '%s (Copy)' ),\n\t\t\t\t\t\titem.title\n\t\t\t\t\t) }\n\t\t\t\t\tmodalTitle={ __( 'Duplicate template part' ) }\n\t\t\t\t\tonCreate={ onTemplatePartSuccess }\n\t\t\t\t\tonError={ closeModal }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,KAAK,IAAIC,YAAY,QAAQ,oBAAoB;AAC1D,SAASC,WAAW,IAAIC,mBAAmB,QAAQ,qBAAqB;AACxE,SAASD,WAAW,IAAIE,iBAAiB,QAAQ,mBAAmB;;AAEpE;AACA;AACA;AACA,SAASC,uBAAuB,EAAEC,aAAa,QAAQ,uBAAuB;AAC9E,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,uBAAuB,MAAM,+BAA+B;AAEnE,MAAM;EAAEC;AAAsB,CAAC,GAAGF,MAAM,CAAEJ,mBAAoB,CAAC;AAC/D,MAAM;EAAEO;AAAW,CAAC,GAAGH,MAAM,CAAEH,iBAAkB,CAAC;AAElD,eAAe,SAASO,iBAAiBA,CAAE;EAC1CC,UAAU;EACVC,IAAI;EACJC,KAAK,GAAGhB,EAAE,CAAE,WAAY,CAAC;EACzBiB;AACD,CAAC,EAAG;EACH,MAAM;IAAEC;EAAoB,CAAC,GAAGpB,WAAW,CAAEK,YAAa,CAAC;EAC3D,MAAM,CAAEgB,WAAW,EAAEC,cAAc,CAAE,GAAGrB,QAAQ,CAAE,KAAM,CAAC;EACzD,MAAMsB,OAAO,GAAGT,UAAU,CAAC,CAAC;EAE5B,MAAMU,UAAU,GAAGA,CAAA,KAAMF,cAAc,CAAE,KAAM,CAAC;EAEhD,MAAMG,cAAc,GAAGR,IAAI,CAACS,IAAI,KAAKjB,uBAAuB;EAC5D,MAAMkB,cAAc,GAAGV,IAAI,CAACS,IAAI,KAAKhB,aAAa,CAACkB,KAAK;EAExD,eAAeC,qBAAqBA,CAAEC,YAAY,EAAG;IACpDV,mBAAmB,CAClBjB,OAAO;IACN;IACAD,EAAE,CAAE,kBAAmB,CAAC,EACxBe,IAAI,CAACc,KACN,CAAC,EACD;MACCL,IAAI,EAAE,UAAU;MAChBM,EAAE,EAAE;IACL,CACD,CAAC;IAEDT,OAAO,CAACU,IAAI,CAAE;MACbC,QAAQ,EAAEzB,uBAAuB;MACjC0B,MAAM,EAAEL,YAAY,EAAEE,EAAE;MACxBI,YAAY,EAAE3B,uBAAuB;MACrCO;IACD,CAAE,CAAC;IAEHG,OAAO,CAAC,CAAC;EACV;EAEA,SAASkB,gBAAgBA,CAAE;IAAEC;EAAQ,CAAC,EAAG;IACxCf,OAAO,CAACU,IAAI,CAAE;MACbG,YAAY,EAAE1B,aAAa,CAACkB,KAAK;MACjCZ,UAAU;MACVkB,QAAQ,EAAExB,aAAa,CAAC6B,IAAI;MAC5BJ,MAAM,EAAEG,OAAO,CAACN;IACjB,CAAE,CAAC;IAEHb,OAAO,CAAC,CAAC;EACV;EAEA,OACCqB,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACzC,QAAQ;IACR2C,OAAO,EAAGA,CAAA,KAAMpB,cAAc,CAAE,IAAK,CAAG;IACxC,iBAAgBD,WAAa;IAC7B,iBAAc;EAAQ,GAEpBH,KACO,CAAC,EACTG,WAAW,IAAI,CAAEI,cAAc,IAChCe,aAAA,CAAC3B,qBAAqB;IACrBM,OAAO,EAAGK,UAAY;IACtBmB,SAAS,EAAGN,gBAAkB;IAC9BC,OAAO,EAAGX,cAAc,GAAGV,IAAI,GAAGA,IAAI,CAAC2B;EAAa,CACpD,CACD,EACCvB,WAAW,IAAII,cAAc,IAC9Be,aAAA,CAAC5B,uBAAuB;IACvBiC,MAAM,EAAG5B,IAAI,CAAC4B,MAAQ;IACtBrB,UAAU,EAAGA,UAAY;IACzBsB,YAAY,EAAG5C,EAAE,CAAE,WAAY,CAAG;IAClC6C,WAAW,EAAG9B,IAAI,CAACa,YAAY,CAACkB,IAAM;IACtCC,YAAY,EAAG9C,OAAO,EACrB;IACAD,EAAE,CAAE,WAAY,CAAC,EACjBe,IAAI,CAACc,KACN,CAAG;IACHmB,UAAU,EAAGhD,EAAE,CAAE,yBAA0B,CAAG;IAC9CiD,QAAQ,EAAGtB,qBAAuB;IAClCuB,OAAO,EAAG5B;EAAY,CACtB,CAED,CAAC;AAEL"}
@@ -1,215 +0,0 @@
1
- import { createElement } from "react";
2
- /**
3
- * External dependencies
4
- */
5
- import classnames from 'classnames';
6
- import { paramCase as kebabCase } from 'change-case';
7
-
8
- /**
9
- * WordPress dependencies
10
- */
11
- import { BlockPreview, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
12
- import { Button, __experimentalConfirmDialog as ConfirmDialog, DropdownMenu, MenuGroup, MenuItem, __experimentalHeading as Heading, __experimentalHStack as HStack, Tooltip, Flex } from '@wordpress/components';
13
- import { useDispatch } from '@wordpress/data';
14
- import { useState, useId, memo } from '@wordpress/element';
15
- import { __, sprintf } from '@wordpress/i18n';
16
- import { Icon, header, footer, symbolFilled as uncategorized, symbol, moreVertical, lockSmall } from '@wordpress/icons';
17
- import { store as noticesStore } from '@wordpress/notices';
18
- import { store as reusableBlocksStore } from '@wordpress/reusable-blocks';
19
- import { downloadBlob } from '@wordpress/blob';
20
-
21
- /**
22
- * Internal dependencies
23
- */
24
- import RenameMenuItem from './rename-menu-item';
25
- import DuplicateMenuItem from './duplicate-menu-item';
26
- import { PATTERN_TYPES, TEMPLATE_PART_POST_TYPE, PATTERN_SYNC_TYPES } from '../../utils/constants';
27
- import { store as editSiteStore } from '../../store';
28
- import { useLink } from '../routes/link';
29
- import { unlock } from '../../lock-unlock';
30
- const {
31
- useGlobalStyle
32
- } = unlock(blockEditorPrivateApis);
33
- const templatePartIcons = {
34
- header,
35
- footer,
36
- uncategorized
37
- };
38
- function GridItem({
39
- categoryId,
40
- item,
41
- ...props
42
- }) {
43
- const descriptionId = useId();
44
- const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
45
- const [backgroundColor] = useGlobalStyle('color.background');
46
- const {
47
- removeTemplate
48
- } = useDispatch(editSiteStore);
49
- const {
50
- __experimentalDeleteReusableBlock
51
- } = useDispatch(reusableBlocksStore);
52
- const {
53
- createErrorNotice,
54
- createSuccessNotice
55
- } = useDispatch(noticesStore);
56
- const isUserPattern = item.type === PATTERN_TYPES.user;
57
- const isNonUserPattern = item.type === PATTERN_TYPES.theme;
58
- const isTemplatePart = item.type === TEMPLATE_PART_POST_TYPE;
59
- const {
60
- onClick
61
- } = useLink({
62
- postType: item.type,
63
- postId: isUserPattern ? item.id : item.name,
64
- categoryId,
65
- categoryType: isTemplatePart ? item.type : PATTERN_TYPES.theme
66
- });
67
- const isEmpty = !item.blocks?.length;
68
- const patternClassNames = classnames('edit-site-patterns__pattern', {
69
- 'is-placeholder': isEmpty
70
- });
71
- const previewClassNames = classnames('edit-site-patterns__preview', {
72
- 'is-inactive': isNonUserPattern
73
- });
74
- const deletePattern = async () => {
75
- try {
76
- await __experimentalDeleteReusableBlock(item.id);
77
- createSuccessNotice(sprintf(
78
- // translators: %s: The pattern's title e.g. 'Call to action'.
79
- __('"%s" deleted.'), item.title), {
80
- type: 'snackbar',
81
- id: 'edit-site-patterns-success'
82
- });
83
- } catch (error) {
84
- const errorMessage = error.message && error.code !== 'unknown_error' ? error.message : __('An error occurred while deleting the pattern.');
85
- createErrorNotice(errorMessage, {
86
- type: 'snackbar',
87
- id: 'edit-site-patterns-error'
88
- });
89
- }
90
- };
91
- const deleteItem = () => isTemplatePart ? removeTemplate(item) : deletePattern();
92
- const exportAsJSON = () => {
93
- const json = {
94
- __file: item.type,
95
- title: item.title || item.name,
96
- content: item.patternPost.content.raw,
97
- syncStatus: item.patternPost.wp_pattern_sync_status
98
- };
99
- return downloadBlob(`${kebabCase(item.title || item.name)}.json`, JSON.stringify(json, null, 2), 'application/json');
100
- };
101
-
102
- // Only custom patterns or custom template parts can be renamed or deleted.
103
- const isCustomPattern = isUserPattern || isTemplatePart && item.isCustom;
104
- const hasThemeFile = isTemplatePart && item.templatePart.has_theme_file;
105
- const ariaDescriptions = [];
106
- if (isCustomPattern) {
107
- // User patterns don't have descriptions, but can be edited and deleted, so include some help text.
108
- ariaDescriptions.push(__('Press Enter to edit, or Delete to delete the pattern.'));
109
- } else if (item.description) {
110
- ariaDescriptions.push(item.description);
111
- }
112
- if (isNonUserPattern) {
113
- ariaDescriptions.push(__('Theme & plugin patterns cannot be edited.'));
114
- }
115
- let itemIcon;
116
- if (!isUserPattern && templatePartIcons[categoryId]) {
117
- itemIcon = templatePartIcons[categoryId];
118
- } else {
119
- itemIcon = item.syncStatus === PATTERN_SYNC_TYPES.full ? symbol : undefined;
120
- }
121
- const confirmButtonText = hasThemeFile ? __('Clear') : __('Delete');
122
- const confirmPrompt = hasThemeFile ? __('Are you sure you want to clear these customizations?') : sprintf(
123
- // translators: %s: The pattern or template part's title e.g. 'Call to action'.
124
- __('Are you sure you want to delete "%s"?'), item.title || item.name);
125
- const additionalStyles = !backgroundColor ? [{
126
- css: 'body { background: #fff; }'
127
- }] : undefined;
128
- return createElement("li", {
129
- className: patternClassNames
130
- }, createElement("button", {
131
- className: previewClassNames,
132
- id: `edit-site-patterns-${item.name}`,
133
- type: "button",
134
- ...props,
135
- onClick: item.type !== PATTERN_TYPES.theme ? onClick : undefined,
136
- "aria-disabled": item.type !== PATTERN_TYPES.theme ? 'false' : 'true',
137
- "aria-label": item.title,
138
- "aria-describedby": ariaDescriptions.length ? ariaDescriptions.map((_, index) => `${descriptionId}-${index}`).join(' ') : undefined
139
- }, isEmpty && isTemplatePart && __('Empty template part'), isEmpty && !isTemplatePart && __('Empty pattern'), !isEmpty && createElement(BlockPreview, {
140
- blocks: item.blocks,
141
- additionalStyles: additionalStyles,
142
- viewportWidth: item.viewportWidth
143
- })), ariaDescriptions.map((ariaDescription, index) => createElement("div", {
144
- key: index,
145
- hidden: true,
146
- id: `${descriptionId}-${index}`
147
- }, ariaDescription)), createElement(HStack, {
148
- className: "edit-site-patterns__footer",
149
- justify: "space-between"
150
- }, createElement(HStack, {
151
- alignment: "center",
152
- justify: "left",
153
- spacing: 3,
154
- className: "edit-site-patterns__pattern-title"
155
- }, itemIcon && !isNonUserPattern && createElement(Tooltip, {
156
- placement: "top",
157
- text: __('Editing this pattern will also update anywhere it is used')
158
- }, createElement(Icon, {
159
- className: "edit-site-patterns__pattern-icon",
160
- icon: itemIcon
161
- })), createElement(Flex, {
162
- as: "span",
163
- gap: 0,
164
- justify: "left"
165
- }, item.type === PATTERN_TYPES.theme ? item.title : createElement(Heading, {
166
- level: 5
167
- }, createElement(Button, {
168
- variant: "link",
169
- onClick: onClick
170
- // Required for the grid's roving tab index system.
171
- // See https://github.com/WordPress/gutenberg/pull/51898#discussion_r1243399243.
172
- ,
173
- tabIndex: "-1"
174
- }, item.title || item.name)), item.type === PATTERN_TYPES.theme && createElement(Tooltip, {
175
- placement: "top",
176
- text: __('This pattern cannot be edited.')
177
- }, createElement(Icon, {
178
- className: "edit-site-patterns__pattern-lock-icon",
179
- icon: lockSmall,
180
- size: 24
181
- })))), createElement(DropdownMenu, {
182
- icon: moreVertical,
183
- label: __('Actions'),
184
- className: "edit-site-patterns__dropdown",
185
- popoverProps: {
186
- placement: 'bottom-end'
187
- },
188
- toggleProps: {
189
- className: 'edit-site-patterns__button',
190
- describedBy: sprintf( /* translators: %s: pattern name */
191
- __('Action menu for %s pattern'), item.title)
192
- }
193
- }, ({
194
- onClose
195
- }) => createElement(MenuGroup, null, isCustomPattern && !hasThemeFile && createElement(RenameMenuItem, {
196
- item: item,
197
- onClose: onClose
198
- }), createElement(DuplicateMenuItem, {
199
- categoryId: categoryId,
200
- item: item,
201
- onClose: onClose,
202
- label: __('Duplicate')
203
- }), item.type === PATTERN_TYPES.user && createElement(MenuItem, {
204
- onClick: () => exportAsJSON()
205
- }, __('Export as JSON')), isCustomPattern && createElement(MenuItem, {
206
- isDestructive: !hasThemeFile,
207
- onClick: () => setIsDeleteDialogOpen(true)
208
- }, hasThemeFile ? __('Clear customizations') : __('Delete'))))), isDeleteDialogOpen && createElement(ConfirmDialog, {
209
- confirmButtonText: confirmButtonText,
210
- onConfirm: deleteItem,
211
- onCancel: () => setIsDeleteDialogOpen(false)
212
- }, confirmPrompt));
213
- }
214
- export default memo(GridItem);
215
- //# sourceMappingURL=grid-item.js.map