@wordpress/edit-site 6.4.0 → 6.5.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 (198) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/add-new-pattern/index.js +6 -1
  3. package/build/components/add-new-pattern/index.js.map +1 -1
  4. package/build/components/add-new-post/index.js +2 -1
  5. package/build/components/add-new-post/index.js.map +1 -1
  6. package/build/components/add-new-template/utils.js +2 -2
  7. package/build/components/add-new-template/utils.js.map +1 -1
  8. package/build/components/editor/index.js +71 -20
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/font-families.js +3 -4
  11. package/build/components/global-styles/font-families.js.map +1 -1
  12. package/build/components/global-styles/font-library-modal/context.js +0 -5
  13. package/build/components/global-styles/font-library-modal/context.js.map +1 -1
  14. package/build/components/global-styles/font-library-modal/font-collection.js +25 -5
  15. package/build/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  16. package/build/components/global-styles/font-library-modal/index.js +1 -8
  17. package/build/components/global-styles/font-library-modal/index.js.map +1 -1
  18. package/build/components/global-styles/font-library-modal/installed-fonts.js +21 -6
  19. package/build/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  20. package/build/components/global-styles/font-library-modal/upload-fonts.js +2 -3
  21. package/build/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  22. package/build/components/global-styles/screen-typeset.js +40 -0
  23. package/build/components/global-styles/screen-typeset.js.map +1 -0
  24. package/build/components/global-styles/screen-typography-element.js +14 -0
  25. package/build/components/global-styles/screen-typography-element.js.map +1 -1
  26. package/build/components/global-styles/screen-typography.js +4 -6
  27. package/build/components/global-styles/screen-typography.js.map +1 -1
  28. package/build/components/global-styles/shadows-edit-panel.js +50 -59
  29. package/build/components/global-styles/shadows-edit-panel.js.map +1 -1
  30. package/build/components/global-styles/typeset-button.js +97 -0
  31. package/build/components/global-styles/typeset-button.js.map +1 -0
  32. package/build/components/global-styles/typeset.js +80 -0
  33. package/build/components/global-styles/typeset.js.map +1 -0
  34. package/build/components/global-styles/ui.js +4 -0
  35. package/build/components/global-styles/ui.js.map +1 -1
  36. package/build/components/global-styles/utils.js +10 -1
  37. package/build/components/global-styles/utils.js.map +1 -1
  38. package/build/components/page-patterns/fields.js +230 -0
  39. package/build/components/page-patterns/fields.js.map +1 -0
  40. package/build/components/page-patterns/index.js +8 -226
  41. package/build/components/page-patterns/index.js.map +1 -1
  42. package/build/components/page-patterns/use-patterns.js +26 -1
  43. package/build/components/page-patterns/use-patterns.js.map +1 -1
  44. package/build/components/page-templates/fields.js +169 -0
  45. package/build/components/page-templates/fields.js.map +1 -0
  46. package/build/components/page-templates/index.js +10 -177
  47. package/build/components/page-templates/index.js.map +1 -1
  48. package/build/components/post-edit/index.js +18 -6
  49. package/build/components/post-edit/index.js.map +1 -1
  50. package/build/components/post-fields/index.js +19 -15
  51. package/build/components/post-fields/index.js.map +1 -1
  52. package/build/components/post-list/index.js +125 -67
  53. package/build/components/post-list/index.js.map +1 -1
  54. package/build/components/sidebar-dataviews/add-new-view.js +2 -2
  55. package/build/components/sidebar-dataviews/add-new-view.js.map +1 -1
  56. package/build/components/sidebar-dataviews/dataview-item.js +2 -3
  57. package/build/components/sidebar-dataviews/dataview-item.js.map +1 -1
  58. package/build/components/sidebar-dataviews/default-views.js +81 -81
  59. package/build/components/sidebar-dataviews/default-views.js.map +1 -1
  60. package/build/components/sidebar-dataviews/index.js +3 -42
  61. package/build/components/sidebar-dataviews/index.js.map +1 -1
  62. package/build/components/site-hub/index.js +6 -3
  63. package/build/components/site-hub/index.js.map +1 -1
  64. package/build/components/style-book/index.js +22 -25
  65. package/build/components/style-book/index.js.map +1 -1
  66. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -0
  67. package/build/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  68. package/build/hooks/push-changes-to-global-styles/index.js +2 -3
  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 +2 -4
  71. package/build/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  72. package/build/index.js +0 -2
  73. package/build/index.js.map +1 -1
  74. package/build-module/components/add-new-pattern/index.js +6 -1
  75. package/build-module/components/add-new-pattern/index.js.map +1 -1
  76. package/build-module/components/add-new-post/index.js +2 -1
  77. package/build-module/components/add-new-post/index.js.map +1 -1
  78. package/build-module/components/add-new-template/utils.js +2 -2
  79. package/build-module/components/add-new-template/utils.js.map +1 -1
  80. package/build-module/components/editor/index.js +73 -22
  81. package/build-module/components/editor/index.js.map +1 -1
  82. package/build-module/components/global-styles/font-families.js +3 -4
  83. package/build-module/components/global-styles/font-families.js.map +1 -1
  84. package/build-module/components/global-styles/font-library-modal/context.js +0 -5
  85. package/build-module/components/global-styles/font-library-modal/context.js.map +1 -1
  86. package/build-module/components/global-styles/font-library-modal/font-collection.js +26 -6
  87. package/build-module/components/global-styles/font-library-modal/font-collection.js.map +1 -1
  88. package/build-module/components/global-styles/font-library-modal/index.js +1 -8
  89. package/build-module/components/global-styles/font-library-modal/index.js.map +1 -1
  90. package/build-module/components/global-styles/font-library-modal/installed-fonts.js +21 -6
  91. package/build-module/components/global-styles/font-library-modal/installed-fonts.js.map +1 -1
  92. package/build-module/components/global-styles/font-library-modal/upload-fonts.js +2 -3
  93. package/build-module/components/global-styles/font-library-modal/upload-fonts.js.map +1 -1
  94. package/build-module/components/global-styles/screen-typeset.js +34 -0
  95. package/build-module/components/global-styles/screen-typeset.js.map +1 -0
  96. package/build-module/components/global-styles/screen-typography-element.js +14 -0
  97. package/build-module/components/global-styles/screen-typography-element.js.map +1 -1
  98. package/build-module/components/global-styles/screen-typography.js +4 -6
  99. package/build-module/components/global-styles/screen-typography.js.map +1 -1
  100. package/build-module/components/global-styles/shadows-edit-panel.js +51 -60
  101. package/build-module/components/global-styles/shadows-edit-panel.js.map +1 -1
  102. package/build-module/components/global-styles/typeset-button.js +89 -0
  103. package/build-module/components/global-styles/typeset-button.js.map +1 -0
  104. package/build-module/components/global-styles/typeset.js +71 -0
  105. package/build-module/components/global-styles/typeset.js.map +1 -0
  106. package/build-module/components/global-styles/ui.js +4 -0
  107. package/build-module/components/global-styles/ui.js.map +1 -1
  108. package/build-module/components/global-styles/utils.js +10 -1
  109. package/build-module/components/global-styles/utils.js.map +1 -1
  110. package/build-module/components/page-patterns/fields.js +223 -0
  111. package/build-module/components/page-patterns/fields.js.map +1 -0
  112. package/build-module/components/page-patterns/index.js +11 -229
  113. package/build-module/components/page-patterns/index.js.map +1 -1
  114. package/build-module/components/page-patterns/use-patterns.js +26 -1
  115. package/build-module/components/page-patterns/use-patterns.js.map +1 -1
  116. package/build-module/components/page-templates/fields.js +160 -0
  117. package/build-module/components/page-templates/fields.js.map +1 -0
  118. package/build-module/components/page-templates/index.js +12 -178
  119. package/build-module/components/page-templates/index.js.map +1 -1
  120. package/build-module/components/post-edit/index.js +20 -8
  121. package/build-module/components/post-edit/index.js.map +1 -1
  122. package/build-module/components/post-fields/index.js +19 -15
  123. package/build-module/components/post-fields/index.js.map +1 -1
  124. package/build-module/components/post-list/index.js +127 -69
  125. package/build-module/components/post-list/index.js.map +1 -1
  126. package/build-module/components/sidebar-dataviews/add-new-view.js +2 -2
  127. package/build-module/components/sidebar-dataviews/add-new-view.js.map +1 -1
  128. package/build-module/components/sidebar-dataviews/dataview-item.js +2 -3
  129. package/build-module/components/sidebar-dataviews/dataview-item.js.map +1 -1
  130. package/build-module/components/sidebar-dataviews/default-views.js +81 -81
  131. package/build-module/components/sidebar-dataviews/default-views.js.map +1 -1
  132. package/build-module/components/sidebar-dataviews/index.js +3 -42
  133. package/build-module/components/sidebar-dataviews/index.js.map +1 -1
  134. package/build-module/components/site-hub/index.js +7 -4
  135. package/build-module/components/site-hub/index.js.map +1 -1
  136. package/build-module/components/style-book/index.js +23 -26
  137. package/build-module/components/style-book/index.js.map +1 -1
  138. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -0
  139. package/build-module/components/sync-state-with-url/use-init-edited-entity-from-url.js.map +1 -1
  140. package/build-module/hooks/push-changes-to-global-styles/index.js +2 -3
  141. package/build-module/hooks/push-changes-to-global-styles/index.js.map +1 -1
  142. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +2 -3
  143. package/build-module/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js.map +1 -1
  144. package/build-module/index.js +0 -2
  145. package/build-module/index.js.map +1 -1
  146. package/build-style/posts-rtl.css +190 -11
  147. package/build-style/posts.css +190 -11
  148. package/build-style/style-rtl.css +296 -55
  149. package/build-style/style.css +296 -55
  150. package/package.json +41 -41
  151. package/src/components/add-new-pattern/index.js +8 -3
  152. package/src/components/add-new-post/index.js +2 -1
  153. package/src/components/add-new-template/utils.js +10 -6
  154. package/src/components/editor/index.js +80 -22
  155. package/src/components/editor/style.scss +59 -1
  156. package/src/components/global-styles/font-families.js +3 -5
  157. package/src/components/global-styles/font-library-modal/context.js +0 -5
  158. package/src/components/global-styles/font-library-modal/font-collection.js +34 -10
  159. package/src/components/global-styles/font-library-modal/index.js +2 -7
  160. package/src/components/global-styles/font-library-modal/installed-fonts.js +23 -5
  161. package/src/components/global-styles/font-library-modal/style.scss +1 -1
  162. package/src/components/global-styles/font-library-modal/upload-fonts.js +2 -2
  163. package/src/components/global-styles/screen-typeset.js +42 -0
  164. package/src/components/global-styles/screen-typography-element.js +14 -0
  165. package/src/components/global-styles/screen-typography.js +4 -4
  166. package/src/components/global-styles/shadows-edit-panel.js +66 -73
  167. package/src/components/global-styles/style.scss +4 -7
  168. package/src/components/global-styles/typeset-button.js +93 -0
  169. package/src/components/global-styles/typeset.js +73 -0
  170. package/src/components/global-styles/ui.js +5 -0
  171. package/src/components/global-styles/utils.js +13 -1
  172. package/src/components/layout/style.scss +8 -0
  173. package/src/components/page-patterns/fields.js +251 -0
  174. package/src/components/page-patterns/index.js +15 -244
  175. package/src/components/page-patterns/style.scss +82 -85
  176. package/src/components/page-patterns/use-patterns.js +31 -1
  177. package/src/components/page-templates/fields.js +157 -0
  178. package/src/components/page-templates/index.js +19 -170
  179. package/src/components/page-templates/style.scss +14 -5
  180. package/src/components/post-edit/index.js +27 -8
  181. package/src/components/post-fields/index.js +29 -17
  182. package/src/components/post-list/index.js +134 -74
  183. package/src/components/sidebar-dataviews/add-new-view.js +2 -4
  184. package/src/components/sidebar-dataviews/dataview-item.js +2 -2
  185. package/src/components/sidebar-dataviews/default-views.js +95 -95
  186. package/src/components/sidebar-dataviews/index.js +3 -37
  187. package/src/components/site-hub/index.js +11 -2
  188. package/src/components/site-icon/style.scss +4 -1
  189. package/src/components/style-book/index.js +27 -32
  190. package/src/components/sync-state-with-url/use-init-edited-entity-from-url.js +5 -0
  191. package/src/hooks/push-changes-to-global-styles/index.js +2 -3
  192. package/src/hooks/use-theme-style-variations/use-theme-style-variations-by-property.js +2 -3
  193. package/src/index.js +0 -2
  194. package/build/utils/clone-deep.js +0 -15
  195. package/build/utils/clone-deep.js.map +0 -1
  196. package/build-module/utils/clone-deep.js +0 -9
  197. package/build-module/utils/clone-deep.js.map +0 -1
  198. package/src/utils/clone-deep.js +0 -8
@@ -0,0 +1,160 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import clsx from 'clsx';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { Icon, __experimentalHStack as HStack } from '@wordpress/components';
10
+ import { __ } from '@wordpress/i18n';
11
+ import { useState, useMemo } from '@wordpress/element';
12
+ import { decodeEntities } from '@wordpress/html-entities';
13
+ import { parse } from '@wordpress/blocks';
14
+ import { BlockPreview, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
15
+ import { EditorProvider } from '@wordpress/editor';
16
+
17
+ /**
18
+ * Internal dependencies
19
+ */
20
+ import { Async } from '../async';
21
+ import { default as Link, useLink } from '../routes/link';
22
+ import { useAddedBy } from './hooks';
23
+ import usePatternSettings from '../page-patterns/use-pattern-settings';
24
+ import { unlock } from '../../lock-unlock';
25
+ import { jsx as _jsx } from "react/jsx-runtime";
26
+ import { jsxs as _jsxs } from "react/jsx-runtime";
27
+ const {
28
+ useGlobalStyle
29
+ } = unlock(blockEditorPrivateApis);
30
+ function PreviewField({
31
+ item
32
+ }) {
33
+ const settings = usePatternSettings();
34
+ const [backgroundColor = 'white'] = useGlobalStyle('color.background');
35
+ const blocks = useMemo(() => {
36
+ return parse(item.content.raw);
37
+ }, [item.content.raw]);
38
+ const {
39
+ onClick
40
+ } = useLink({
41
+ postId: item.id,
42
+ postType: item.type,
43
+ canvas: 'edit'
44
+ });
45
+ const isEmpty = !blocks?.length;
46
+ // Wrap everything in a block editor provider to ensure 'styles' that are needed
47
+ // for the previews are synced between the site editor store and the block editor store.
48
+ // Additionally we need to have the `__experimentalBlockPatterns` setting in order to
49
+ // render patterns inside the previews.
50
+ // TODO: Same approach is used in the patterns list and it becomes obvious that some of
51
+ // the block editor settings are needed in context where we don't have the block editor.
52
+ // Explore how we can solve this in a better way.
53
+ return /*#__PURE__*/_jsx(EditorProvider, {
54
+ post: item,
55
+ settings: settings,
56
+ children: /*#__PURE__*/_jsx("div", {
57
+ className: "page-templates-preview-field",
58
+ style: {
59
+ backgroundColor
60
+ },
61
+ children: /*#__PURE__*/_jsxs("button", {
62
+ className: "page-templates-preview-field__button",
63
+ type: "button",
64
+ onClick: onClick,
65
+ "aria-label": item.title?.rendered || item.title,
66
+ children: [isEmpty && __('Empty template'), !isEmpty && /*#__PURE__*/_jsx(Async, {
67
+ children: /*#__PURE__*/_jsx(BlockPreview, {
68
+ blocks: blocks
69
+ })
70
+ })]
71
+ })
72
+ })
73
+ });
74
+ }
75
+ export const previewField = {
76
+ label: __('Preview'),
77
+ id: 'preview',
78
+ render: PreviewField,
79
+ enableSorting: false
80
+ };
81
+ function TitleField({
82
+ item
83
+ }) {
84
+ const linkProps = {
85
+ params: {
86
+ postId: item.id,
87
+ postType: item.type,
88
+ canvas: 'edit'
89
+ }
90
+ };
91
+ return /*#__PURE__*/_jsx(Link, {
92
+ ...linkProps,
93
+ children: decodeEntities(item.title?.rendered) || __('(no title)')
94
+ });
95
+ }
96
+ export const titleField = {
97
+ label: __('Template'),
98
+ id: 'title',
99
+ getValue: ({
100
+ item
101
+ }) => item.title?.rendered,
102
+ render: TitleField,
103
+ enableHiding: false,
104
+ enableGlobalSearch: true
105
+ };
106
+ export const descriptionField = {
107
+ label: __('Description'),
108
+ id: 'description',
109
+ render: ({
110
+ item
111
+ }) => {
112
+ return item.description && /*#__PURE__*/_jsx("span", {
113
+ className: "page-templates-description",
114
+ children: decodeEntities(item.description)
115
+ });
116
+ },
117
+ enableSorting: false,
118
+ enableGlobalSearch: true
119
+ };
120
+ function AuthorField({
121
+ item
122
+ }) {
123
+ const [isImageLoaded, setIsImageLoaded] = useState(false);
124
+ const {
125
+ text,
126
+ icon,
127
+ imageUrl
128
+ } = useAddedBy(item.type, item.id);
129
+ return /*#__PURE__*/_jsxs(HStack, {
130
+ alignment: "left",
131
+ spacing: 0,
132
+ children: [imageUrl && /*#__PURE__*/_jsx("div", {
133
+ className: clsx('page-templates-author-field__avatar', {
134
+ 'is-loaded': isImageLoaded
135
+ }),
136
+ children: /*#__PURE__*/_jsx("img", {
137
+ onLoad: () => setIsImageLoaded(true),
138
+ alt: "",
139
+ src: imageUrl
140
+ })
141
+ }), !imageUrl && /*#__PURE__*/_jsx("div", {
142
+ className: "page-templates-author-field__icon",
143
+ children: /*#__PURE__*/_jsx(Icon, {
144
+ icon: icon
145
+ })
146
+ }), /*#__PURE__*/_jsx("span", {
147
+ className: "page-templates-author-field__name",
148
+ children: text
149
+ })]
150
+ });
151
+ }
152
+ export const authorField = {
153
+ label: __('Author'),
154
+ id: 'author',
155
+ getValue: ({
156
+ item
157
+ }) => item.author_text,
158
+ render: AuthorField
159
+ };
160
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["clsx","Icon","__experimentalHStack","HStack","__","useState","useMemo","decodeEntities","parse","BlockPreview","privateApis","blockEditorPrivateApis","EditorProvider","Async","default","Link","useLink","useAddedBy","usePatternSettings","unlock","jsx","_jsx","jsxs","_jsxs","useGlobalStyle","PreviewField","item","settings","backgroundColor","blocks","content","raw","onClick","postId","id","postType","type","canvas","isEmpty","length","post","children","className","style","title","rendered","previewField","label","render","enableSorting","TitleField","linkProps","params","titleField","getValue","enableHiding","enableGlobalSearch","descriptionField","description","AuthorField","isImageLoaded","setIsImageLoaded","text","icon","imageUrl","alignment","spacing","onLoad","alt","src","authorField","author_text"],"sources":["@wordpress/edit-site/src/components/page-templates/fields.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Icon, __experimentalHStack as HStack } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { EditorProvider } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { Async } from '../async';\nimport { default as Link, useLink } from '../routes/link';\nimport { useAddedBy } from './hooks';\n\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\n\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nfunction PreviewField( { item } ) {\n\tconst settings = usePatternSettings();\n\tconst [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );\n\tconst blocks = useMemo( () => {\n\t\treturn parse( item.content.raw );\n\t}, [ item.content.raw ] );\n\tconst { onClick } = useLink( {\n\t\tpostId: item.id,\n\t\tpostType: item.type,\n\t\tcanvas: 'edit',\n\t} );\n\n\tconst isEmpty = ! blocks?.length;\n\t// Wrap everything in a block editor provider to ensure 'styles' that are needed\n\t// for the previews are synced between the site editor store and the block editor store.\n\t// Additionally we need to have the `__experimentalBlockPatterns` setting in order to\n\t// render patterns inside the previews.\n\t// TODO: Same approach is used in the patterns list and it becomes obvious that some of\n\t// the block editor settings are needed in context where we don't have the block editor.\n\t// Explore how we can solve this in a better way.\n\treturn (\n\t\t<EditorProvider post={ item } settings={ settings }>\n\t\t\t<div\n\t\t\t\tclassName=\"page-templates-preview-field\"\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\tclassName=\"page-templates-preview-field__button\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\taria-label={ item.title?.rendered || item.title }\n\t\t\t\t>\n\t\t\t\t\t{ isEmpty && __( 'Empty template' ) }\n\t\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t\t<Async>\n\t\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t\t</Async>\n\t\t\t\t\t) }\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</EditorProvider>\n\t);\n}\n\nexport const previewField = {\n\tlabel: __( 'Preview' ),\n\tid: 'preview',\n\trender: PreviewField,\n\tenableSorting: false,\n};\n\nfunction TitleField( { item } ) {\n\tconst linkProps = {\n\t\tparams: {\n\t\t\tpostId: item.id,\n\t\t\tpostType: item.type,\n\t\t\tcanvas: 'edit',\n\t\t},\n\t};\n\treturn (\n\t\t<Link { ...linkProps }>\n\t\t\t{ decodeEntities( item.title?.rendered ) || __( '(no title)' ) }\n\t\t</Link>\n\t);\n}\n\nexport const titleField = {\n\tlabel: __( 'Template' ),\n\tid: 'title',\n\tgetValue: ( { item } ) => item.title?.rendered,\n\trender: TitleField,\n\tenableHiding: false,\n\tenableGlobalSearch: true,\n};\n\nexport const descriptionField = {\n\tlabel: __( 'Description' ),\n\tid: 'description',\n\trender: ( { item } ) => {\n\t\treturn (\n\t\t\titem.description && (\n\t\t\t\t<span className=\"page-templates-description\">\n\t\t\t\t\t{ decodeEntities( item.description ) }\n\t\t\t\t</span>\n\t\t\t)\n\t\t);\n\t},\n\tenableSorting: false,\n\tenableGlobalSearch: true,\n};\n\nfunction AuthorField( { item } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 0 }>\n\t\t\t{ imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nexport const authorField = {\n\tlabel: __( 'Author' ),\n\tid: 'author',\n\tgetValue: ( { item } ) => item.author_text,\n\trender: AuthorField,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,46 +1,33 @@
1
- /**
2
- * External dependencies
3
- */
4
- import clsx from 'clsx';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
9
- import { Icon, __experimentalHStack as HStack } from '@wordpress/components';
10
4
  import { __ } from '@wordpress/i18n';
11
5
  import { useState, useMemo, useCallback, useEffect } from '@wordpress/element';
12
- import { useEntityRecords } from '@wordpress/core-data';
13
- import { decodeEntities } from '@wordpress/html-entities';
14
- import { parse } from '@wordpress/blocks';
15
- import { BlockPreview, privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';
6
+ import { privateApis as corePrivateApis } from '@wordpress/core-data';
16
7
  import { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';
17
8
  import { privateApis as routerPrivateApis } from '@wordpress/router';
18
- import { privateApis as editorPrivateApis, EditorProvider } from '@wordpress/editor';
9
+ import { privateApis as editorPrivateApis } from '@wordpress/editor';
19
10
 
20
11
  /**
21
12
  * Internal dependencies
22
13
  */
23
- import { Async } from '../async';
24
14
  import Page from '../page';
25
- import { default as Link, useLink } from '../routes/link';
26
15
  import AddNewTemplate from '../add-new-template';
27
- import { useAddedBy } from './hooks';
28
16
  import { TEMPLATE_POST_TYPE, OPERATOR_IS_ANY, LAYOUT_GRID, LAYOUT_TABLE, LAYOUT_LIST } from '../../utils/constants';
29
- import usePatternSettings from '../page-patterns/use-pattern-settings';
30
17
  import { unlock } from '../../lock-unlock';
31
18
  import { useEditPostAction } from '../dataviews-actions';
19
+ import { authorField, descriptionField, previewField, titleField } from './fields';
32
20
  import { jsx as _jsx } from "react/jsx-runtime";
33
- import { jsxs as _jsxs } from "react/jsx-runtime";
34
21
  const {
35
22
  usePostActions
36
23
  } = unlock(editorPrivateApis);
37
- const {
38
- useGlobalStyle
39
- } = unlock(blockEditorPrivateApis);
40
24
  const {
41
25
  useHistory,
42
26
  useLocation
43
27
  } = unlock(routerPrivateApis);
28
+ const {
29
+ useEntityRecordsWithPermissions
30
+ } = unlock(corePrivateApis);
44
31
  const EMPTY_ARRAY = [];
45
32
  const defaultLayouts = {
46
33
  [LAYOUT_TABLE]: {
@@ -59,8 +46,7 @@ const defaultLayouts = {
59
46
  minWidth: 320
60
47
  },
61
48
  preview: {
62
- minWidth: 120,
63
- maxWidth: 120
49
+ width: '1%'
64
50
  },
65
51
  author: {
66
52
  width: '1%'
@@ -97,107 +83,6 @@ const DEFAULT_VIEW = {
97
83
  layout: defaultLayouts[LAYOUT_GRID].layout,
98
84
  filters: []
99
85
  };
100
- function Title({
101
- item,
102
- viewType
103
- }) {
104
- if (viewType === LAYOUT_LIST) {
105
- return decodeEntities(item.title?.rendered) || __('(no title)');
106
- }
107
- const linkProps = {
108
- params: {
109
- postId: item.id,
110
- postType: item.type,
111
- canvas: 'edit'
112
- }
113
- };
114
- return /*#__PURE__*/_jsx(Link, {
115
- ...linkProps,
116
- children: decodeEntities(item.title?.rendered) || __('(no title)')
117
- });
118
- }
119
- function AuthorField({
120
- item
121
- }) {
122
- const [isImageLoaded, setIsImageLoaded] = useState(false);
123
- const {
124
- text,
125
- icon,
126
- imageUrl
127
- } = useAddedBy(item.type, item.id);
128
- return /*#__PURE__*/_jsxs(HStack, {
129
- alignment: "left",
130
- spacing: 0,
131
- children: [imageUrl && /*#__PURE__*/_jsx("div", {
132
- className: clsx('page-templates-author-field__avatar', {
133
- 'is-loaded': isImageLoaded
134
- }),
135
- children: /*#__PURE__*/_jsx("img", {
136
- onLoad: () => setIsImageLoaded(true),
137
- alt: "",
138
- src: imageUrl
139
- })
140
- }), !imageUrl && /*#__PURE__*/_jsx("div", {
141
- className: "page-templates-author-field__icon",
142
- children: /*#__PURE__*/_jsx(Icon, {
143
- icon: icon
144
- })
145
- }), /*#__PURE__*/_jsx("span", {
146
- className: "page-templates-author-field__name",
147
- children: text
148
- })]
149
- });
150
- }
151
- function Preview({
152
- item,
153
- viewType
154
- }) {
155
- const settings = usePatternSettings();
156
- const [backgroundColor = 'white'] = useGlobalStyle('color.background');
157
- const blocks = useMemo(() => {
158
- return parse(item.content.raw);
159
- }, [item.content.raw]);
160
- const {
161
- onClick
162
- } = useLink({
163
- postId: item.id,
164
- postType: item.type,
165
- canvas: 'edit'
166
- });
167
- const isEmpty = !blocks?.length;
168
- // Wrap everything in a block editor provider to ensure 'styles' that are needed
169
- // for the previews are synced between the site editor store and the block editor store.
170
- // Additionally we need to have the `__experimentalBlockPatterns` setting in order to
171
- // render patterns inside the previews.
172
- // TODO: Same approach is used in the patterns list and it becomes obvious that some of
173
- // the block editor settings are needed in context where we don't have the block editor.
174
- // Explore how we can solve this in a better way.
175
- return /*#__PURE__*/_jsx(EditorProvider, {
176
- post: item,
177
- settings: settings,
178
- children: /*#__PURE__*/_jsxs("div", {
179
- className: `page-templates-preview-field is-viewtype-${viewType}`,
180
- style: {
181
- backgroundColor
182
- },
183
- children: [viewType === LAYOUT_LIST && !isEmpty && /*#__PURE__*/_jsx(Async, {
184
- children: /*#__PURE__*/_jsx(BlockPreview, {
185
- blocks: blocks
186
- })
187
- }), viewType !== LAYOUT_LIST && /*#__PURE__*/_jsxs("button", {
188
- className: "page-templates-preview-field__button",
189
- type: "button",
190
- onClick: onClick,
191
- "aria-label": item.title?.rendered || item.title,
192
- children: [isEmpty && __('Empty template'), !isEmpty && /*#__PURE__*/_jsx(Async, {
193
- children: /*#__PURE__*/_jsx(BlockPreview, {
194
- blocks: blocks
195
- })
196
- })]
197
- })]
198
- })
199
- });
200
- }
201
86
  export default function PageTemplates() {
202
87
  const {
203
88
  params
@@ -236,7 +121,7 @@ export default function PageTemplates() {
236
121
  const {
237
122
  records,
238
123
  isResolving: isLoadingData
239
- } = useEntityRecords('postType', TEMPLATE_POST_TYPE, {
124
+ } = useEntityRecordsWithPermissions('postType', TEMPLATE_POST_TYPE, {
240
125
  per_page: -1
241
126
  });
242
127
  const history = useHistory();
@@ -262,61 +147,10 @@ export default function PageTemplates() {
262
147
  label: author
263
148
  }));
264
149
  }, [records]);
265
- const fields = useMemo(() => [{
266
- label: __('Preview'),
267
- id: 'preview',
268
- render: ({
269
- item
270
- }) => {
271
- return /*#__PURE__*/_jsx(Preview, {
272
- item: item,
273
- viewType: view.type
274
- });
275
- },
276
- enableSorting: false
277
- }, {
278
- label: __('Template'),
279
- id: 'title',
280
- getValue: ({
281
- item
282
- }) => item.title?.rendered,
283
- render: ({
284
- item
285
- }) => /*#__PURE__*/_jsx(Title, {
286
- item: item,
287
- viewType: view.type
288
- }),
289
- enableHiding: false,
290
- enableGlobalSearch: true
291
- }, {
292
- label: __('Description'),
293
- id: 'description',
294
- render: ({
295
- item
296
- }) => {
297
- return item.description && /*#__PURE__*/_jsx("span", {
298
- className: "page-templates-description",
299
- children: decodeEntities(item.description)
300
- });
301
- },
302
- enableSorting: false,
303
- enableGlobalSearch: true
304
- }, {
305
- label: __('Author'),
306
- id: 'author',
307
- getValue: ({
308
- item
309
- }) => item.author_text,
310
- render: ({
311
- item
312
- }) => {
313
- return /*#__PURE__*/_jsx(AuthorField, {
314
- viewType: view.type,
315
- item: item
316
- });
317
- },
150
+ const fields = useMemo(() => [previewField, titleField, descriptionField, {
151
+ ...authorField,
318
152
  elements: authors
319
- }], [authors, view.type]);
153
+ }], [authors]);
320
154
  const {
321
155
  data,
322
156
  paginationInfo
@@ -353,7 +187,7 @@ export default function PageTemplates() {
353
187
  onChangeSelection: onChangeSelection,
354
188
  selection: selection,
355
189
  defaultLayouts: defaultLayouts
356
- })
190
+ }, activeView)
357
191
  });
358
192
  }
359
193
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","Icon","__experimentalHStack","HStack","__","useState","useMemo","useCallback","useEffect","useEntityRecords","decodeEntities","parse","BlockPreview","privateApis","blockEditorPrivateApis","DataViews","filterSortAndPaginate","routerPrivateApis","editorPrivateApis","EditorProvider","Async","Page","default","Link","useLink","AddNewTemplate","useAddedBy","TEMPLATE_POST_TYPE","OPERATOR_IS_ANY","LAYOUT_GRID","LAYOUT_TABLE","LAYOUT_LIST","usePatternSettings","unlock","useEditPostAction","jsx","_jsx","jsxs","_jsxs","usePostActions","useGlobalStyle","useHistory","useLocation","EMPTY_ARRAY","defaultLayouts","fields","layout","primaryField","combinedFields","id","label","children","direction","styles","template","maxWidth","minWidth","preview","author","width","mediaField","columnFields","DEFAULT_VIEW","type","search","page","perPage","sort","field","filters","Title","item","viewType","title","rendered","linkProps","params","postId","postType","canvas","AuthorField","isImageLoaded","setIsImageLoaded","text","icon","imageUrl","alignment","spacing","className","onLoad","alt","src","Preview","settings","backgroundColor","blocks","content","raw","onClick","isEmpty","length","post","style","PageTemplates","activeView","selection","setSelection","defaultView","usedType","operator","value","view","setView","currentView","records","isResolving","isLoadingData","per_page","history","onChangeSelection","items","push","undefined","authors","authorsSet","Set","forEach","add","author_text","Array","from","map","render","enableSorting","getValue","enableHiding","enableGlobalSearch","description","elements","data","paginationInfo","postTypeActions","context","editAction","actions","onChangeView","newView","isLoading"],"sources":["@wordpress/edit-site/src/components/page-templates/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { Icon, __experimentalHStack as HStack } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo, useCallback, useEffect } from '@wordpress/element';\nimport { useEntityRecords } from '@wordpress/core-data';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport {\n\tprivateApis as editorPrivateApis,\n\tEditorProvider,\n} from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport { Async } from '../async';\nimport Page from '../page';\nimport { default as Link, useLink } from '../routes/link';\nimport AddNewTemplate from '../add-new-template';\nimport { useAddedBy } from './hooks';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tOPERATOR_IS_ANY,\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tLAYOUT_LIST,\n} from '../../utils/constants';\n\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\nimport { useEditPostAction } from '../dataviews-actions';\n\nconst { usePostActions } = unlock( editorPrivateApis );\n\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\n\nconst EMPTY_ARRAY = [];\n\nconst defaultLayouts = {\n\t[ LAYOUT_TABLE ]: {\n\t\tfields: [ 'template', 'author' ],\n\t\tlayout: {\n\t\t\tprimaryField: 'title',\n\t\t\tcombinedFields: [\n\t\t\t\t{\n\t\t\t\t\tid: 'template',\n\t\t\t\t\tlabel: __( 'Template' ),\n\t\t\t\t\tchildren: [ 'title', 'description' ],\n\t\t\t\t\tdirection: 'vertical',\n\t\t\t\t},\n\t\t\t],\n\t\t\tstyles: {\n\t\t\t\ttemplate: {\n\t\t\t\t\tmaxWidth: 400,\n\t\t\t\t\tminWidth: 320,\n\t\t\t\t},\n\t\t\t\tpreview: {\n\t\t\t\t\tminWidth: 120,\n\t\t\t\t\tmaxWidth: 120,\n\t\t\t\t},\n\t\t\t\tauthor: {\n\t\t\t\t\twidth: '1%',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tfields: [ 'title', 'description', 'author' ],\n\t\tlayout: {\n\t\t\tmediaField: 'preview',\n\t\t\tprimaryField: 'title',\n\t\t\tcolumnFields: [ 'description' ],\n\t\t},\n\t},\n\t[ LAYOUT_LIST ]: {\n\t\tfields: [ 'title', 'description', 'author' ],\n\t\tlayout: {\n\t\t\tprimaryField: 'title',\n\t\t\tmediaField: 'preview',\n\t\t},\n\t},\n};\n\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\tsort: {\n\t\tfield: 'title',\n\t\tdirection: 'asc',\n\t},\n\tfields: defaultLayouts[ LAYOUT_GRID ].fields,\n\tlayout: defaultLayouts[ LAYOUT_GRID ].layout,\n\tfilters: [],\n};\n\nfunction Title( { item, viewType } ) {\n\tif ( viewType === LAYOUT_LIST ) {\n\t\treturn decodeEntities( item.title?.rendered ) || __( '(no title)' );\n\t}\n\tconst linkProps = {\n\t\tparams: {\n\t\t\tpostId: item.id,\n\t\t\tpostType: item.type,\n\t\t\tcanvas: 'edit',\n\t\t},\n\t};\n\treturn (\n\t\t<Link { ...linkProps }>\n\t\t\t{ decodeEntities( item.title?.rendered ) || __( '(no title)' ) }\n\t\t</Link>\n\t);\n}\n\nfunction AuthorField( { item } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 0 }>\n\t\t\t{ imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nfunction Preview( { item, viewType } ) {\n\tconst settings = usePatternSettings();\n\tconst [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );\n\tconst blocks = useMemo( () => {\n\t\treturn parse( item.content.raw );\n\t}, [ item.content.raw ] );\n\tconst { onClick } = useLink( {\n\t\tpostId: item.id,\n\t\tpostType: item.type,\n\t\tcanvas: 'edit',\n\t} );\n\n\tconst isEmpty = ! blocks?.length;\n\t// Wrap everything in a block editor provider to ensure 'styles' that are needed\n\t// for the previews are synced between the site editor store and the block editor store.\n\t// Additionally we need to have the `__experimentalBlockPatterns` setting in order to\n\t// render patterns inside the previews.\n\t// TODO: Same approach is used in the patterns list and it becomes obvious that some of\n\t// the block editor settings are needed in context where we don't have the block editor.\n\t// Explore how we can solve this in a better way.\n\treturn (\n\t\t<EditorProvider post={ item } settings={ settings }>\n\t\t\t<div\n\t\t\t\tclassName={ `page-templates-preview-field is-viewtype-${ viewType }` }\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t{ viewType === LAYOUT_LIST && ! isEmpty && (\n\t\t\t\t\t<Async>\n\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t</Async>\n\t\t\t\t) }\n\t\t\t\t{ viewType !== LAYOUT_LIST && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName=\"page-templates-preview-field__button\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\taria-label={ item.title?.rendered || item.title }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ isEmpty && __( 'Empty template' ) }\n\t\t\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t\t\t<Async>\n\t\t\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t\t\t</Async>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</button>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorProvider>\n\t);\n}\n\nexport default function PageTemplates() {\n\tconst { params } = useLocation();\n\tconst { activeView = 'all', layout, postId } = params;\n\tconst [ selection, setSelection ] = useState( [ postId ] );\n\n\tconst defaultView = useMemo( () => {\n\t\tconst usedType = layout ?? DEFAULT_VIEW.type;\n\t\treturn {\n\t\t\t...DEFAULT_VIEW,\n\t\t\ttype: usedType,\n\t\t\tlayout: defaultLayouts[ usedType ].layout,\n\t\t\tfields: defaultLayouts[ usedType ].fields,\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: 'isAny',\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t};\n\t}, [ layout, activeView ] );\n\tconst [ view, setView ] = useState( defaultView );\n\tuseEffect( () => {\n\t\tsetView( ( currentView ) => ( {\n\t\t\t...currentView,\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t} ) );\n\t}, [ activeView ] );\n\n\tconst { records, isResolving: isLoadingData } = useEntityRecords(\n\t\t'postType',\n\t\tTEMPLATE_POST_TYPE,\n\t\t{\n\t\t\tper_page: -1,\n\t\t}\n\t);\n\tconst history = useHistory();\n\tconst onChangeSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items );\n\t\t\tif ( view?.type === LAYOUT_LIST ) {\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tpostId: items.length === 1 ? items[ 0 ] : undefined,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ history, params, view?.type ]\n\t);\n\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tlabel: __( 'Preview' ),\n\t\t\t\tid: 'preview',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <Preview item={ item } viewType={ view.type } />;\n\t\t\t\t},\n\t\t\t\tenableSorting: false,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: __( 'Template' ),\n\t\t\t\tid: 'title',\n\t\t\t\tgetValue: ( { item } ) => item.title?.rendered,\n\t\t\t\trender: ( { item } ) => (\n\t\t\t\t\t<Title item={ item } viewType={ view.type } />\n\t\t\t\t),\n\t\t\t\tenableHiding: false,\n\t\t\t\tenableGlobalSearch: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: __( 'Description' ),\n\t\t\t\tid: 'description',\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\titem.description && (\n\t\t\t\t\t\t\t<span className=\"page-templates-description\">\n\t\t\t\t\t\t\t\t{ decodeEntities( item.description ) }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tenableSorting: false,\n\t\t\t\tenableGlobalSearch: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: __( 'Author' ),\n\t\t\t\tid: 'author',\n\t\t\t\tgetValue: ( { item } ) => item.author_text,\n\t\t\t\trender: ( { item } ) => {\n\t\t\t\t\treturn <AuthorField viewType={ view.type } item={ item } />;\n\t\t\t\t},\n\t\t\t\telements: authors,\n\t\t\t},\n\t\t],\n\t\t[ authors, view.type ]\n\t);\n\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\treturn filterSortAndPaginate( records, view, fields );\n\t}, [ records, view, fields ] );\n\n\tconst postTypeActions = usePostActions( {\n\t\tpostType: TEMPLATE_POST_TYPE,\n\t\tcontext: 'list',\n\t} );\n\tconst editAction = useEditPostAction();\n\tconst actions = useMemo(\n\t\t() => [ editAction, ...postTypeActions ],\n\t\t[ postTypeActions, editAction ]\n\t);\n\n\tconst onChangeView = useCallback(\n\t\t( newView ) => {\n\t\t\tif ( newView.type !== view.type ) {\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tlayout: newView.type,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tsetView( newView );\n\t\t},\n\t\t[ view.type, setView, history, params ]\n\t);\n\n\treturn (\n\t\t<Page\n\t\t\tclassName=\"edit-site-page-templates\"\n\t\t\ttitle={ __( 'Templates' ) }\n\t\t\tactions={ <AddNewTemplate /> }\n\t\t>\n\t\t\t<DataViews\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tisLoading={ isLoadingData }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tselection={ selection }\n\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","useState","useMemo","useCallback","useEffect","privateApis","corePrivateApis","DataViews","filterSortAndPaginate","routerPrivateApis","editorPrivateApis","Page","AddNewTemplate","TEMPLATE_POST_TYPE","OPERATOR_IS_ANY","LAYOUT_GRID","LAYOUT_TABLE","LAYOUT_LIST","unlock","useEditPostAction","authorField","descriptionField","previewField","titleField","jsx","_jsx","usePostActions","useHistory","useLocation","useEntityRecordsWithPermissions","EMPTY_ARRAY","defaultLayouts","fields","layout","primaryField","combinedFields","id","label","children","direction","styles","template","maxWidth","minWidth","preview","width","author","mediaField","columnFields","DEFAULT_VIEW","type","search","page","perPage","sort","field","filters","PageTemplates","params","activeView","postId","selection","setSelection","defaultView","usedType","operator","value","view","setView","currentView","records","isResolving","isLoadingData","per_page","history","onChangeSelection","items","push","length","undefined","authors","authorsSet","Set","forEach","add","author_text","Array","from","map","elements","data","paginationInfo","postTypeActions","postType","context","editAction","actions","onChangeView","newView","className","title","isLoading"],"sources":["@wordpress/edit-site/src/components/page-templates/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useMemo, useCallback, useEffect } from '@wordpress/element';\nimport { privateApis as corePrivateApis } from '@wordpress/core-data';\nimport { DataViews, filterSortAndPaginate } from '@wordpress/dataviews';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport AddNewTemplate from '../add-new-template';\nimport {\n\tTEMPLATE_POST_TYPE,\n\tOPERATOR_IS_ANY,\n\tLAYOUT_GRID,\n\tLAYOUT_TABLE,\n\tLAYOUT_LIST,\n} from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\nimport { useEditPostAction } from '../dataviews-actions';\nimport {\n\tauthorField,\n\tdescriptionField,\n\tpreviewField,\n\ttitleField,\n} from './fields';\n\nconst { usePostActions } = unlock( editorPrivateApis );\nconst { useHistory, useLocation } = unlock( routerPrivateApis );\nconst { useEntityRecordsWithPermissions } = unlock( corePrivateApis );\n\nconst EMPTY_ARRAY = [];\n\nconst defaultLayouts = {\n\t[ LAYOUT_TABLE ]: {\n\t\tfields: [ 'template', 'author' ],\n\t\tlayout: {\n\t\t\tprimaryField: 'title',\n\t\t\tcombinedFields: [\n\t\t\t\t{\n\t\t\t\t\tid: 'template',\n\t\t\t\t\tlabel: __( 'Template' ),\n\t\t\t\t\tchildren: [ 'title', 'description' ],\n\t\t\t\t\tdirection: 'vertical',\n\t\t\t\t},\n\t\t\t],\n\t\t\tstyles: {\n\t\t\t\ttemplate: {\n\t\t\t\t\tmaxWidth: 400,\n\t\t\t\t\tminWidth: 320,\n\t\t\t\t},\n\t\t\t\tpreview: {\n\t\t\t\t\twidth: '1%',\n\t\t\t\t},\n\t\t\t\tauthor: {\n\t\t\t\t\twidth: '1%',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\t[ LAYOUT_GRID ]: {\n\t\tfields: [ 'title', 'description', 'author' ],\n\t\tlayout: {\n\t\t\tmediaField: 'preview',\n\t\t\tprimaryField: 'title',\n\t\t\tcolumnFields: [ 'description' ],\n\t\t},\n\t},\n\t[ LAYOUT_LIST ]: {\n\t\tfields: [ 'title', 'description', 'author' ],\n\t\tlayout: {\n\t\t\tprimaryField: 'title',\n\t\t\tmediaField: 'preview',\n\t\t},\n\t},\n};\n\nconst DEFAULT_VIEW = {\n\ttype: LAYOUT_GRID,\n\tsearch: '',\n\tpage: 1,\n\tperPage: 20,\n\tsort: {\n\t\tfield: 'title',\n\t\tdirection: 'asc',\n\t},\n\tfields: defaultLayouts[ LAYOUT_GRID ].fields,\n\tlayout: defaultLayouts[ LAYOUT_GRID ].layout,\n\tfilters: [],\n};\n\nexport default function PageTemplates() {\n\tconst { params } = useLocation();\n\tconst { activeView = 'all', layout, postId } = params;\n\tconst [ selection, setSelection ] = useState( [ postId ] );\n\n\tconst defaultView = useMemo( () => {\n\t\tconst usedType = layout ?? DEFAULT_VIEW.type;\n\t\treturn {\n\t\t\t...DEFAULT_VIEW,\n\t\t\ttype: usedType,\n\t\t\tlayout: defaultLayouts[ usedType ].layout,\n\t\t\tfields: defaultLayouts[ usedType ].fields,\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: 'isAny',\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t};\n\t}, [ layout, activeView ] );\n\tconst [ view, setView ] = useState( defaultView );\n\tuseEffect( () => {\n\t\tsetView( ( currentView ) => ( {\n\t\t\t...currentView,\n\t\t\tfilters:\n\t\t\t\tactiveView !== 'all'\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfield: 'author',\n\t\t\t\t\t\t\t\toperator: OPERATOR_IS_ANY,\n\t\t\t\t\t\t\t\tvalue: [ activeView ],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [],\n\t\t} ) );\n\t}, [ activeView ] );\n\n\tconst { records, isResolving: isLoadingData } =\n\t\tuseEntityRecordsWithPermissions( 'postType', TEMPLATE_POST_TYPE, {\n\t\t\tper_page: -1,\n\t\t} );\n\tconst history = useHistory();\n\tconst onChangeSelection = useCallback(\n\t\t( items ) => {\n\t\t\tsetSelection( items );\n\t\t\tif ( view?.type === LAYOUT_LIST ) {\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tpostId: items.length === 1 ? items[ 0 ] : undefined,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ history, params, view?.type ]\n\t);\n\n\tconst authors = useMemo( () => {\n\t\tif ( ! records ) {\n\t\t\treturn EMPTY_ARRAY;\n\t\t}\n\t\tconst authorsSet = new Set();\n\t\trecords.forEach( ( template ) => {\n\t\t\tauthorsSet.add( template.author_text );\n\t\t} );\n\t\treturn Array.from( authorsSet ).map( ( author ) => ( {\n\t\t\tvalue: author,\n\t\t\tlabel: author,\n\t\t} ) );\n\t}, [ records ] );\n\n\tconst fields = useMemo(\n\t\t() => [\n\t\t\tpreviewField,\n\t\t\ttitleField,\n\t\t\tdescriptionField,\n\t\t\t{\n\t\t\t\t...authorField,\n\t\t\t\telements: authors,\n\t\t\t},\n\t\t],\n\t\t[ authors ]\n\t);\n\n\tconst { data, paginationInfo } = useMemo( () => {\n\t\treturn filterSortAndPaginate( records, view, fields );\n\t}, [ records, view, fields ] );\n\n\tconst postTypeActions = usePostActions( {\n\t\tpostType: TEMPLATE_POST_TYPE,\n\t\tcontext: 'list',\n\t} );\n\tconst editAction = useEditPostAction();\n\tconst actions = useMemo(\n\t\t() => [ editAction, ...postTypeActions ],\n\t\t[ postTypeActions, editAction ]\n\t);\n\n\tconst onChangeView = useCallback(\n\t\t( newView ) => {\n\t\t\tif ( newView.type !== view.type ) {\n\t\t\t\thistory.push( {\n\t\t\t\t\t...params,\n\t\t\t\t\tlayout: newView.type,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tsetView( newView );\n\t\t},\n\t\t[ view.type, setView, history, params ]\n\t);\n\n\treturn (\n\t\t<Page\n\t\t\tclassName=\"edit-site-page-templates\"\n\t\t\ttitle={ __( 'Templates' ) }\n\t\t\tactions={ <AddNewTemplate /> }\n\t\t>\n\t\t\t<DataViews\n\t\t\t\tkey={ activeView }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tfields={ fields }\n\t\t\t\tactions={ actions }\n\t\t\t\tdata={ data }\n\t\t\t\tisLoading={ isLoadingData }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ onChangeView }\n\t\t\t\tonChangeSelection={ onChangeSelection }\n\t\t\t\tselection={ selection }\n\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t/>\n\t\t</Page>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -7,10 +7,10 @@ import clsx from 'clsx';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { __ } from '@wordpress/i18n';
10
- import { DataForm } from '@wordpress/dataviews';
10
+ import { DataForm, isItemValid } from '@wordpress/dataviews';
11
11
  import { useDispatch, useSelect, useRegistry } from '@wordpress/data';
12
12
  import { store as coreDataStore } from '@wordpress/core-data';
13
- import { Button } from '@wordpress/components';
13
+ import { Button, FlexItem, __experimentalVStack as VStack } from '@wordpress/components';
14
14
  import { useState, useMemo } from '@wordpress/element';
15
15
 
16
16
  /**
@@ -41,7 +41,8 @@ function PostEditForm({
41
41
  fields
42
42
  } = usePostFields();
43
43
  const form = {
44
- visibleFields: ['title']
44
+ type: 'panel',
45
+ fields: ['title', 'author']
45
46
  };
46
47
  const [edits, setEdits] = useState({});
47
48
  const itemWithEdits = useMemo(() => {
@@ -52,6 +53,9 @@ function PostEditForm({
52
53
  }, [initialEdits, edits]);
53
54
  const onSubmit = async event => {
54
55
  event.preventDefault();
56
+ if (!isItemValid(itemWithEdits, fields, form)) {
57
+ return;
58
+ }
55
59
  const {
56
60
  getEntityRecord
57
61
  } = registry.resolveSelect(coreDataStore);
@@ -64,17 +68,25 @@ function PostEditForm({
64
68
  }
65
69
  setEdits({});
66
70
  };
67
- return /*#__PURE__*/_jsxs("form", {
71
+ const isUpdateDisabled = !isItemValid(itemWithEdits, fields, form);
72
+ return /*#__PURE__*/_jsxs(VStack, {
73
+ as: "form",
68
74
  onSubmit: onSubmit,
75
+ spacing: 4,
69
76
  children: [/*#__PURE__*/_jsx(DataForm, {
70
77
  data: itemWithEdits,
71
78
  fields: fields,
72
79
  form: form,
73
80
  onChange: setEdits
74
- }), /*#__PURE__*/_jsx(Button, {
75
- variant: "primary",
76
- type: "submit",
77
- children: __('Update')
81
+ }), /*#__PURE__*/_jsx(FlexItem, {
82
+ children: /*#__PURE__*/_jsx(Button, {
83
+ variant: "primary",
84
+ type: "submit",
85
+ accessibleWhenDisabled: true,
86
+ disabled: isUpdateDisabled,
87
+ __next40pxDefaultSize: true,
88
+ children: __('Update')
89
+ })
78
90
  })]
79
91
  });
80
92
  }
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","__","DataForm","useDispatch","useSelect","useRegistry","store","coreDataStore","Button","useState","useMemo","Page","usePostFields","jsx","_jsx","jsxs","_jsxs","PostEditForm","postType","postId","ids","split","initialEdits","select","length","getEntityRecord","registry","saveEntityRecord","fields","form","visibleFields","edits","setEdits","itemWithEdits","onSubmit","event","preventDefault","resolveSelect","id","item","children","data","onChange","variant","type","PostEdit","className","label"],"sources":["@wordpress/edit-site/src/components/post-edit/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DataForm } from '@wordpress/dataviews';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport { Button } from '@wordpress/components';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport usePostFields from '../post-fields';\n\nfunction PostEditForm( { postType, postId } ) {\n\tconst ids = useMemo( () => postId.split( ',' ), [ postId ] );\n\tconst { initialEdits } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ids.length !== 1 ) {\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tinitialEdits:\n\t\t\t\t\tids.length === 1\n\t\t\t\t\t\t? select( coreDataStore ).getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\tpostType,\n\t\t\t\t\t\t\t\tids[ 0 ]\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: null,\n\t\t\t};\n\t\t},\n\t\t[ postType, ids ]\n\t);\n\tconst registry = useRegistry();\n\tconst { saveEntityRecord } = useDispatch( coreDataStore );\n\tconst { fields } = usePostFields();\n\tconst form = {\n\t\tvisibleFields: [ 'title' ],\n\t};\n\tconst [ edits, setEdits ] = useState( {} );\n\tconst itemWithEdits = useMemo( () => {\n\t\treturn {\n\t\t\t...initialEdits,\n\t\t\t...edits,\n\t\t};\n\t}, [ initialEdits, edits ] );\n\tconst onSubmit = async ( event ) => {\n\t\tevent.preventDefault();\n\t\tconst { getEntityRecord } = registry.resolveSelect( coreDataStore );\n\t\tfor ( const id of ids ) {\n\t\t\tconst item = await getEntityRecord( 'postType', postType, id );\n\t\t\tsaveEntityRecord( 'postType', postType, {\n\t\t\t\t...item,\n\t\t\t\t...edits,\n\t\t\t} );\n\t\t}\n\t\tsetEdits( {} );\n\t};\n\n\treturn (\n\t\t<form onSubmit={ onSubmit }>\n\t\t\t<DataForm\n\t\t\t\tdata={ itemWithEdits }\n\t\t\t\tfields={ fields }\n\t\t\t\tform={ form }\n\t\t\t\tonChange={ setEdits }\n\t\t\t/>\n\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t{ __( 'Update' ) }\n\t\t\t</Button>\n\t\t</form>\n\t);\n}\n\nexport function PostEdit( { postType, postId } ) {\n\treturn (\n\t\t<Page\n\t\t\tclassName={ clsx( 'edit-site-post-edit', {\n\t\t\t\t'is-empty': ! postId,\n\t\t\t} ) }\n\t\t\tlabel={ __( 'Post Edit' ) }\n\t\t>\n\t\t\t{ postId && (\n\t\t\t\t<PostEditForm postType={ postType } postId={ postId } />\n\t\t\t) }\n\t\t\t{ ! postId && <p>{ __( 'Select a page to edit' ) }</p> }\n\t\t</Page>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","__","DataForm","isItemValid","useDispatch","useSelect","useRegistry","store","coreDataStore","Button","FlexItem","__experimentalVStack","VStack","useState","useMemo","Page","usePostFields","jsx","_jsx","jsxs","_jsxs","PostEditForm","postType","postId","ids","split","initialEdits","select","length","getEntityRecord","registry","saveEntityRecord","fields","form","type","edits","setEdits","itemWithEdits","onSubmit","event","preventDefault","resolveSelect","id","item","isUpdateDisabled","as","spacing","children","data","onChange","variant","accessibleWhenDisabled","disabled","__next40pxDefaultSize","PostEdit","className","label"],"sources":["@wordpress/edit-site/src/components/post-edit/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DataForm, isItemValid } from '@wordpress/dataviews';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\nimport {\n\tButton,\n\tFlexItem,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Page from '../page';\nimport usePostFields from '../post-fields';\n\nfunction PostEditForm( { postType, postId } ) {\n\tconst ids = useMemo( () => postId.split( ',' ), [ postId ] );\n\tconst { initialEdits } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ids.length !== 1 ) {\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tinitialEdits:\n\t\t\t\t\tids.length === 1\n\t\t\t\t\t\t? select( coreDataStore ).getEntityRecord(\n\t\t\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t\t\tpostType,\n\t\t\t\t\t\t\t\tids[ 0 ]\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: null,\n\t\t\t};\n\t\t},\n\t\t[ postType, ids ]\n\t);\n\tconst registry = useRegistry();\n\tconst { saveEntityRecord } = useDispatch( coreDataStore );\n\tconst { fields } = usePostFields();\n\tconst form = {\n\t\ttype: 'panel',\n\t\tfields: [ 'title', 'author' ],\n\t};\n\tconst [ edits, setEdits ] = useState( {} );\n\tconst itemWithEdits = useMemo( () => {\n\t\treturn {\n\t\t\t...initialEdits,\n\t\t\t...edits,\n\t\t};\n\t}, [ initialEdits, edits ] );\n\tconst onSubmit = async ( event ) => {\n\t\tevent.preventDefault();\n\n\t\tif ( ! isItemValid( itemWithEdits, fields, form ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { getEntityRecord } = registry.resolveSelect( coreDataStore );\n\t\tfor ( const id of ids ) {\n\t\t\tconst item = await getEntityRecord( 'postType', postType, id );\n\t\t\tsaveEntityRecord( 'postType', postType, {\n\t\t\t\t...item,\n\t\t\t\t...edits,\n\t\t\t} );\n\t\t}\n\t\tsetEdits( {} );\n\t};\n\n\tconst isUpdateDisabled = ! isItemValid( itemWithEdits, fields, form );\n\treturn (\n\t\t<VStack as=\"form\" onSubmit={ onSubmit } spacing={ 4 }>\n\t\t\t<DataForm\n\t\t\t\tdata={ itemWithEdits }\n\t\t\t\tfields={ fields }\n\t\t\t\tform={ form }\n\t\t\t\tonChange={ setEdits }\n\t\t\t/>\n\t\t\t<FlexItem>\n\t\t\t\t<Button\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\tdisabled={ isUpdateDisabled }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Update' ) }\n\t\t\t\t</Button>\n\t\t\t</FlexItem>\n\t\t</VStack>\n\t);\n}\n\nexport function PostEdit( { postType, postId } ) {\n\treturn (\n\t\t<Page\n\t\t\tclassName={ clsx( 'edit-site-post-edit', {\n\t\t\t\t'is-empty': ! postId,\n\t\t\t} ) }\n\t\t\tlabel={ __( 'Post Edit' ) }\n\t\t>\n\t\t\t{ postId && (\n\t\t\t\t<PostEditForm postType={ postType } postId={ postId } />\n\t\t\t) }\n\t\t\t{ ! postId && <p>{ __( 'Select a page to edit' ) }</p> }\n\t\t</Page>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}