@wordpress/editor 14.35.1-next.16d95556a.0 → 14.35.2-next.dc3f6d3c1.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 (34) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/components/collab-sidebar/comments.js +57 -14
  3. package/build/components/collab-sidebar/comments.js.map +2 -2
  4. package/build/components/global-styles/index.js +8 -8
  5. package/build/components/global-styles/index.js.map +2 -2
  6. package/build/components/post-featured-image/index.js +1 -32
  7. package/build/components/post-featured-image/index.js.map +3 -3
  8. package/build/components/provider/use-block-editor-settings.js +9 -1
  9. package/build/components/provider/use-block-editor-settings.js.map +2 -2
  10. package/build/hooks/media-upload.js +89 -6
  11. package/build/hooks/media-upload.js.map +3 -3
  12. package/build-module/components/collab-sidebar/comments.js +57 -14
  13. package/build-module/components/collab-sidebar/comments.js.map +2 -2
  14. package/build-module/components/global-styles/index.js +8 -8
  15. package/build-module/components/global-styles/index.js.map +2 -2
  16. package/build-module/components/post-featured-image/index.js +3 -35
  17. package/build-module/components/post-featured-image/index.js.map +2 -2
  18. package/build-module/components/provider/use-block-editor-settings.js +9 -1
  19. package/build-module/components/provider/use-block-editor-settings.js.map +2 -2
  20. package/build-module/hooks/media-upload.js +67 -6
  21. package/build-module/hooks/media-upload.js.map +2 -2
  22. package/build-style/style-rtl.css +49 -16
  23. package/build-style/style.css +49 -16
  24. package/build-types/components/global-styles/index.d.ts.map +1 -1
  25. package/build-types/components/provider/use-block-editor-settings.d.ts.map +1 -1
  26. package/package.json +40 -40
  27. package/src/bindings/test/post-data.js +199 -0
  28. package/src/components/collab-sidebar/comments.js +66 -8
  29. package/src/components/global-styles/index.js +8 -9
  30. package/src/components/global-styles-sidebar/style.scss +7 -0
  31. package/src/components/post-featured-image/index.js +1 -44
  32. package/src/components/provider/use-block-editor-settings.js +8 -0
  33. package/src/hooks/media-upload.js +75 -7
  34. package/tsconfig.tsbuildinfo +1 -1
@@ -25,19 +25,15 @@ import {
25
25
  MediaUpload,
26
26
  MediaUploadCheck,
27
27
  store as blockEditorStore,
28
- privateApis as blockEditorPrivateApis,
29
28
  } from '@wordpress/block-editor';
30
29
  import { store as coreStore } from '@wordpress/core-data';
31
30
 
32
31
  /**
33
32
  * Internal dependencies
34
33
  */
35
- import { unlock } from '../../lock-unlock';
36
34
  import PostFeaturedImageCheck from './check';
37
35
  import { store as editorStore } from '../../store';
38
36
 
39
- const { MediaUploadModal } = unlock( blockEditorPrivateApis );
40
-
41
37
  const ALLOWED_MEDIA_TYPES = [ 'image' ];
42
38
 
43
39
  // Used when labels from post type were not yet loaded or when they are not present.
@@ -52,45 +48,6 @@ const instructions = (
52
48
  </p>
53
49
  );
54
50
 
55
- /**
56
- * Conditional Media component that uses MediaUploadModal when experiment is enabled,
57
- * otherwise falls back to MediaUpload.
58
- *
59
- * @param {Object} root0 Component props.
60
- * @param {Function} root0.render Render prop function that receives { open } object.
61
- * @return {JSX.Element} The component.
62
- */
63
- function ConditionalMediaUpload( { render, ...props } ) {
64
- const [ isModalOpen, setIsModalOpen ] = useState( false );
65
- const mediaUpload = useSelect( ( select ) => {
66
- const { getSettings } = select( blockEditorStore );
67
- return getSettings().mediaUpload;
68
- }, [] );
69
-
70
- if ( window.__experimentalDataViewsMediaModal ) {
71
- return (
72
- <>
73
- { render && render( { open: () => setIsModalOpen( true ) } ) }
74
- <MediaUploadModal
75
- { ...props }
76
- isOpen={ isModalOpen }
77
- onClose={ () => {
78
- setIsModalOpen( false );
79
- props.onClose?.();
80
- } }
81
- onSelect={ ( media ) => {
82
- setIsModalOpen( false );
83
- props.onSelect?.( media );
84
- } }
85
- onUpload={ mediaUpload }
86
- />
87
- </>
88
- );
89
- }
90
-
91
- return <MediaUpload { ...props } render={ render } />;
92
- }
93
-
94
51
  function getMediaDetails( media, postId ) {
95
52
  if ( ! media ) {
96
53
  return {};
@@ -224,7 +181,7 @@ function PostFeaturedImage( {
224
181
  </div>
225
182
  ) }
226
183
  <MediaUploadCheck fallback={ instructions }>
227
- <ConditionalMediaUpload
184
+ <MediaUpload
228
185
  title={
229
186
  postType?.labels?.featured_image ||
230
187
  DEFAULT_FEATURE_IMAGE_LABEL
@@ -96,6 +96,7 @@ const {
96
96
  reusableBlocksSelectKey,
97
97
  sectionRootClientIdKey,
98
98
  mediaEditKey,
99
+ getMediaSelectKey,
99
100
  } = unlock( privateApis );
100
101
 
101
102
  /**
@@ -293,6 +294,13 @@ function useBlockEditorSettings( settings, postType, postId, renderingMode ) {
293
294
  hasFixedToolbar,
294
295
  isDistractionFree,
295
296
  keepCaretInsideBlock,
297
+ [ getMediaSelectKey ]: ( select, attachmentId ) => {
298
+ return select( coreStore ).getEntityRecord(
299
+ 'postType',
300
+ 'attachment',
301
+ attachmentId
302
+ );
303
+ },
296
304
  [ mediaEditKey ]: hasUploadPermissions
297
305
  ? editMediaEntity
298
306
  : undefined,
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
+ import { Component } from '@wordpress/element';
4
5
  import { addFilter } from '@wordpress/hooks';
6
+ import deprecated from '@wordpress/deprecated';
5
7
  import {
6
8
  MediaUpload,
7
9
  privateApis as mediaUtilsPrivateApis,
@@ -16,16 +18,82 @@ const { MediaUploadModal: MediaUploadModalComponent } = unlock(
16
18
  mediaUtilsPrivateApis
17
19
  );
18
20
 
21
+ /**
22
+ * Class component wrapper for MediaUploadModal to maintain compatibility
23
+ * with the stable MediaUpload component API (render prop pattern).
24
+ */
25
+ class MediaUploadModalWrapper extends Component {
26
+ constructor( props ) {
27
+ super( props );
28
+ this.state = {
29
+ isOpen: false,
30
+ };
31
+ this.openModal = this.openModal.bind( this );
32
+ this.closeModal = this.closeModal.bind( this );
33
+ }
34
+
35
+ openModal() {
36
+ this.setState( { isOpen: true } );
37
+ }
38
+
39
+ closeModal() {
40
+ this.setState( { isOpen: false } );
41
+ this.props.onClose?.();
42
+ }
43
+
44
+ render() {
45
+ const {
46
+ allowedTypes,
47
+ multiple,
48
+ value,
49
+ onSelect,
50
+ title,
51
+ modalClass,
52
+ render,
53
+ } = this.props;
54
+ const { isOpen } = this.state;
55
+
56
+ return (
57
+ <>
58
+ { render( { open: this.openModal } ) }
59
+ <MediaUploadModalComponent
60
+ allowedTypes={ allowedTypes }
61
+ multiple={ multiple }
62
+ value={ value }
63
+ onSelect={ ( media ) => {
64
+ onSelect( media );
65
+ this.closeModal();
66
+ } }
67
+ onClose={ this.closeModal }
68
+ title={ title }
69
+ isOpen={ isOpen }
70
+ modalClass={ modalClass }
71
+ />
72
+ </>
73
+ );
74
+ }
75
+ }
76
+
19
77
  if ( window.__experimentalDataViewsMediaModal ) {
20
- // Create a new filter for the MediaUploadModal component
78
+ // Use the wrapper component for editor.MediaUpload when the experimental flag is enabled
79
+ addFilter(
80
+ 'editor.MediaUpload',
81
+ 'core/editor/components/media-upload',
82
+ () => {
83
+ deprecated( 'Extending MediaUpload as a class component', {
84
+ since: '7.0',
85
+ version: '7.2',
86
+ hint: 'MediaUpload will become a function component in WordPress 7.2 Please update any custom implementations to use function components instead.',
87
+ } );
88
+ return MediaUploadModalWrapper;
89
+ }
90
+ );
91
+ } else {
21
92
  addFilter(
22
- 'editor.MediaUploadModal',
23
- 'core/editor/components/media-upload-modal',
93
+ 'editor.MediaUpload',
94
+ 'core/editor/components/media-upload',
24
95
  () => {
25
- return MediaUploadModalComponent;
96
+ return MediaUpload;
26
97
  }
27
98
  );
28
99
  }
29
- addFilter( 'editor.MediaUpload', 'core/editor/components/media-upload', () => {
30
- return MediaUpload;
31
- } );