@wordpress/edit-post 6.6.0 → 6.9.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 (178) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/build/components/block-manager/category.js.map +1 -1
  4. package/build/components/block-manager/index.js +12 -4
  5. package/build/components/block-manager/index.js.map +1 -1
  6. package/build/components/device-preview/index.js.map +1 -1
  7. package/build/components/editor-initialization/listener-hooks.js.map +1 -1
  8. package/build/components/header/fullscreen-mode-close/index.js.map +1 -1
  9. package/build/components/header/header-toolbar/index.js.map +1 -1
  10. package/build/components/header/index.js.map +1 -1
  11. package/build/components/header/mode-switcher/index.js.map +1 -1
  12. package/build/components/header/post-publish-button-or-toggle.js.map +1 -1
  13. package/build/components/header/template-title/delete-template.js.map +1 -1
  14. package/build/components/header/template-title/index.js.map +1 -1
  15. package/build/components/header/tools-more-menu-group/index.js.map +1 -1
  16. package/build/components/keyboard-shortcut-help-modal/config.js +12 -0
  17. package/build/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  18. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  19. package/build/components/layout/actions-panel.js.map +1 -1
  20. package/build/components/layout/index.js.map +1 -1
  21. package/build/components/layout/index.native.js.map +1 -1
  22. package/build/components/preferences-modal/options/enable-custom-fields.js.map +1 -1
  23. package/build/components/preferences-modal/options/enable-panel.js.map +1 -1
  24. package/build/components/preferences-modal/options/enable-publish-sidebar.js.map +1 -1
  25. package/build/components/secondary-sidebar/inserter-sidebar.js.map +1 -1
  26. package/build/components/sidebar/discussion-panel/index.js.map +1 -1
  27. package/build/components/sidebar/featured-image/index.js.map +1 -1
  28. package/build/components/sidebar/page-attributes/index.js.map +1 -1
  29. package/build/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  30. package/build/components/sidebar/plugin-post-status-info/index.js +2 -2
  31. package/build/components/sidebar/plugin-post-status-info/index.js.map +1 -1
  32. package/build/components/sidebar/plugin-sidebar/index.js.map +1 -1
  33. package/build/components/sidebar/post-excerpt/index.js.map +1 -1
  34. package/build/components/sidebar/post-link/index.js.map +1 -1
  35. package/build/components/sidebar/post-schedule/index.js +14 -7
  36. package/build/components/sidebar/post-schedule/index.js.map +1 -1
  37. package/build/components/sidebar/post-status/index.js +4 -2
  38. package/build/components/sidebar/post-status/index.js.map +1 -1
  39. package/build/components/sidebar/post-template/create-modal.js +116 -0
  40. package/build/components/sidebar/post-template/create-modal.js.map +1 -0
  41. package/build/components/sidebar/post-template/form.js +123 -0
  42. package/build/components/sidebar/post-template/form.js.map +1 -0
  43. package/build/components/sidebar/post-template/index.js +123 -0
  44. package/build/components/sidebar/post-template/index.js.map +1 -0
  45. package/build/components/sidebar/settings-sidebar/index.js +1 -3
  46. package/build/components/sidebar/settings-sidebar/index.js.map +1 -1
  47. package/build/components/start-page-options/index.js +31 -13
  48. package/build/components/start-page-options/index.js.map +1 -1
  49. package/build/components/visual-editor/block-inspector-button.js +3 -7
  50. package/build/components/visual-editor/block-inspector-button.js.map +1 -1
  51. package/build/editor.js +1 -1
  52. package/build/editor.js.map +1 -1
  53. package/build/editor.native.js +9 -1
  54. package/build/editor.native.js.map +1 -1
  55. package/build/plugins/copy-content-menu-item/index.js +1 -1
  56. package/build/plugins/copy-content-menu-item/index.js.map +1 -1
  57. package/build/store/actions.js.map +1 -1
  58. package/build/store/selectors.js +8 -8
  59. package/build/store/selectors.js.map +1 -1
  60. package/build-module/components/block-manager/category.js.map +1 -1
  61. package/build-module/components/block-manager/index.js +13 -5
  62. package/build-module/components/block-manager/index.js.map +1 -1
  63. package/build-module/components/device-preview/index.js.map +1 -1
  64. package/build-module/components/editor-initialization/listener-hooks.js.map +1 -1
  65. package/build-module/components/header/fullscreen-mode-close/index.js.map +1 -1
  66. package/build-module/components/header/header-toolbar/index.js.map +1 -1
  67. package/build-module/components/header/index.js.map +1 -1
  68. package/build-module/components/header/mode-switcher/index.js.map +1 -1
  69. package/build-module/components/header/post-publish-button-or-toggle.js.map +1 -1
  70. package/build-module/components/header/template-title/delete-template.js.map +1 -1
  71. package/build-module/components/header/template-title/index.js.map +1 -1
  72. package/build-module/components/header/tools-more-menu-group/index.js.map +1 -1
  73. package/build-module/components/keyboard-shortcut-help-modal/config.js +12 -0
  74. package/build-module/components/keyboard-shortcut-help-modal/config.js.map +1 -1
  75. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  76. package/build-module/components/layout/actions-panel.js.map +1 -1
  77. package/build-module/components/layout/index.js.map +1 -1
  78. package/build-module/components/layout/index.native.js.map +1 -1
  79. package/build-module/components/preferences-modal/options/enable-custom-fields.js.map +1 -1
  80. package/build-module/components/preferences-modal/options/enable-panel.js.map +1 -1
  81. package/build-module/components/preferences-modal/options/enable-publish-sidebar.js.map +1 -1
  82. package/build-module/components/secondary-sidebar/inserter-sidebar.js.map +1 -1
  83. package/build-module/components/sidebar/discussion-panel/index.js.map +1 -1
  84. package/build-module/components/sidebar/featured-image/index.js.map +1 -1
  85. package/build-module/components/sidebar/page-attributes/index.js.map +1 -1
  86. package/build-module/components/sidebar/plugin-document-setting-panel/index.js.map +1 -1
  87. package/build-module/components/sidebar/plugin-post-status-info/index.js +2 -2
  88. package/build-module/components/sidebar/plugin-post-status-info/index.js.map +1 -1
  89. package/build-module/components/sidebar/plugin-sidebar/index.js.map +1 -1
  90. package/build-module/components/sidebar/post-excerpt/index.js.map +1 -1
  91. package/build-module/components/sidebar/post-link/index.js.map +1 -1
  92. package/build-module/components/sidebar/post-schedule/index.js +15 -5
  93. package/build-module/components/sidebar/post-schedule/index.js.map +1 -1
  94. package/build-module/components/sidebar/post-status/index.js +3 -2
  95. package/build-module/components/sidebar/post-status/index.js.map +1 -1
  96. package/build-module/components/sidebar/post-template/create-modal.js +104 -0
  97. package/build-module/components/sidebar/post-template/create-modal.js.map +1 -0
  98. package/build-module/components/sidebar/post-template/form.js +106 -0
  99. package/build-module/components/sidebar/post-template/form.js.map +1 -0
  100. package/build-module/components/sidebar/post-template/index.js +109 -0
  101. package/build-module/components/sidebar/post-template/index.js.map +1 -0
  102. package/build-module/components/sidebar/settings-sidebar/index.js +1 -2
  103. package/build-module/components/sidebar/settings-sidebar/index.js.map +1 -1
  104. package/build-module/components/start-page-options/index.js +32 -14
  105. package/build-module/components/start-page-options/index.js.map +1 -1
  106. package/build-module/components/visual-editor/block-inspector-button.js +3 -5
  107. package/build-module/components/visual-editor/block-inspector-button.js.map +1 -1
  108. package/build-module/editor.js +2 -2
  109. package/build-module/editor.js.map +1 -1
  110. package/build-module/editor.native.js +10 -2
  111. package/build-module/editor.native.js.map +1 -1
  112. package/build-module/plugins/copy-content-menu-item/index.js +1 -1
  113. package/build-module/plugins/copy-content-menu-item/index.js.map +1 -1
  114. package/build-module/store/actions.js.map +1 -1
  115. package/build-module/store/selectors.js +8 -7
  116. package/build-module/store/selectors.js.map +1 -1
  117. package/build-style/style-rtl.css +60 -49
  118. package/build-style/style.css +60 -49
  119. package/package.json +28 -28
  120. package/src/components/block-manager/category.js +2 -2
  121. package/src/components/block-manager/index.js +15 -4
  122. package/src/components/device-preview/index.js +4 -6
  123. package/src/components/editor-initialization/listener-hooks.js +2 -3
  124. package/src/components/header/fullscreen-mode-close/index.js +2 -3
  125. package/src/components/header/header-toolbar/index.js +6 -11
  126. package/src/components/header/index.js +6 -9
  127. package/src/components/header/mode-switcher/index.js +4 -4
  128. package/src/components/header/post-publish-button-or-toggle.js +4 -6
  129. package/src/components/header/template-title/delete-template.js +2 -3
  130. package/src/components/header/template-title/index.js +2 -3
  131. package/src/components/header/tools-more-menu-group/index.js +2 -3
  132. package/src/components/keyboard-shortcut-help-modal/config.js +8 -0
  133. package/src/components/keyboard-shortcut-help-modal/test/__snapshots__/index.js.snap +14 -0
  134. package/src/components/keyboard-shortcut-help-modal/test/index.js +2 -1
  135. package/src/components/keyboard-shortcuts/index.js +4 -8
  136. package/src/components/layout/actions-panel.js +6 -9
  137. package/src/components/layout/index.js +12 -21
  138. package/src/components/layout/index.native.js +4 -5
  139. package/src/components/preferences-modal/options/enable-custom-fields.js +2 -2
  140. package/src/components/preferences-modal/options/enable-panel.js +2 -3
  141. package/src/components/preferences-modal/options/enable-publish-sidebar.js +2 -3
  142. package/src/components/secondary-sidebar/inserter-sidebar.js +2 -3
  143. package/src/components/sidebar/discussion-panel/index.js +2 -3
  144. package/src/components/sidebar/featured-image/index.js +2 -3
  145. package/src/components/sidebar/page-attributes/index.js +2 -3
  146. package/src/components/sidebar/plugin-document-setting-panel/index.js +2 -3
  147. package/src/components/sidebar/plugin-post-status-info/index.js +2 -2
  148. package/src/components/sidebar/plugin-sidebar/index.js +2 -3
  149. package/src/components/sidebar/post-excerpt/index.js +2 -3
  150. package/src/components/sidebar/post-link/index.js +2 -3
  151. package/src/components/sidebar/post-schedule/index.js +8 -4
  152. package/src/components/sidebar/post-schedule/style.scss +19 -6
  153. package/src/components/sidebar/post-status/index.js +5 -4
  154. package/src/components/sidebar/post-template/create-modal.js +146 -0
  155. package/src/components/sidebar/post-template/form.js +140 -0
  156. package/src/components/sidebar/post-template/index.js +101 -0
  157. package/src/components/sidebar/post-template/style.scss +46 -0
  158. package/src/components/sidebar/post-visibility/style.scss +5 -4
  159. package/src/components/sidebar/settings-sidebar/index.js +0 -2
  160. package/src/components/start-page-options/index.js +48 -28
  161. package/src/components/visual-editor/block-inspector-button.js +4 -8
  162. package/src/editor.js +8 -10
  163. package/src/editor.native.js +13 -6
  164. package/src/plugins/copy-content-menu-item/index.js +1 -1
  165. package/src/store/actions.js +322 -295
  166. package/src/store/selectors.js +21 -24
  167. package/src/style.scss +1 -1
  168. package/build/components/sidebar/template/actions.js +0 -167
  169. package/build/components/sidebar/template/actions.js.map +0 -1
  170. package/build/components/sidebar/template/index.js +0 -164
  171. package/build/components/sidebar/template/index.js.map +0 -1
  172. package/build-module/components/sidebar/template/actions.js +0 -153
  173. package/build-module/components/sidebar/template/actions.js.map +0 -1
  174. package/build-module/components/sidebar/template/index.js +0 -145
  175. package/build-module/components/sidebar/template/index.js.map +0 -1
  176. package/src/components/sidebar/template/actions.js +0 -203
  177. package/src/components/sidebar/template/index.js +0 -164
  178. package/src/components/sidebar/template/style.scss +0 -43
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import createSelector from 'rememo';
5
- import { includes, some, flatten, values } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -24,8 +23,10 @@ const EMPTY_OBJECT = {};
24
23
  *
25
24
  * @return {string} Editing mode.
26
25
  */
27
- export const getEditorMode = createRegistrySelector( ( select ) => () =>
28
- select( preferencesStore ).get( 'core/edit-post', 'editorMode' ) ?? 'visual'
26
+ export const getEditorMode = createRegistrySelector(
27
+ ( select ) => () =>
28
+ select( preferencesStore ).get( 'core/edit-post', 'editorMode' ) ??
29
+ 'visual'
29
30
  );
30
31
 
31
32
  /**
@@ -37,11 +38,11 @@ export const getEditorMode = createRegistrySelector( ( select ) => () =>
37
38
  */
38
39
  export const isEditorSidebarOpened = createRegistrySelector(
39
40
  ( select ) => () => {
40
- const activeGeneralSidebar = select(
41
- interfaceStore
42
- ).getActiveComplementaryArea( 'core/edit-post' );
43
- return includes(
44
- [ 'edit-post/document', 'edit-post/block' ],
41
+ const activeGeneralSidebar =
42
+ select( interfaceStore ).getActiveComplementaryArea(
43
+ 'core/edit-post'
44
+ );
45
+ return [ 'edit-post/document', 'edit-post/block' ].includes(
45
46
  activeGeneralSidebar
46
47
  );
47
48
  }
@@ -56,13 +57,13 @@ export const isEditorSidebarOpened = createRegistrySelector(
56
57
  */
57
58
  export const isPluginSidebarOpened = createRegistrySelector(
58
59
  ( select ) => () => {
59
- const activeGeneralSidebar = select(
60
- interfaceStore
61
- ).getActiveComplementaryArea( 'core/edit-post' );
60
+ const activeGeneralSidebar =
61
+ select( interfaceStore ).getActiveComplementaryArea(
62
+ 'core/edit-post'
63
+ );
62
64
  return (
63
65
  !! activeGeneralSidebar &&
64
- ! includes(
65
- [ 'edit-post/document', 'edit-post/block' ],
66
+ ! [ 'edit-post/document', 'edit-post/block' ].includes(
66
67
  activeGeneralSidebar
67
68
  )
68
69
  );
@@ -250,7 +251,7 @@ export function isPublishSidebarOpened( state ) {
250
251
  * @return {boolean} Whether or not the panel is removed.
251
252
  */
252
253
  export function isEditorPanelRemoved( state, panelName ) {
253
- return includes( state.removedPanels, panelName );
254
+ return state.removedPanels.includes( panelName );
254
255
  }
255
256
 
256
257
  /**
@@ -365,7 +366,7 @@ export const getActiveMetaBoxLocations = createSelector(
365
366
  export function isMetaBoxLocationVisible( state, location ) {
366
367
  return (
367
368
  isMetaBoxLocationActive( state, location ) &&
368
- some( getMetaBoxesPerLocation( state, location ), ( { id } ) => {
369
+ getMetaBoxesPerLocation( state, location )?.some( ( { id } ) => {
369
370
  return isEditorPanelEnabled( state, `meta-box-${ id }` );
370
371
  } )
371
372
  );
@@ -406,7 +407,7 @@ export function getMetaBoxesPerLocation( state, location ) {
406
407
  */
407
408
  export const getAllMetaBoxes = createSelector(
408
409
  ( state ) => {
409
- return flatten( values( state.metaBoxes.locations ) );
410
+ return Object.values( state.metaBoxes.locations ).flat();
410
411
  },
411
412
  ( state ) => [ state.metaBoxes.locations ]
412
413
  );
@@ -463,11 +464,8 @@ export function isInserterOpened( state ) {
463
464
  * @return {Object} The root client ID, index to insert at and starting filter value.
464
465
  */
465
466
  export function __experimentalGetInsertionPoint( state ) {
466
- const {
467
- rootClientId,
468
- insertionIndex,
469
- filterValue,
470
- } = state.blockInserterPanel;
467
+ const { rootClientId, insertionIndex, filterValue } =
468
+ state.blockInserterPanel;
471
469
  return { rootClientId, insertionIndex, filterValue };
472
470
  }
473
471
 
@@ -511,9 +509,8 @@ export function areMetaBoxesInitialized( state ) {
511
509
  */
512
510
  export const getEditedPostTemplate = createRegistrySelector(
513
511
  ( select ) => () => {
514
- const currentTemplate = select( editorStore ).getEditedPostAttribute(
515
- 'template'
516
- );
512
+ const currentTemplate =
513
+ select( editorStore ).getEditedPostAttribute( 'template' );
517
514
  if ( currentTemplate ) {
518
515
  const templateWithSameSlug = select( coreStore )
519
516
  .getEntityRecords( 'postType', 'wp_template', { per_page: -1 } )
package/src/style.scss CHANGED
@@ -15,9 +15,9 @@
15
15
  @import "./components/sidebar/post-schedule/style.scss";
16
16
  @import "./components/sidebar/post-slug/style.scss";
17
17
  @import "./components/sidebar/post-status/style.scss";
18
+ @import "./components/sidebar/post-template/style.scss";
18
19
  @import "./components/sidebar/post-visibility/style.scss";
19
20
  @import "./components/sidebar/settings-header/style.scss";
20
- @import "./components/sidebar/template/style.scss";
21
21
  @import "./components/sidebar/template-summary/style.scss";
22
22
  @import "./components/text-editor/style.scss";
23
23
  @import "./components/visual-editor/style.scss";
@@ -1,167 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _element = require("@wordpress/element");
9
-
10
- var _lodash = require("lodash");
11
-
12
- var _i18n = require("@wordpress/i18n");
13
-
14
- var _components = require("@wordpress/components");
15
-
16
- var _data = require("@wordpress/data");
17
-
18
- var _editor = require("@wordpress/editor");
19
-
20
- var _coreData = require("@wordpress/core-data");
21
-
22
- var _store = require("../../../store");
23
-
24
- var _blocks = require("@wordpress/blocks");
25
-
26
- /**
27
- * External dependencies
28
- */
29
-
30
- /**
31
- * WordPress dependencies
32
- */
33
-
34
- /**
35
- * Internal dependencies
36
- */
37
- function PostTemplateActions(_ref) {
38
- let {
39
- isPostsPage
40
- } = _ref;
41
- const [isModalOpen, setIsModalOpen] = (0, _element.useState)(false);
42
- const [isBusy, setIsBusy] = (0, _element.useState)(false);
43
- const [title, setTitle] = (0, _element.useState)('');
44
- const {
45
- template,
46
- supportsTemplateMode,
47
- defaultTemplate
48
- } = (0, _data.useSelect)(select => {
49
- var _getPostType$viewable, _getPostType;
50
-
51
- const {
52
- getCurrentPostType,
53
- getEditorSettings
54
- } = select(_editor.store);
55
- const {
56
- getPostType
57
- } = select(_coreData.store);
58
- const {
59
- getEditedPostTemplate
60
- } = select(_store.store);
61
- const isViewable = (_getPostType$viewable = (_getPostType = getPostType(getCurrentPostType())) === null || _getPostType === void 0 ? void 0 : _getPostType.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false;
62
-
63
- const _supportsTemplateMode = getEditorSettings().supportsTemplateMode && isViewable;
64
-
65
- return {
66
- template: _supportsTemplateMode && getEditedPostTemplate(),
67
- supportsTemplateMode: _supportsTemplateMode,
68
- defaultTemplate: getEditorSettings().defaultBlockTemplate
69
- };
70
- }, []);
71
- const {
72
- __unstableCreateTemplate,
73
- __unstableSwitchToTemplateMode
74
- } = (0, _data.useDispatch)(_store.store);
75
-
76
- if (!supportsTemplateMode) {
77
- return null;
78
- }
79
-
80
- const defaultTitle = (0, _i18n.__)('Custom Template');
81
-
82
- async function onCreateTemplate(event) {
83
- event.preventDefault();
84
-
85
- if (isBusy) {
86
- return;
87
- }
88
-
89
- setIsBusy(true);
90
- const newTemplateContent = defaultTemplate !== null && defaultTemplate !== void 0 ? defaultTemplate : (0, _blocks.serialize)([(0, _blocks.createBlock)('core/group', {
91
- tagName: 'header',
92
- layout: {
93
- inherit: true
94
- }
95
- }, [(0, _blocks.createBlock)('core/site-title'), (0, _blocks.createBlock)('core/site-tagline')]), (0, _blocks.createBlock)('core/separator'), (0, _blocks.createBlock)('core/group', {
96
- tagName: 'main'
97
- }, [(0, _blocks.createBlock)('core/group', {
98
- layout: {
99
- inherit: true
100
- }
101
- }, [(0, _blocks.createBlock)('core/post-title')]), (0, _blocks.createBlock)('core/post-content', {
102
- layout: {
103
- inherit: true
104
- }
105
- })])]);
106
- await __unstableCreateTemplate({
107
- slug: 'wp-custom-template-' + (0, _lodash.kebabCase)(title || defaultTitle),
108
- content: newTemplateContent,
109
- title: title || defaultTitle
110
- });
111
- setIsBusy(false);
112
- setIsModalOpen(false);
113
-
114
- __unstableSwitchToTemplateMode(true);
115
- }
116
-
117
- return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)("div", {
118
- className: "edit-post-template__actions"
119
- }, !!template && (0, _element.createElement)(_components.Button, {
120
- variant: "link",
121
- onClick: () => __unstableSwitchToTemplateMode()
122
- }, (0, _i18n.__)('Edit')), !isPostsPage && (0, _element.createElement)(_components.Button, {
123
- variant: "link",
124
- onClick: () => setIsModalOpen(true)
125
- },
126
- /* translators: button to create a new template */
127
- (0, _i18n._x)('New', 'action'))), isModalOpen && (0, _element.createElement)(_components.Modal, {
128
- title: (0, _i18n.__)('Create custom template'),
129
- closeLabel: (0, _i18n.__)('Close'),
130
- onRequestClose: () => {
131
- setIsModalOpen(false);
132
- setTitle('');
133
- },
134
- overlayClassName: "edit-post-template__modal"
135
- }, (0, _element.createElement)("form", {
136
- onSubmit: onCreateTemplate
137
- }, (0, _element.createElement)(_components.Flex, {
138
- align: "flex-start",
139
- gap: 8
140
- }, (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.TextControl, {
141
- label: (0, _i18n.__)('Name'),
142
- value: title,
143
- onChange: setTitle,
144
- placeholder: defaultTitle,
145
- disabled: isBusy,
146
- help: (0, _i18n.__)('Describe the purpose of the template, e.g. "Full Width". Custom templates can be applied to any post or page.')
147
- }))), (0, _element.createElement)(_components.Flex, {
148
- className: "edit-post-template__modal-actions",
149
- justify: "flex-end",
150
- expanded: false
151
- }, (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
152
- variant: "tertiary",
153
- onClick: () => {
154
- setIsModalOpen(false);
155
- setTitle('');
156
- }
157
- }, (0, _i18n.__)('Cancel'))), (0, _element.createElement)(_components.FlexItem, null, (0, _element.createElement)(_components.Button, {
158
- variant: "primary",
159
- type: "submit",
160
- isBusy: isBusy,
161
- "aria-disabled": isBusy
162
- }, (0, _i18n.__)('Create')))))));
163
- }
164
-
165
- var _default = PostTemplateActions;
166
- exports.default = _default;
167
- //# sourceMappingURL=actions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-post/src/components/sidebar/template/actions.js"],"names":["PostTemplateActions","isPostsPage","isModalOpen","setIsModalOpen","isBusy","setIsBusy","title","setTitle","template","supportsTemplateMode","defaultTemplate","select","getCurrentPostType","getEditorSettings","editorStore","getPostType","coreStore","getEditedPostTemplate","editPostStore","isViewable","viewable","_supportsTemplateMode","defaultBlockTemplate","__unstableCreateTemplate","__unstableSwitchToTemplateMode","defaultTitle","onCreateTemplate","event","preventDefault","newTemplateContent","tagName","layout","inherit","slug","content"],"mappings":";;;;;;;AAiBA;;AAdA;;AAKA;;AACA;;AAOA;;AAEA;;AACA;;AAKA;;AACA;;AAzBA;AACA;AACA;;AAGA;AACA;AACA;;AAcA;AACA;AACA;AAIA,SAASA,mBAAT,OAAgD;AAAA,MAAlB;AAAEC,IAAAA;AAAF,GAAkB;AAC/C,QAAM,CAAEC,WAAF,EAAeC,cAAf,IAAkC,uBAAU,KAAV,CAAxC;AACA,QAAM,CAAEC,MAAF,EAAUC,SAAV,IAAwB,uBAAU,KAAV,CAA9B;AACA,QAAM,CAAEC,KAAF,EAASC,QAAT,IAAsB,uBAAU,EAAV,CAA5B;AACA,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,oBAAZ;AAAkCC,IAAAA;AAAlC,MAAsD,qBACzDC,MAAF,IAAc;AAAA;;AACb,UAAM;AAAEC,MAAAA,kBAAF;AAAsBC,MAAAA;AAAtB,QAA4CF,MAAM,CACvDG,aADuD,CAAxD;AAGA,UAAM;AAAEC,MAAAA;AAAF,QAAkBJ,MAAM,CAAEK,eAAF,CAA9B;AACA,UAAM;AAAEC,MAAAA;AAAF,QAA4BN,MAAM,CAAEO,YAAF,CAAxC;AAEA,UAAMC,UAAU,4CACfJ,WAAW,CAAEH,kBAAkB,EAApB,CADI,iDACf,aAAqCQ,QADtB,yEACkC,KADlD;;AAEA,UAAMC,qBAAqB,GAC1BR,iBAAiB,GAAGJ,oBAApB,IAA4CU,UAD7C;;AAGA,WAAO;AACNX,MAAAA,QAAQ,EAAEa,qBAAqB,IAAIJ,qBAAqB,EADlD;AAENR,MAAAA,oBAAoB,EAAEY,qBAFhB;AAGNX,MAAAA,eAAe,EAAEG,iBAAiB,GAAGS;AAH/B,KAAP;AAKA,GAlB0D,EAmB3D,EAnB2D,CAA5D;AAqBA,QAAM;AACLC,IAAAA,wBADK;AAELC,IAAAA;AAFK,MAGF,uBAAaN,YAAb,CAHJ;;AAKA,MAAK,CAAET,oBAAP,EAA8B;AAC7B,WAAO,IAAP;AACA;;AAED,QAAMgB,YAAY,GAAG,cAAI,iBAAJ,CAArB;;AAEA,iBAAeC,gBAAf,CAAiCC,KAAjC,EAAyC;AACxCA,IAAAA,KAAK,CAACC,cAAN;;AAEA,QAAKxB,MAAL,EAAc;AACb;AACA;;AAEDC,IAAAA,SAAS,CAAE,IAAF,CAAT;AAEA,UAAMwB,kBAAkB,GACvBnB,eADuB,aACvBA,eADuB,cACvBA,eADuB,GAEvB,uBAAW,CACV,yBACC,YADD,EAEC;AACCoB,MAAAA,OAAO,EAAE,QADV;AAECC,MAAAA,MAAM,EAAE;AAAEC,QAAAA,OAAO,EAAE;AAAX;AAFT,KAFD,EAMC,CACC,yBAAa,iBAAb,CADD,EAEC,yBAAa,mBAAb,CAFD,CAND,CADU,EAYV,yBAAa,gBAAb,CAZU,EAaV,yBACC,YADD,EAEC;AACCF,MAAAA,OAAO,EAAE;AADV,KAFD,EAKC,CACC,yBACC,YADD,EAEC;AACCC,MAAAA,MAAM,EAAE;AAAEC,QAAAA,OAAO,EAAE;AAAX;AADT,KAFD,EAKC,CAAE,yBAAa,iBAAb,CAAF,CALD,CADD,EAQC,yBAAa,mBAAb,EAAkC;AACjCD,MAAAA,MAAM,EAAE;AAAEC,QAAAA,OAAO,EAAE;AAAX;AADyB,KAAlC,CARD,CALD,CAbU,CAAX,CAFD;AAmCA,UAAMT,wBAAwB,CAAE;AAC/BU,MAAAA,IAAI,EAAE,wBAAwB,uBAAW3B,KAAK,IAAImB,YAApB,CADC;AAE/BS,MAAAA,OAAO,EAAEL,kBAFsB;AAG/BvB,MAAAA,KAAK,EAAEA,KAAK,IAAImB;AAHe,KAAF,CAA9B;AAMApB,IAAAA,SAAS,CAAE,KAAF,CAAT;AACAF,IAAAA,cAAc,CAAE,KAAF,CAAd;;AAEAqB,IAAAA,8BAA8B,CAAE,IAAF,CAA9B;AACA;;AAED,SACC,qDACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACG,CAAC,CAAEhB,QAAH,IACD,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,MADT;AAEC,IAAA,OAAO,EAAG,MAAMgB,8BAA8B;AAF/C,KAIG,cAAI,MAAJ,CAJH,CAFF,EASG,CAAEvB,WAAF,IACD,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,MADT;AAEC,IAAA,OAAO,EAAG,MAAME,cAAc,CAAE,IAAF;AAF/B;AAKE;AACA,gBAAI,KAAJ,EAAW,QAAX,CANF,CAVF,CADD,EAsBGD,WAAW,IACZ,4BAAC,iBAAD;AACC,IAAA,KAAK,EAAG,cAAI,wBAAJ,CADT;AAEC,IAAA,UAAU,EAAG,cAAI,OAAJ,CAFd;AAGC,IAAA,cAAc,EAAG,MAAM;AACtBC,MAAAA,cAAc,CAAE,KAAF,CAAd;AACAI,MAAAA,QAAQ,CAAE,EAAF,CAAR;AACA,KANF;AAOC,IAAA,gBAAgB,EAAC;AAPlB,KASC;AAAM,IAAA,QAAQ,EAAGmB;AAAjB,KACC,4BAAC,gBAAD;AAAM,IAAA,KAAK,EAAC,YAAZ;AAAyB,IAAA,GAAG,EAAG;AAA/B,KACC,4BAAC,oBAAD,QACC,4BAAC,uBAAD;AACC,IAAA,KAAK,EAAG,cAAI,MAAJ,CADT;AAEC,IAAA,KAAK,EAAGpB,KAFT;AAGC,IAAA,QAAQ,EAAGC,QAHZ;AAIC,IAAA,WAAW,EAAGkB,YAJf;AAKC,IAAA,QAAQ,EAAGrB,MALZ;AAMC,IAAA,IAAI,EAAG,cACN,+GADM;AANR,IADD,CADD,CADD,EAgBC,4BAAC,gBAAD;AACC,IAAA,SAAS,EAAC,mCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,QAAQ,EAAG;AAHZ,KAKC,4BAAC,oBAAD,QACC,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,UADT;AAEC,IAAA,OAAO,EAAG,MAAM;AACfD,MAAAA,cAAc,CAAE,KAAF,CAAd;AACAI,MAAAA,QAAQ,CAAE,EAAF,CAAR;AACA;AALF,KAOG,cAAI,QAAJ,CAPH,CADD,CALD,EAgBC,4BAAC,oBAAD,QACC,4BAAC,kBAAD;AACC,IAAA,OAAO,EAAC,SADT;AAEC,IAAA,IAAI,EAAC,QAFN;AAGC,IAAA,MAAM,EAAGH,MAHV;AAIC,qBAAgBA;AAJjB,KAMG,cAAI,QAAJ,CANH,CADD,CAhBD,CAhBD,CATD,CAvBF,CADD;AAiFA;;eAEcJ,mB","sourcesContent":["/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tButton,\n\tModal,\n\tTextControl,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useState } from '@wordpress/element';\nimport { store as editorStore } from '@wordpress/editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editPostStore } from '../../../store';\nimport { createBlock, serialize } from '@wordpress/blocks';\n\nfunction PostTemplateActions( { isPostsPage } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ isBusy, setIsBusy ] = useState( false );\n\tconst [ title, setTitle ] = useState( '' );\n\tconst { template, supportsTemplateMode, defaultTemplate } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getCurrentPostType, getEditorSettings } = select(\n\t\t\t\teditorStore\n\t\t\t);\n\t\t\tconst { getPostType } = select( coreStore );\n\t\t\tconst { getEditedPostTemplate } = select( editPostStore );\n\n\t\t\tconst isViewable =\n\t\t\t\tgetPostType( getCurrentPostType() )?.viewable ?? false;\n\t\t\tconst _supportsTemplateMode =\n\t\t\t\tgetEditorSettings().supportsTemplateMode && isViewable;\n\n\t\t\treturn {\n\t\t\t\ttemplate: _supportsTemplateMode && getEditedPostTemplate(),\n\t\t\t\tsupportsTemplateMode: _supportsTemplateMode,\n\t\t\t\tdefaultTemplate: getEditorSettings().defaultBlockTemplate,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\tconst {\n\t\t__unstableCreateTemplate,\n\t\t__unstableSwitchToTemplateMode,\n\t} = useDispatch( editPostStore );\n\n\tif ( ! supportsTemplateMode ) {\n\t\treturn null;\n\t}\n\n\tconst defaultTitle = __( 'Custom Template' );\n\n\tasync function onCreateTemplate( event ) {\n\t\tevent.preventDefault();\n\n\t\tif ( isBusy ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetIsBusy( true );\n\n\t\tconst newTemplateContent =\n\t\t\tdefaultTemplate ??\n\t\t\tserialize( [\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'header',\n\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock( 'core/site-title' ),\n\t\t\t\t\t\tcreateBlock( 'core/site-tagline' ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t\tcreateBlock( 'core/separator' ),\n\t\t\t\tcreateBlock(\n\t\t\t\t\t'core/group',\n\t\t\t\t\t{\n\t\t\t\t\t\ttagName: 'main',\n\t\t\t\t\t},\n\t\t\t\t\t[\n\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t'core/group',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[ createBlock( 'core/post-title' ) ]\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcreateBlock( 'core/post-content', {\n\t\t\t\t\t\t\tlayout: { inherit: true },\n\t\t\t\t\t\t} ),\n\t\t\t\t\t]\n\t\t\t\t),\n\t\t\t] );\n\n\t\tawait __unstableCreateTemplate( {\n\t\t\tslug: 'wp-custom-template-' + kebabCase( title || defaultTitle ),\n\t\t\tcontent: newTemplateContent,\n\t\t\ttitle: title || defaultTitle,\n\t\t} );\n\n\t\tsetIsBusy( false );\n\t\tsetIsModalOpen( false );\n\n\t\t__unstableSwitchToTemplateMode( true );\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"edit-post-template__actions\">\n\t\t\t\t{ !! template && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ () => __unstableSwitchToTemplateMode() }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Edit' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\t{ ! isPostsPage && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\tonClick={ () => setIsModalOpen( true ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t/* translators: button to create a new template */\n\t\t\t\t\t\t\t_x( 'New', 'action' )\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\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Create custom template' ) }\n\t\t\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tsetTitle( '' );\n\t\t\t\t\t} }\n\t\t\t\t\toverlayClassName=\"edit-post-template__modal\"\n\t\t\t\t>\n\t\t\t\t\t<form onSubmit={ onCreateTemplate }>\n\t\t\t\t\t\t<Flex align=\"flex-start\" gap={ 8 }>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Name' ) }\n\t\t\t\t\t\t\t\t\tvalue={ title }\n\t\t\t\t\t\t\t\t\tonChange={ setTitle }\n\t\t\t\t\t\t\t\t\tplaceholder={ defaultTitle }\n\t\t\t\t\t\t\t\t\tdisabled={ isBusy }\n\t\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t\t'Describe the purpose of the template, e.g. \"Full Width\". Custom templates can be applied to any post or page.'\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</FlexItem>\n\t\t\t\t\t\t</Flex>\n\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tclassName=\"edit-post-template__modal-actions\"\n\t\t\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\t\t\texpanded={ false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\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\tsetTitle( '' );\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\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t\t\t<Button\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\tisBusy={ isBusy }\n\t\t\t\t\t\t\t\t\taria-disabled={ isBusy }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default PostTemplateActions;\n"]}
@@ -1,164 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.TemplatePanel = TemplatePanel;
9
- exports.default = void 0;
10
-
11
- var _element = require("@wordpress/element");
12
-
13
- var _lodash = require("lodash");
14
-
15
- var _i18n = require("@wordpress/i18n");
16
-
17
- var _components = require("@wordpress/components");
18
-
19
- var _editor = require("@wordpress/editor");
20
-
21
- var _data = require("@wordpress/data");
22
-
23
- var _coreData = require("@wordpress/core-data");
24
-
25
- var _actions = _interopRequireDefault(require("./actions"));
26
-
27
- var _store = require("../../../store");
28
-
29
- /**
30
- * External dependencies
31
- */
32
-
33
- /**
34
- * WordPress dependencies
35
- */
36
-
37
- /**
38
- * Internal dependencies
39
- */
40
-
41
- /**
42
- * Module Constants
43
- */
44
- const PANEL_NAME = 'template';
45
-
46
- function TemplatePanel() {
47
- const {
48
- isEnabled,
49
- isOpened,
50
- isPostsPage,
51
- selectedTemplate,
52
- availableTemplates,
53
- fetchedTemplates,
54
- isViewable,
55
- template,
56
- supportsTemplateMode,
57
- canUserCreate
58
- } = (0, _data.useSelect)(select => {
59
- var _getPostType$viewable, _getPostType;
60
-
61
- const {
62
- isEditorPanelEnabled,
63
- isEditorPanelOpened,
64
- getEditedPostTemplate
65
- } = select(_store.store);
66
- const {
67
- getEditedPostAttribute,
68
- getEditorSettings,
69
- getCurrentPostId,
70
- getCurrentPostType
71
- } = select(_editor.store);
72
- const {
73
- getPostType,
74
- getEntityRecord,
75
- getEntityRecords,
76
- canUser
77
- } = select(_coreData.store);
78
- const currentPostId = getCurrentPostId();
79
- const currentPostType = getCurrentPostType();
80
- const settings = getEntityRecord('root', 'site');
81
-
82
- const _isViewable = (_getPostType$viewable = (_getPostType = getPostType(currentPostType)) === null || _getPostType === void 0 ? void 0 : _getPostType.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false;
83
-
84
- const _supportsTemplateMode = select(_editor.store).getEditorSettings().supportsTemplateMode && _isViewable;
85
-
86
- const templateRecords = getEntityRecords('postType', 'wp_template', {
87
- post_type: currentPostType,
88
- per_page: -1
89
- });
90
- return {
91
- isEnabled: isEditorPanelEnabled(PANEL_NAME),
92
- isOpened: isEditorPanelOpened(PANEL_NAME),
93
- isPostsPage: currentPostId === (settings === null || settings === void 0 ? void 0 : settings.page_for_posts),
94
- selectedTemplate: getEditedPostAttribute('template'),
95
- availableTemplates: getEditorSettings().availableTemplates,
96
- fetchedTemplates: templateRecords,
97
- template: _supportsTemplateMode && getEditedPostTemplate(),
98
- isViewable: _isViewable,
99
- supportsTemplateMode: _supportsTemplateMode,
100
- canUserCreate: canUser('create', 'templates')
101
- };
102
- }, []);
103
- const templates = (0, _element.useMemo)(() => {
104
- return { ...availableTemplates,
105
- ...(0, _lodash.fromPairs)((fetchedTemplates !== null && fetchedTemplates !== void 0 ? fetchedTemplates : []).map(_ref => {
106
- let {
107
- slug,
108
- title
109
- } = _ref;
110
- return [slug, title.rendered];
111
- }))
112
- };
113
- }, [availableTemplates, fetchedTemplates]);
114
- const {
115
- toggleEditorPanelOpened
116
- } = (0, _data.useDispatch)(_store.store);
117
- const {
118
- editPost
119
- } = (0, _data.useDispatch)(_editor.store);
120
-
121
- if (!isEnabled || !isViewable || (0, _lodash.isEmpty)(availableTemplates) && (!supportsTemplateMode || !canUserCreate)) {
122
- return null;
123
- }
124
-
125
- const onTogglePanel = (0, _lodash.partial)(toggleEditorPanelOpened, PANEL_NAME);
126
- let panelTitle = (0, _i18n.__)('Template');
127
-
128
- if (!!template) {
129
- var _template$title;
130
-
131
- panelTitle = (0, _i18n.sprintf)(
132
- /* translators: %s: template title */
133
- (0, _i18n.__)('Template: %s'), (_template$title = template === null || template === void 0 ? void 0 : template.title) !== null && _template$title !== void 0 ? _template$title : template.slug);
134
- }
135
-
136
- return (0, _element.createElement)(_components.PanelBody, {
137
- title: panelTitle,
138
- opened: isOpened,
139
- onToggle: onTogglePanel
140
- }, isPostsPage ? (0, _element.createElement)(_components.Notice, {
141
- className: "edit-post-template__notice",
142
- status: "warning",
143
- isDismissible: false
144
- }, (0, _i18n.__)('The posts page template cannot be changed.')) : (0, _element.createElement)(_components.SelectControl, {
145
- hideLabelFromVision: true,
146
- label: (0, _i18n.__)('Template:'),
147
- value: Object.keys(templates).includes(selectedTemplate) ? selectedTemplate : '',
148
- onChange: templateSlug => {
149
- editPost({
150
- template: templateSlug || ''
151
- });
152
- },
153
- options: (0, _lodash.map)(templates, (templateName, templateSlug) => ({
154
- value: templateSlug,
155
- label: templateName
156
- }))
157
- }), canUserCreate && (0, _element.createElement)(_actions.default, {
158
- isPostsPage: isPostsPage
159
- }));
160
- }
161
-
162
- var _default = TemplatePanel;
163
- exports.default = _default;
164
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["@wordpress/edit-post/src/components/sidebar/template/index.js"],"names":["PANEL_NAME","TemplatePanel","isEnabled","isOpened","isPostsPage","selectedTemplate","availableTemplates","fetchedTemplates","isViewable","template","supportsTemplateMode","canUserCreate","select","isEditorPanelEnabled","isEditorPanelOpened","getEditedPostTemplate","editPostStore","getEditedPostAttribute","getEditorSettings","getCurrentPostId","getCurrentPostType","editorStore","getPostType","getEntityRecord","getEntityRecords","canUser","coreStore","currentPostId","currentPostType","settings","_isViewable","viewable","_supportsTemplateMode","templateRecords","post_type","per_page","page_for_posts","templates","map","slug","title","rendered","toggleEditorPanelOpened","editPost","onTogglePanel","panelTitle","Object","keys","includes","templateSlug","templateName","value","label"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { partial, isEmpty, map, fromPairs } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useMemo } from '@wordpress/element';\nimport { Notice, PanelBody, SelectControl } from '@wordpress/components';\nimport { store as editorStore } from '@wordpress/editor';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostTemplateActions from './actions';\nimport { store as editPostStore } from '../../../store';\n\n/**\n * Module Constants\n */\nconst PANEL_NAME = 'template';\n\nexport function TemplatePanel() {\n\tconst {\n\t\tisEnabled,\n\t\tisOpened,\n\t\tisPostsPage,\n\t\tselectedTemplate,\n\t\tavailableTemplates,\n\t\tfetchedTemplates,\n\t\tisViewable,\n\t\ttemplate,\n\t\tsupportsTemplateMode,\n\t\tcanUserCreate,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tisEditorPanelEnabled,\n\t\t\tisEditorPanelOpened,\n\t\t\tgetEditedPostTemplate,\n\t\t} = select( editPostStore );\n\t\tconst {\n\t\t\tgetEditedPostAttribute,\n\t\t\tgetEditorSettings,\n\t\t\tgetCurrentPostId,\n\t\t\tgetCurrentPostType,\n\t\t} = select( editorStore );\n\t\tconst {\n\t\t\tgetPostType,\n\t\t\tgetEntityRecord,\n\t\t\tgetEntityRecords,\n\t\t\tcanUser,\n\t\t} = select( coreStore );\n\n\t\tconst currentPostId = getCurrentPostId();\n\t\tconst currentPostType = getCurrentPostType();\n\t\tconst settings = getEntityRecord( 'root', 'site' );\n\t\tconst _isViewable = getPostType( currentPostType )?.viewable ?? false;\n\t\tconst _supportsTemplateMode =\n\t\t\tselect( editorStore ).getEditorSettings().supportsTemplateMode &&\n\t\t\t_isViewable;\n\n\t\tconst templateRecords = getEntityRecords( 'postType', 'wp_template', {\n\t\t\tpost_type: currentPostType,\n\t\t\tper_page: -1,\n\t\t} );\n\n\t\treturn {\n\t\t\tisEnabled: isEditorPanelEnabled( PANEL_NAME ),\n\t\t\tisOpened: isEditorPanelOpened( PANEL_NAME ),\n\t\t\tisPostsPage: currentPostId === settings?.page_for_posts,\n\t\t\tselectedTemplate: getEditedPostAttribute( 'template' ),\n\t\t\tavailableTemplates: getEditorSettings().availableTemplates,\n\t\t\tfetchedTemplates: templateRecords,\n\t\t\ttemplate: _supportsTemplateMode && getEditedPostTemplate(),\n\t\t\tisViewable: _isViewable,\n\t\t\tsupportsTemplateMode: _supportsTemplateMode,\n\t\t\tcanUserCreate: canUser( 'create', 'templates' ),\n\t\t};\n\t}, [] );\n\n\tconst templates = useMemo( () => {\n\t\treturn {\n\t\t\t...availableTemplates,\n\t\t\t...fromPairs(\n\t\t\t\t( fetchedTemplates ?? [] ).map( ( { slug, title } ) => [\n\t\t\t\t\tslug,\n\t\t\t\t\ttitle.rendered,\n\t\t\t\t] )\n\t\t\t),\n\t\t};\n\t}, [ availableTemplates, fetchedTemplates ] );\n\n\tconst { toggleEditorPanelOpened } = useDispatch( editPostStore );\n\tconst { editPost } = useDispatch( editorStore );\n\n\tif (\n\t\t! isEnabled ||\n\t\t! isViewable ||\n\t\t( isEmpty( availableTemplates ) &&\n\t\t\t( ! supportsTemplateMode || ! canUserCreate ) )\n\t) {\n\t\treturn null;\n\t}\n\n\tconst onTogglePanel = partial( toggleEditorPanelOpened, PANEL_NAME );\n\n\tlet panelTitle = __( 'Template' );\n\tif ( !! template ) {\n\t\tpanelTitle = sprintf(\n\t\t\t/* translators: %s: template title */\n\t\t\t__( 'Template: %s' ),\n\t\t\ttemplate?.title ?? template.slug\n\t\t);\n\t}\n\n\treturn (\n\t\t<PanelBody\n\t\t\ttitle={ panelTitle }\n\t\t\topened={ isOpened }\n\t\t\tonToggle={ onTogglePanel }\n\t\t>\n\t\t\t{ isPostsPage ? (\n\t\t\t\t<Notice\n\t\t\t\t\tclassName=\"edit-post-template__notice\"\n\t\t\t\t\tstatus=\"warning\"\n\t\t\t\t\tisDismissible={ false }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'The posts page template cannot be changed.' ) }\n\t\t\t\t</Notice>\n\t\t\t) : (\n\t\t\t\t<SelectControl\n\t\t\t\t\thideLabelFromVision\n\t\t\t\t\tlabel={ __( 'Template:' ) }\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tObject.keys( templates ).includes( selectedTemplate )\n\t\t\t\t\t\t\t? selectedTemplate\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t}\n\t\t\t\t\tonChange={ ( templateSlug ) => {\n\t\t\t\t\t\teditPost( {\n\t\t\t\t\t\t\ttemplate: templateSlug || '',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\toptions={ map(\n\t\t\t\t\t\ttemplates,\n\t\t\t\t\t\t( templateName, templateSlug ) => ( {\n\t\t\t\t\t\t\tvalue: templateSlug,\n\t\t\t\t\t\t\tlabel: templateName,\n\t\t\t\t\t\t} )\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canUserCreate && (\n\t\t\t\t<PostTemplateActions isPostsPage={ isPostsPage } />\n\t\t\t) }\n\t\t</PanelBody>\n\t);\n}\n\nexport default TemplatePanel;\n"]}
@@ -1,153 +0,0 @@
1
- import { createElement, Fragment } from "@wordpress/element";
2
-
3
- /**
4
- * External dependencies
5
- */
6
- import { kebabCase } from 'lodash';
7
- /**
8
- * WordPress dependencies
9
- */
10
-
11
- import { __, _x } from '@wordpress/i18n';
12
- import { Button, Modal, TextControl, Flex, FlexItem } from '@wordpress/components';
13
- import { useSelect, useDispatch } from '@wordpress/data';
14
- import { useState } from '@wordpress/element';
15
- import { store as editorStore } from '@wordpress/editor';
16
- import { store as coreStore } from '@wordpress/core-data';
17
- /**
18
- * Internal dependencies
19
- */
20
-
21
- import { store as editPostStore } from '../../../store';
22
- import { createBlock, serialize } from '@wordpress/blocks';
23
-
24
- function PostTemplateActions(_ref) {
25
- let {
26
- isPostsPage
27
- } = _ref;
28
- const [isModalOpen, setIsModalOpen] = useState(false);
29
- const [isBusy, setIsBusy] = useState(false);
30
- const [title, setTitle] = useState('');
31
- const {
32
- template,
33
- supportsTemplateMode,
34
- defaultTemplate
35
- } = useSelect(select => {
36
- var _getPostType$viewable, _getPostType;
37
-
38
- const {
39
- getCurrentPostType,
40
- getEditorSettings
41
- } = select(editorStore);
42
- const {
43
- getPostType
44
- } = select(coreStore);
45
- const {
46
- getEditedPostTemplate
47
- } = select(editPostStore);
48
- const isViewable = (_getPostType$viewable = (_getPostType = getPostType(getCurrentPostType())) === null || _getPostType === void 0 ? void 0 : _getPostType.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false;
49
-
50
- const _supportsTemplateMode = getEditorSettings().supportsTemplateMode && isViewable;
51
-
52
- return {
53
- template: _supportsTemplateMode && getEditedPostTemplate(),
54
- supportsTemplateMode: _supportsTemplateMode,
55
- defaultTemplate: getEditorSettings().defaultBlockTemplate
56
- };
57
- }, []);
58
- const {
59
- __unstableCreateTemplate,
60
- __unstableSwitchToTemplateMode
61
- } = useDispatch(editPostStore);
62
-
63
- if (!supportsTemplateMode) {
64
- return null;
65
- }
66
-
67
- const defaultTitle = __('Custom Template');
68
-
69
- async function onCreateTemplate(event) {
70
- event.preventDefault();
71
-
72
- if (isBusy) {
73
- return;
74
- }
75
-
76
- setIsBusy(true);
77
- const newTemplateContent = defaultTemplate !== null && defaultTemplate !== void 0 ? defaultTemplate : serialize([createBlock('core/group', {
78
- tagName: 'header',
79
- layout: {
80
- inherit: true
81
- }
82
- }, [createBlock('core/site-title'), createBlock('core/site-tagline')]), createBlock('core/separator'), createBlock('core/group', {
83
- tagName: 'main'
84
- }, [createBlock('core/group', {
85
- layout: {
86
- inherit: true
87
- }
88
- }, [createBlock('core/post-title')]), createBlock('core/post-content', {
89
- layout: {
90
- inherit: true
91
- }
92
- })])]);
93
- await __unstableCreateTemplate({
94
- slug: 'wp-custom-template-' + kebabCase(title || defaultTitle),
95
- content: newTemplateContent,
96
- title: title || defaultTitle
97
- });
98
- setIsBusy(false);
99
- setIsModalOpen(false);
100
-
101
- __unstableSwitchToTemplateMode(true);
102
- }
103
-
104
- return createElement(Fragment, null, createElement("div", {
105
- className: "edit-post-template__actions"
106
- }, !!template && createElement(Button, {
107
- variant: "link",
108
- onClick: () => __unstableSwitchToTemplateMode()
109
- }, __('Edit')), !isPostsPage && createElement(Button, {
110
- variant: "link",
111
- onClick: () => setIsModalOpen(true)
112
- },
113
- /* translators: button to create a new template */
114
- _x('New', 'action'))), isModalOpen && createElement(Modal, {
115
- title: __('Create custom template'),
116
- closeLabel: __('Close'),
117
- onRequestClose: () => {
118
- setIsModalOpen(false);
119
- setTitle('');
120
- },
121
- overlayClassName: "edit-post-template__modal"
122
- }, createElement("form", {
123
- onSubmit: onCreateTemplate
124
- }, createElement(Flex, {
125
- align: "flex-start",
126
- gap: 8
127
- }, createElement(FlexItem, null, createElement(TextControl, {
128
- label: __('Name'),
129
- value: title,
130
- onChange: setTitle,
131
- placeholder: defaultTitle,
132
- disabled: isBusy,
133
- help: __('Describe the purpose of the template, e.g. "Full Width". Custom templates can be applied to any post or page.')
134
- }))), createElement(Flex, {
135
- className: "edit-post-template__modal-actions",
136
- justify: "flex-end",
137
- expanded: false
138
- }, createElement(FlexItem, null, createElement(Button, {
139
- variant: "tertiary",
140
- onClick: () => {
141
- setIsModalOpen(false);
142
- setTitle('');
143
- }
144
- }, __('Cancel'))), createElement(FlexItem, null, createElement(Button, {
145
- variant: "primary",
146
- type: "submit",
147
- isBusy: isBusy,
148
- "aria-disabled": isBusy
149
- }, __('Create')))))));
150
- }
151
-
152
- export default PostTemplateActions;
153
- //# sourceMappingURL=actions.js.map