@wordpress/editor 12.6.0 → 12.7.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 (36) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/post-featured-image/index.js +84 -41
  3. package/build/components/post-featured-image/index.js.map +1 -1
  4. package/build/components/post-taxonomies/index.js +7 -1
  5. package/build/components/post-taxonomies/index.js.map +1 -1
  6. package/build/components/post-text-editor/index.js +11 -0
  7. package/build/components/post-text-editor/index.js.map +1 -1
  8. package/build/components/post-visibility/index.js +132 -167
  9. package/build/components/post-visibility/index.js.map +1 -1
  10. package/build/components/post-visibility/label.js +5 -22
  11. package/build/components/post-visibility/label.js.map +1 -1
  12. package/build/components/post-visibility/utils.js +14 -13
  13. package/build/components/post-visibility/utils.js.map +1 -1
  14. package/build-module/components/post-featured-image/index.js +86 -42
  15. package/build-module/components/post-featured-image/index.js.map +1 -1
  16. package/build-module/components/post-taxonomies/index.js +7 -1
  17. package/build-module/components/post-taxonomies/index.js.map +1 -1
  18. package/build-module/components/post-text-editor/index.js +12 -1
  19. package/build-module/components/post-text-editor/index.js.map +1 -1
  20. package/build-module/components/post-visibility/index.js +132 -166
  21. package/build-module/components/post-visibility/index.js.map +1 -1
  22. package/build-module/components/post-visibility/label.js +5 -20
  23. package/build-module/components/post-visibility/label.js.map +1 -1
  24. package/build-module/components/post-visibility/utils.js +14 -13
  25. package/build-module/components/post-visibility/utils.js.map +1 -1
  26. package/build-style/style-rtl.css +42 -51
  27. package/build-style/style.css +42 -51
  28. package/package.json +28 -27
  29. package/src/components/autosave-monitor/test/index.js +3 -0
  30. package/src/components/post-featured-image/index.js +102 -69
  31. package/src/components/post-taxonomies/index.js +3 -1
  32. package/src/components/post-text-editor/index.js +14 -1
  33. package/src/components/post-visibility/index.js +130 -150
  34. package/src/components/post-visibility/label.js +6 -15
  35. package/src/components/post-visibility/style.scss +25 -20
  36. package/src/components/post-visibility/utils.js +7 -12
@@ -11,8 +11,10 @@ import { has, get } from 'lodash';
11
11
  import { __, sprintf } from '@wordpress/i18n';
12
12
  import { applyFilters } from '@wordpress/hooks';
13
13
  import { DropZone, Button, Spinner, ResponsiveWrapper, withNotices, withFilters } from '@wordpress/components';
14
+ import { isBlobURL } from '@wordpress/blob';
15
+ import { useState } from '@wordpress/element';
14
16
  import { compose } from '@wordpress/compose';
15
- import { withSelect, withDispatch } from '@wordpress/data';
17
+ import { useSelect, withDispatch, withSelect } from '@wordpress/data';
16
18
  import { MediaUpload, MediaUploadCheck, store as blockEditorStore } from '@wordpress/block-editor';
17
19
  import { store as coreStore } from '@wordpress/core-data';
18
20
  /**
@@ -29,6 +31,42 @@ const DEFAULT_SET_FEATURE_IMAGE_LABEL = __('Set featured image');
29
31
 
30
32
  const DEFAULT_REMOVE_FEATURE_IMAGE_LABEL = __('Remove image');
31
33
 
34
+ const instructions = createElement("p", null, __('To edit the featured image, you need permission to upload media.'));
35
+
36
+ function getMediaDetails(media, postId) {
37
+ if (!media) {
38
+ return {};
39
+ }
40
+
41
+ const defaultSize = applyFilters('editor.PostFeaturedImage.imageSize', 'large', media.id, postId);
42
+
43
+ if (has(media, ['media_details', 'sizes', defaultSize])) {
44
+ return {
45
+ mediaWidth: media.media_details.sizes[defaultSize].width,
46
+ mediaHeight: media.media_details.sizes[defaultSize].height,
47
+ mediaSourceUrl: media.media_details.sizes[defaultSize].source_url
48
+ };
49
+ } // Use fallbackSize when defaultSize is not available.
50
+
51
+
52
+ const fallbackSize = applyFilters('editor.PostFeaturedImage.imageSize', 'thumbnail', media.id, postId);
53
+
54
+ if (has(media, ['media_details', 'sizes', fallbackSize])) {
55
+ return {
56
+ mediaWidth: media.media_details.sizes[fallbackSize].width,
57
+ mediaHeight: media.media_details.sizes[fallbackSize].height,
58
+ mediaSourceUrl: media.media_details.sizes[fallbackSize].source_url
59
+ };
60
+ } // Use full image size when fallbackSize and defaultSize are not available.
61
+
62
+
63
+ return {
64
+ mediaWidth: media.media_details.width,
65
+ mediaHeight: media.media_details.height,
66
+ mediaSourceUrl: media.source_url
67
+ };
68
+ }
69
+
32
70
  function PostFeaturedImage(_ref) {
33
71
  var _media$media_details$, _media$media_details$2;
34
72
 
@@ -36,40 +74,46 @@ function PostFeaturedImage(_ref) {
36
74
  currentPostId,
37
75
  featuredImageId,
38
76
  onUpdateImage,
39
- onDropImage,
40
77
  onRemoveImage,
41
78
  media,
42
79
  postType,
43
- noticeUI
80
+ noticeUI,
81
+ noticeOperations
44
82
  } = _ref;
83
+ const [isLoading, setIsLoading] = useState(false);
84
+ const mediaUpload = useSelect(select => {
85
+ return select(blockEditorStore).getSettings().mediaUpload;
86
+ }, []);
45
87
  const postLabel = get(postType, ['labels'], {});
46
- const instructions = createElement("p", null, __('To edit the featured image, you need permission to upload media.'));
47
- let mediaWidth, mediaHeight, mediaSourceUrl;
48
-
49
- if (media) {
50
- const mediaSize = applyFilters('editor.PostFeaturedImage.imageSize', 'post-thumbnail', media.id, currentPostId);
51
-
52
- if (has(media, ['media_details', 'sizes', mediaSize])) {
53
- // Use mediaSize when available.
54
- mediaWidth = media.media_details.sizes[mediaSize].width;
55
- mediaHeight = media.media_details.sizes[mediaSize].height;
56
- mediaSourceUrl = media.media_details.sizes[mediaSize].source_url;
57
- } else {
58
- // Get fallbackMediaSize if mediaSize is not available.
59
- const fallbackMediaSize = applyFilters('editor.PostFeaturedImage.imageSize', 'thumbnail', media.id, currentPostId);
60
-
61
- if (has(media, ['media_details', 'sizes', fallbackMediaSize])) {
62
- // Use fallbackMediaSize when mediaSize is not available.
63
- mediaWidth = media.media_details.sizes[fallbackMediaSize].width;
64
- mediaHeight = media.media_details.sizes[fallbackMediaSize].height;
65
- mediaSourceUrl = media.media_details.sizes[fallbackMediaSize].source_url;
66
- } else {
67
- // Use full image size when mediaFallbackSize and mediaSize are not available.
68
- mediaWidth = media.media_details.width;
69
- mediaHeight = media.media_details.height;
70
- mediaSourceUrl = media.source_url;
88
+ const {
89
+ mediaWidth,
90
+ mediaHeight,
91
+ mediaSourceUrl
92
+ } = getMediaDetails(media, currentPostId);
93
+
94
+ function onDropFiles(filesList) {
95
+ mediaUpload({
96
+ allowedTypes: ['image'],
97
+ filesList,
98
+
99
+ onFileChange(_ref2) {
100
+ let [image] = _ref2;
101
+
102
+ if (isBlobURL(image === null || image === void 0 ? void 0 : image.url)) {
103
+ setIsLoading(true);
104
+ return;
105
+ }
106
+
107
+ onUpdateImage(image);
108
+ setIsLoading(false);
109
+ },
110
+
111
+ onError(message) {
112
+ noticeOperations.removeAllNotices();
113
+ noticeOperations.createErrorNotice(message);
71
114
  }
72
- }
115
+
116
+ });
73
117
  }
74
118
 
75
119
  return createElement(PostFeaturedImageCheck, null, noticeUI, createElement("div", {
@@ -87,10 +131,10 @@ function PostFeaturedImage(_ref) {
87
131
  unstableFeaturedImageFlow: true,
88
132
  allowedTypes: ALLOWED_MEDIA_TYPES,
89
133
  modalClass: "editor-post-featured-image__media-modal",
90
- render: _ref2 => {
134
+ render: _ref3 => {
91
135
  let {
92
136
  open
93
- } = _ref2;
137
+ } = _ref3;
94
138
  return createElement("div", {
95
139
  className: "editor-post-featured-image__container"
96
140
  }, createElement(Button, {
@@ -105,27 +149,27 @@ function PostFeaturedImage(_ref) {
105
149
  }, createElement("img", {
106
150
  src: mediaSourceUrl,
107
151
  alt: ""
108
- })), !!featuredImageId && !media && createElement(Spinner, null), !featuredImageId && (postLabel.set_featured_image || DEFAULT_SET_FEATURE_IMAGE_LABEL)), createElement(DropZone, {
109
- onFilesDrop: onDropImage
152
+ })), isLoading && createElement(Spinner, null), !featuredImageId && !isLoading && (postLabel.set_featured_image || DEFAULT_SET_FEATURE_IMAGE_LABEL)), createElement(DropZone, {
153
+ onFilesDrop: onDropFiles
110
154
  }));
111
155
  },
112
156
  value: featuredImageId
113
- })), !!featuredImageId && media && !media.isLoading && createElement(MediaUploadCheck, null, createElement(MediaUpload, {
157
+ })), !!featuredImageId && createElement(MediaUploadCheck, null, media && createElement(MediaUpload, {
114
158
  title: postLabel.featured_image || DEFAULT_FEATURE_IMAGE_LABEL,
115
159
  onSelect: onUpdateImage,
116
160
  unstableFeaturedImageFlow: true,
117
161
  allowedTypes: ALLOWED_MEDIA_TYPES,
118
162
  modalClass: "editor-post-featured-image__media-modal",
119
- render: _ref3 => {
163
+ render: _ref4 => {
120
164
  let {
121
165
  open
122
- } = _ref3;
166
+ } = _ref4;
123
167
  return createElement(Button, {
124
168
  onClick: open,
125
169
  variant: "secondary"
126
170
  }, __('Replace Image'));
127
171
  }
128
- })), !!featuredImageId && createElement(MediaUploadCheck, null, createElement(Button, {
172
+ }), createElement(Button, {
129
173
  onClick: onRemoveImage,
130
174
  variant: "link",
131
175
  isDestructive: true
@@ -151,13 +195,13 @@ const applyWithSelect = withSelect(select => {
151
195
  featuredImageId
152
196
  };
153
197
  });
154
- const applyWithDispatch = withDispatch((dispatch, _ref4, _ref5) => {
198
+ const applyWithDispatch = withDispatch((dispatch, _ref5, _ref6) => {
155
199
  let {
156
200
  noticeOperations
157
- } = _ref4;
201
+ } = _ref5;
158
202
  let {
159
203
  select
160
- } = _ref5;
204
+ } = _ref6;
161
205
  const {
162
206
  editPost
163
207
  } = dispatch(editorStore);
@@ -173,8 +217,8 @@ const applyWithDispatch = withDispatch((dispatch, _ref4, _ref5) => {
173
217
  allowedTypes: ['image'],
174
218
  filesList,
175
219
 
176
- onFileChange(_ref6) {
177
- let [image] = _ref6;
220
+ onFileChange(_ref7) {
221
+ let [image] = _ref7;
178
222
  editPost({
179
223
  featured_media: image.id
180
224
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/post-featured-image/index.js"],"names":["has","get","__","sprintf","applyFilters","DropZone","Button","Spinner","ResponsiveWrapper","withNotices","withFilters","compose","withSelect","withDispatch","MediaUpload","MediaUploadCheck","store","blockEditorStore","coreStore","PostFeaturedImageCheck","editorStore","ALLOWED_MEDIA_TYPES","DEFAULT_FEATURE_IMAGE_LABEL","DEFAULT_SET_FEATURE_IMAGE_LABEL","DEFAULT_REMOVE_FEATURE_IMAGE_LABEL","PostFeaturedImage","currentPostId","featuredImageId","onUpdateImage","onDropImage","onRemoveImage","media","postType","noticeUI","postLabel","instructions","mediaWidth","mediaHeight","mediaSourceUrl","mediaSize","id","media_details","sizes","width","height","source_url","fallbackMediaSize","alt_text","full","file","slug","featured_image","open","set_featured_image","isLoading","remove_featured_image","applyWithSelect","select","getMedia","getPostType","getCurrentPostId","getEditedPostAttribute","context","applyWithDispatch","dispatch","noticeOperations","editPost","image","featured_media","filesList","getSettings","mediaUpload","allowedTypes","onFileChange","onError","message","removeAllNotices","createErrorNotice"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { has, get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { applyFilters } from '@wordpress/hooks';\nimport {\n\tDropZone,\n\tButton,\n\tSpinner,\n\tResponsiveWrapper,\n\twithNotices,\n\twithFilters,\n} from '@wordpress/components';\nimport { compose } from '@wordpress/compose';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport {\n\tMediaUpload,\n\tMediaUploadCheck,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostFeaturedImageCheck from './check';\nimport { store as editorStore } from '../../store';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\n// Used when labels from post type were not yet loaded or when they are not present.\nconst DEFAULT_FEATURE_IMAGE_LABEL = __( 'Featured image' );\nconst DEFAULT_SET_FEATURE_IMAGE_LABEL = __( 'Set featured image' );\nconst DEFAULT_REMOVE_FEATURE_IMAGE_LABEL = __( 'Remove image' );\n\nfunction PostFeaturedImage( {\n\tcurrentPostId,\n\tfeaturedImageId,\n\tonUpdateImage,\n\tonDropImage,\n\tonRemoveImage,\n\tmedia,\n\tpostType,\n\tnoticeUI,\n} ) {\n\tconst postLabel = get( postType, [ 'labels' ], {} );\n\tconst instructions = (\n\t\t<p>\n\t\t\t{ __(\n\t\t\t\t'To edit the featured image, you need permission to upload media.'\n\t\t\t) }\n\t\t</p>\n\t);\n\n\tlet mediaWidth, mediaHeight, mediaSourceUrl;\n\tif ( media ) {\n\t\tconst mediaSize = applyFilters(\n\t\t\t'editor.PostFeaturedImage.imageSize',\n\t\t\t'post-thumbnail',\n\t\t\tmedia.id,\n\t\t\tcurrentPostId\n\t\t);\n\t\tif ( has( media, [ 'media_details', 'sizes', mediaSize ] ) ) {\n\t\t\t// Use mediaSize when available.\n\t\t\tmediaWidth = media.media_details.sizes[ mediaSize ].width;\n\t\t\tmediaHeight = media.media_details.sizes[ mediaSize ].height;\n\t\t\tmediaSourceUrl = media.media_details.sizes[ mediaSize ].source_url;\n\t\t} else {\n\t\t\t// Get fallbackMediaSize if mediaSize is not available.\n\t\t\tconst fallbackMediaSize = applyFilters(\n\t\t\t\t'editor.PostFeaturedImage.imageSize',\n\t\t\t\t'thumbnail',\n\t\t\t\tmedia.id,\n\t\t\t\tcurrentPostId\n\t\t\t);\n\t\t\tif (\n\t\t\t\thas( media, [ 'media_details', 'sizes', fallbackMediaSize ] )\n\t\t\t) {\n\t\t\t\t// Use fallbackMediaSize when mediaSize is not available.\n\t\t\t\tmediaWidth =\n\t\t\t\t\tmedia.media_details.sizes[ fallbackMediaSize ].width;\n\t\t\t\tmediaHeight =\n\t\t\t\t\tmedia.media_details.sizes[ fallbackMediaSize ].height;\n\t\t\t\tmediaSourceUrl =\n\t\t\t\t\tmedia.media_details.sizes[ fallbackMediaSize ].source_url;\n\t\t\t} else {\n\t\t\t\t// Use full image size when mediaFallbackSize and mediaSize are not available.\n\t\t\t\tmediaWidth = media.media_details.width;\n\t\t\t\tmediaHeight = media.media_details.height;\n\t\t\t\tmediaSourceUrl = media.source_url;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (\n\t\t<PostFeaturedImageCheck>\n\t\t\t{ noticeUI }\n\t\t\t<div className=\"editor-post-featured-image\">\n\t\t\t\t{ media && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tid={ `editor-post-featured-image-${ featuredImageId }-describedby` }\n\t\t\t\t\t\tclassName=\"hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ media.alt_text &&\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// Translators: %s: The selected image alt text.\n\t\t\t\t\t\t\t\t__( 'Current image: %s' ),\n\t\t\t\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! media.alt_text &&\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// Translators: %s: The selected image filename.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'The current image has no alternative text. The file name is: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmedia.media_details.sizes?.full?.file ||\n\t\t\t\t\t\t\t\t\tmedia.slug\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<MediaUploadCheck fallback={ instructions }>\n\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\tpostLabel.featured_image ||\n\t\t\t\t\t\t\tDEFAULT_FEATURE_IMAGE_LABEL\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ onUpdateImage }\n\t\t\t\t\t\tunstableFeaturedImageFlow\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\tmodalClass=\"editor-post-featured-image__media-modal\"\n\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t<div className=\"editor-post-featured-image__container\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? 'editor-post-featured-image__toggle'\n\t\t\t\t\t\t\t\t\t\t\t: 'editor-post-featured-image__preview'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Edit or update the image' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t: `editor-post-featured-image-${ featuredImageId }-describedby`\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{ !! featuredImageId && media && (\n\t\t\t\t\t\t\t\t\t\t<ResponsiveWrapper\n\t\t\t\t\t\t\t\t\t\t\tnaturalWidth={ mediaWidth }\n\t\t\t\t\t\t\t\t\t\t\tnaturalHeight={ mediaHeight }\n\t\t\t\t\t\t\t\t\t\t\tisInline\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\tsrc={ mediaSourceUrl }\n\t\t\t\t\t\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</ResponsiveWrapper>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ !! featuredImageId && ! media && (\n\t\t\t\t\t\t\t\t\t\t<Spinner />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ ! featuredImageId &&\n\t\t\t\t\t\t\t\t\t\t( postLabel.set_featured_image ||\n\t\t\t\t\t\t\t\t\t\t\tDEFAULT_SET_FEATURE_IMAGE_LABEL ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t<DropZone onFilesDrop={ onDropImage } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tvalue={ featuredImageId }\n\t\t\t\t\t/>\n\t\t\t\t</MediaUploadCheck>\n\t\t\t\t{ !! featuredImageId && media && ! media.isLoading && (\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\tpostLabel.featured_image ||\n\t\t\t\t\t\t\t\tDEFAULT_FEATURE_IMAGE_LABEL\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonSelect={ onUpdateImage }\n\t\t\t\t\t\t\tunstableFeaturedImageFlow\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\tmodalClass=\"editor-post-featured-image__media-modal\"\n\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t<Button onClick={ open } variant=\"secondary\">\n\t\t\t\t\t\t\t\t\t{ __( 'Replace Image' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t) }\n\t\t\t\t{ !! featuredImageId && (\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={ onRemoveImage }\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tisDestructive\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ postLabel.remove_featured_image ||\n\t\t\t\t\t\t\t\tDEFAULT_REMOVE_FEATURE_IMAGE_LABEL }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</PostFeaturedImageCheck>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getMedia, getPostType } = select( coreStore );\n\tconst { getCurrentPostId, getEditedPostAttribute } = select( editorStore );\n\tconst featuredImageId = getEditedPostAttribute( 'featured_media' );\n\n\treturn {\n\t\tmedia: featuredImageId\n\t\t\t? getMedia( featuredImageId, { context: 'view' } )\n\t\t\t: null,\n\t\tcurrentPostId: getCurrentPostId(),\n\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\tfeaturedImageId,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch(\n\t( dispatch, { noticeOperations }, { select } ) => {\n\t\tconst { editPost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonUpdateImage( image ) {\n\t\t\t\teditPost( { featured_media: image.id } );\n\t\t\t},\n\t\t\tonDropImage( filesList ) {\n\t\t\t\tselect( blockEditorStore )\n\t\t\t\t\t.getSettings()\n\t\t\t\t\t.mediaUpload( {\n\t\t\t\t\t\tallowedTypes: [ 'image' ],\n\t\t\t\t\t\tfilesList,\n\t\t\t\t\t\tonFileChange( [ image ] ) {\n\t\t\t\t\t\t\teditPost( { featured_media: image.id } );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError( message ) {\n\t\t\t\t\t\t\tnoticeOperations.removeAllNotices();\n\t\t\t\t\t\t\tnoticeOperations.createErrorNotice( message );\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t},\n\t\t\tonRemoveImage() {\n\t\t\t\teditPost( { featured_media: 0 } );\n\t\t\t},\n\t\t};\n\t}\n);\n\nexport default compose(\n\twithNotices,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\twithFilters( 'editor.PostFeaturedImage' )\n)( PostFeaturedImage );\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/post-featured-image/index.js"],"names":["has","get","__","sprintf","applyFilters","DropZone","Button","Spinner","ResponsiveWrapper","withNotices","withFilters","isBlobURL","useState","compose","useSelect","withDispatch","withSelect","MediaUpload","MediaUploadCheck","store","blockEditorStore","coreStore","PostFeaturedImageCheck","editorStore","ALLOWED_MEDIA_TYPES","DEFAULT_FEATURE_IMAGE_LABEL","DEFAULT_SET_FEATURE_IMAGE_LABEL","DEFAULT_REMOVE_FEATURE_IMAGE_LABEL","instructions","getMediaDetails","media","postId","defaultSize","id","mediaWidth","media_details","sizes","width","mediaHeight","height","mediaSourceUrl","source_url","fallbackSize","PostFeaturedImage","currentPostId","featuredImageId","onUpdateImage","onRemoveImage","postType","noticeUI","noticeOperations","isLoading","setIsLoading","mediaUpload","select","getSettings","postLabel","onDropFiles","filesList","allowedTypes","onFileChange","image","url","onError","message","removeAllNotices","createErrorNotice","alt_text","full","file","slug","featured_image","open","set_featured_image","remove_featured_image","applyWithSelect","getMedia","getPostType","getCurrentPostId","getEditedPostAttribute","context","applyWithDispatch","dispatch","editPost","featured_media","onDropImage"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { has, get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { applyFilters } from '@wordpress/hooks';\nimport {\n\tDropZone,\n\tButton,\n\tSpinner,\n\tResponsiveWrapper,\n\twithNotices,\n\twithFilters,\n} from '@wordpress/components';\nimport { isBlobURL } from '@wordpress/blob';\nimport { useState } from '@wordpress/element';\nimport { compose } from '@wordpress/compose';\nimport { useSelect, withDispatch, withSelect } from '@wordpress/data';\nimport {\n\tMediaUpload,\n\tMediaUploadCheck,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport PostFeaturedImageCheck from './check';\nimport { store as editorStore } from '../../store';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\n// Used when labels from post type were not yet loaded or when they are not present.\nconst DEFAULT_FEATURE_IMAGE_LABEL = __( 'Featured image' );\nconst DEFAULT_SET_FEATURE_IMAGE_LABEL = __( 'Set featured image' );\nconst DEFAULT_REMOVE_FEATURE_IMAGE_LABEL = __( 'Remove image' );\n\nconst instructions = (\n\t<p>\n\t\t{ __(\n\t\t\t'To edit the featured image, you need permission to upload media.'\n\t\t) }\n\t</p>\n);\n\nfunction getMediaDetails( media, postId ) {\n\tif ( ! media ) {\n\t\treturn {};\n\t}\n\n\tconst defaultSize = applyFilters(\n\t\t'editor.PostFeaturedImage.imageSize',\n\t\t'large',\n\t\tmedia.id,\n\t\tpostId\n\t);\n\tif ( has( media, [ 'media_details', 'sizes', defaultSize ] ) ) {\n\t\treturn {\n\t\t\tmediaWidth: media.media_details.sizes[ defaultSize ].width,\n\t\t\tmediaHeight: media.media_details.sizes[ defaultSize ].height,\n\t\t\tmediaSourceUrl: media.media_details.sizes[ defaultSize ].source_url,\n\t\t};\n\t}\n\n\t// Use fallbackSize when defaultSize is not available.\n\tconst fallbackSize = applyFilters(\n\t\t'editor.PostFeaturedImage.imageSize',\n\t\t'thumbnail',\n\t\tmedia.id,\n\t\tpostId\n\t);\n\tif ( has( media, [ 'media_details', 'sizes', fallbackSize ] ) ) {\n\t\treturn {\n\t\t\tmediaWidth: media.media_details.sizes[ fallbackSize ].width,\n\t\t\tmediaHeight: media.media_details.sizes[ fallbackSize ].height,\n\t\t\tmediaSourceUrl:\n\t\t\t\tmedia.media_details.sizes[ fallbackSize ].source_url,\n\t\t};\n\t}\n\n\t// Use full image size when fallbackSize and defaultSize are not available.\n\treturn {\n\t\tmediaWidth: media.media_details.width,\n\t\tmediaHeight: media.media_details.height,\n\t\tmediaSourceUrl: media.source_url,\n\t};\n}\n\nfunction PostFeaturedImage( {\n\tcurrentPostId,\n\tfeaturedImageId,\n\tonUpdateImage,\n\tonRemoveImage,\n\tmedia,\n\tpostType,\n\tnoticeUI,\n\tnoticeOperations,\n} ) {\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst postLabel = get( postType, [ 'labels' ], {} );\n\tconst { mediaWidth, mediaHeight, mediaSourceUrl } = getMediaDetails(\n\t\tmedia,\n\t\tcurrentPostId\n\t);\n\n\tfunction onDropFiles( filesList ) {\n\t\tmediaUpload( {\n\t\t\tallowedTypes: [ 'image' ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tif ( isBlobURL( image?.url ) ) {\n\t\t\t\t\tsetIsLoading( true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonUpdateImage( image );\n\t\t\t\tsetIsLoading( false );\n\t\t\t},\n\t\t\tonError( message ) {\n\t\t\t\tnoticeOperations.removeAllNotices();\n\t\t\t\tnoticeOperations.createErrorNotice( message );\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn (\n\t\t<PostFeaturedImageCheck>\n\t\t\t{ noticeUI }\n\t\t\t<div className=\"editor-post-featured-image\">\n\t\t\t\t{ media && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tid={ `editor-post-featured-image-${ featuredImageId }-describedby` }\n\t\t\t\t\t\tclassName=\"hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ media.alt_text &&\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// Translators: %s: The selected image alt text.\n\t\t\t\t\t\t\t\t__( 'Current image: %s' ),\n\t\t\t\t\t\t\t\tmedia.alt_text\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ ! media.alt_text &&\n\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t// Translators: %s: The selected image filename.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'The current image has no alternative text. The file name is: %s'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tmedia.media_details.sizes?.full?.file ||\n\t\t\t\t\t\t\t\t\tmedia.slug\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t<MediaUploadCheck fallback={ instructions }>\n\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\tpostLabel.featured_image ||\n\t\t\t\t\t\t\tDEFAULT_FEATURE_IMAGE_LABEL\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSelect={ onUpdateImage }\n\t\t\t\t\t\tunstableFeaturedImageFlow\n\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\tmodalClass=\"editor-post-featured-image__media-modal\"\n\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t<div className=\"editor-post-featured-image__container\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? 'editor-post-featured-image__toggle'\n\t\t\t\t\t\t\t\t\t\t\t: 'editor-post-featured-image__preview'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t: __( 'Edit or update the image' )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-describedby={\n\t\t\t\t\t\t\t\t\t\t! featuredImageId\n\t\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t\t: `editor-post-featured-image-${ featuredImageId }-describedby`\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{ !! featuredImageId && media && (\n\t\t\t\t\t\t\t\t\t\t<ResponsiveWrapper\n\t\t\t\t\t\t\t\t\t\t\tnaturalWidth={ mediaWidth }\n\t\t\t\t\t\t\t\t\t\t\tnaturalHeight={ mediaHeight }\n\t\t\t\t\t\t\t\t\t\t\tisInline\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\t\tsrc={ mediaSourceUrl }\n\t\t\t\t\t\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</ResponsiveWrapper>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ isLoading && <Spinner /> }\n\t\t\t\t\t\t\t\t\t{ ! featuredImageId &&\n\t\t\t\t\t\t\t\t\t\t! isLoading &&\n\t\t\t\t\t\t\t\t\t\t( postLabel.set_featured_image ||\n\t\t\t\t\t\t\t\t\t\t\tDEFAULT_SET_FEATURE_IMAGE_LABEL ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t<DropZone onFilesDrop={ onDropFiles } />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tvalue={ featuredImageId }\n\t\t\t\t\t/>\n\t\t\t\t</MediaUploadCheck>\n\t\t\t\t{ !! featuredImageId && (\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t{ media && (\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\t\t\tpostLabel.featured_image ||\n\t\t\t\t\t\t\t\t\tDEFAULT_FEATURE_IMAGE_LABEL\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonSelect={ onUpdateImage }\n\t\t\t\t\t\t\t\tunstableFeaturedImageFlow\n\t\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\t\tmodalClass=\"editor-post-featured-image__media-modal\"\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Replace Image' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={ onRemoveImage }\n\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\tisDestructive\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ postLabel.remove_featured_image ||\n\t\t\t\t\t\t\t\tDEFAULT_REMOVE_FEATURE_IMAGE_LABEL }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</PostFeaturedImageCheck>\n\t);\n}\n\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getMedia, getPostType } = select( coreStore );\n\tconst { getCurrentPostId, getEditedPostAttribute } = select( editorStore );\n\tconst featuredImageId = getEditedPostAttribute( 'featured_media' );\n\n\treturn {\n\t\tmedia: featuredImageId\n\t\t\t? getMedia( featuredImageId, { context: 'view' } )\n\t\t\t: null,\n\t\tcurrentPostId: getCurrentPostId(),\n\t\tpostType: getPostType( getEditedPostAttribute( 'type' ) ),\n\t\tfeaturedImageId,\n\t};\n} );\n\nconst applyWithDispatch = withDispatch(\n\t( dispatch, { noticeOperations }, { select } ) => {\n\t\tconst { editPost } = dispatch( editorStore );\n\t\treturn {\n\t\t\tonUpdateImage( image ) {\n\t\t\t\teditPost( { featured_media: image.id } );\n\t\t\t},\n\t\t\tonDropImage( filesList ) {\n\t\t\t\tselect( blockEditorStore )\n\t\t\t\t\t.getSettings()\n\t\t\t\t\t.mediaUpload( {\n\t\t\t\t\t\tallowedTypes: [ 'image' ],\n\t\t\t\t\t\tfilesList,\n\t\t\t\t\t\tonFileChange( [ image ] ) {\n\t\t\t\t\t\t\teditPost( { featured_media: image.id } );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tonError( message ) {\n\t\t\t\t\t\t\tnoticeOperations.removeAllNotices();\n\t\t\t\t\t\t\tnoticeOperations.createErrorNotice( message );\n\t\t\t\t\t\t},\n\t\t\t\t\t} );\n\t\t\t},\n\t\t\tonRemoveImage() {\n\t\t\t\teditPost( { featured_media: 0 } );\n\t\t\t},\n\t\t};\n\t}\n);\n\nexport default compose(\n\twithNotices,\n\tapplyWithSelect,\n\tapplyWithDispatch,\n\twithFilters( 'editor.PostFeaturedImage' )\n)( PostFeaturedImage );\n"]}
@@ -26,7 +26,13 @@ export function PostTaxonomies(_ref) {
26
26
  taxonomyWrapper = identity
27
27
  } = _ref;
28
28
  const availableTaxonomies = filter(taxonomies, taxonomy => includes(taxonomy.types, postType));
29
- const visibleTaxonomies = filter(availableTaxonomies, taxonomy => taxonomy.visibility.show_ui);
29
+ const visibleTaxonomies = filter(availableTaxonomies, // In some circumstances .visibility can end up as undefined so optional chaining operator required.
30
+ // https://github.com/WordPress/gutenberg/issues/40326
31
+ taxonomy => {
32
+ var _taxonomy$visibility;
33
+
34
+ return (_taxonomy$visibility = taxonomy.visibility) === null || _taxonomy$visibility === void 0 ? void 0 : _taxonomy$visibility.show_ui;
35
+ });
30
36
  return visibleTaxonomies.map(taxonomy => {
31
37
  const TaxonomyComponent = taxonomy.hierarchical ? HierarchicalTermSelector : FlatTermSelector;
32
38
  return createElement(Fragment, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/index.js"],"names":["filter","identity","includes","Fragment","withSelect","compose","store","coreStore","HierarchicalTermSelector","FlatTermSelector","editorStore","PostTaxonomies","postType","taxonomies","taxonomyWrapper","availableTaxonomies","taxonomy","types","visibleTaxonomies","visibility","show_ui","map","TaxonomyComponent","hierarchical","slug","select","getCurrentPostType","getTaxonomies","per_page"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,EAAiBC,QAAjB,EAA2BC,QAA3B,QAA2C,QAA3C;AAEA;AACA;AACA;;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,UAAT,QAA2B,iBAA3B;AACA,SAASC,OAAT,QAAwB,oBAAxB;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,OAAOC,wBAAP,MAAqC,8BAArC;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;AACA,SAASH,KAAK,IAAII,WAAlB,QAAqC,aAArC;AAEA,OAAO,SAASC,cAAT,OAIH;AAAA,MAJ4B;AAC/BC,IAAAA,QAD+B;AAE/BC,IAAAA,UAF+B;AAG/BC,IAAAA,eAAe,GAAGb;AAHa,GAI5B;AACH,QAAMc,mBAAmB,GAAGf,MAAM,CAAEa,UAAF,EAAgBG,QAAF,IAC/Cd,QAAQ,CAAEc,QAAQ,CAACC,KAAX,EAAkBL,QAAlB,CADyB,CAAlC;AAGA,QAAMM,iBAAiB,GAAGlB,MAAM,CAC/Be,mBAD+B,EAE7BC,QAAF,IAAgBA,QAAQ,CAACG,UAAT,CAAoBC,OAFL,CAAhC;AAIA,SAAOF,iBAAiB,CAACG,GAAlB,CAAyBL,QAAF,IAAgB;AAC7C,UAAMM,iBAAiB,GAAGN,QAAQ,CAACO,YAAT,GACvBf,wBADuB,GAEvBC,gBAFH;AAGA,WACC,cAAC,QAAD;AAAU,MAAA,GAAG,EAAI,YAAYO,QAAQ,CAACQ,IAAM;AAA5C,OACGV,eAAe,CAChB,cAAC,iBAAD;AAAmB,MAAA,IAAI,EAAGE,QAAQ,CAACQ;AAAnC,MADgB,EAEhBR,QAFgB,CADlB,CADD;AAQA,GAZM,CAAP;AAaA;AAED,eAAeX,OAAO,CAAE,CACvBD,UAAU,CAAIqB,MAAF,IAAc;AACzB,SAAO;AACNb,IAAAA,QAAQ,EAAEa,MAAM,CAAEf,WAAF,CAAN,CAAsBgB,kBAAtB,EADJ;AAENb,IAAAA,UAAU,EAAEY,MAAM,CAAElB,SAAF,CAAN,CAAoBoB,aAApB,CAAmC;AAAEC,MAAAA,QAAQ,EAAE,CAAC;AAAb,KAAnC;AAFN,GAAP;AAIA,CALS,CADa,CAAF,CAAP,CAOVjB,cAPU,CAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { filter, identity, includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Fragment } from '@wordpress/element';\nimport { withSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport HierarchicalTermSelector from './hierarchical-term-selector';\nimport FlatTermSelector from './flat-term-selector';\nimport { store as editorStore } from '../../store';\n\nexport function PostTaxonomies( {\n\tpostType,\n\ttaxonomies,\n\ttaxonomyWrapper = identity,\n} ) {\n\tconst availableTaxonomies = filter( taxonomies, ( taxonomy ) =>\n\t\tincludes( taxonomy.types, postType )\n\t);\n\tconst visibleTaxonomies = filter(\n\t\tavailableTaxonomies,\n\t\t( taxonomy ) => taxonomy.visibility.show_ui\n\t);\n\treturn visibleTaxonomies.map( ( taxonomy ) => {\n\t\tconst TaxonomyComponent = taxonomy.hierarchical\n\t\t\t? HierarchicalTermSelector\n\t\t\t: FlatTermSelector;\n\t\treturn (\n\t\t\t<Fragment key={ `taxonomy-${ taxonomy.slug }` }>\n\t\t\t\t{ taxonomyWrapper(\n\t\t\t\t\t<TaxonomyComponent slug={ taxonomy.slug } />,\n\t\t\t\t\ttaxonomy\n\t\t\t\t) }\n\t\t\t</Fragment>\n\t\t);\n\t} );\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostType: select( editorStore ).getCurrentPostType(),\n\t\t\ttaxonomies: select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t};\n\t} ),\n] )( PostTaxonomies );\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/post-taxonomies/index.js"],"names":["filter","identity","includes","Fragment","withSelect","compose","store","coreStore","HierarchicalTermSelector","FlatTermSelector","editorStore","PostTaxonomies","postType","taxonomies","taxonomyWrapper","availableTaxonomies","taxonomy","types","visibleTaxonomies","visibility","show_ui","map","TaxonomyComponent","hierarchical","slug","select","getCurrentPostType","getTaxonomies","per_page"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,MAAT,EAAiBC,QAAjB,EAA2BC,QAA3B,QAA2C,QAA3C;AAEA;AACA;AACA;;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,UAAT,QAA2B,iBAA3B;AACA,SAASC,OAAT,QAAwB,oBAAxB;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,OAAOC,wBAAP,MAAqC,8BAArC;AACA,OAAOC,gBAAP,MAA6B,sBAA7B;AACA,SAASH,KAAK,IAAII,WAAlB,QAAqC,aAArC;AAEA,OAAO,SAASC,cAAT,OAIH;AAAA,MAJ4B;AAC/BC,IAAAA,QAD+B;AAE/BC,IAAAA,UAF+B;AAG/BC,IAAAA,eAAe,GAAGb;AAHa,GAI5B;AACH,QAAMc,mBAAmB,GAAGf,MAAM,CAAEa,UAAF,EAAgBG,QAAF,IAC/Cd,QAAQ,CAAEc,QAAQ,CAACC,KAAX,EAAkBL,QAAlB,CADyB,CAAlC;AAGA,QAAMM,iBAAiB,GAAGlB,MAAM,CAC/Be,mBAD+B,EAE/B;AACA;AACEC,EAAAA,QAAF;AAAA;;AAAA,mCAAgBA,QAAQ,CAACG,UAAzB,yDAAgB,qBAAqBC,OAArC;AAAA,GAJ+B,CAAhC;AAMA,SAAOF,iBAAiB,CAACG,GAAlB,CAAyBL,QAAF,IAAgB;AAC7C,UAAMM,iBAAiB,GAAGN,QAAQ,CAACO,YAAT,GACvBf,wBADuB,GAEvBC,gBAFH;AAGA,WACC,cAAC,QAAD;AAAU,MAAA,GAAG,EAAI,YAAYO,QAAQ,CAACQ,IAAM;AAA5C,OACGV,eAAe,CAChB,cAAC,iBAAD;AAAmB,MAAA,IAAI,EAAGE,QAAQ,CAACQ;AAAnC,MADgB,EAEhBR,QAFgB,CADlB,CADD;AAQA,GAZM,CAAP;AAaA;AAED,eAAeX,OAAO,CAAE,CACvBD,UAAU,CAAIqB,MAAF,IAAc;AACzB,SAAO;AACNb,IAAAA,QAAQ,EAAEa,MAAM,CAAEf,WAAF,CAAN,CAAsBgB,kBAAtB,EADJ;AAENb,IAAAA,UAAU,EAAEY,MAAM,CAAElB,SAAF,CAAN,CAAoBoB,aAApB,CAAmC;AAAEC,MAAAA,QAAQ,EAAE,CAAC;AAAb,KAAnC;AAFN,GAAP;AAIA,CALS,CADa,CAAF,CAAP,CAOVjB,cAPU,CAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { filter, identity, includes } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Fragment } from '@wordpress/element';\nimport { withSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport HierarchicalTermSelector from './hierarchical-term-selector';\nimport FlatTermSelector from './flat-term-selector';\nimport { store as editorStore } from '../../store';\n\nexport function PostTaxonomies( {\n\tpostType,\n\ttaxonomies,\n\ttaxonomyWrapper = identity,\n} ) {\n\tconst availableTaxonomies = filter( taxonomies, ( taxonomy ) =>\n\t\tincludes( taxonomy.types, postType )\n\t);\n\tconst visibleTaxonomies = filter(\n\t\tavailableTaxonomies,\n\t\t// In some circumstances .visibility can end up as undefined so optional chaining operator required.\n\t\t// https://github.com/WordPress/gutenberg/issues/40326\n\t\t( taxonomy ) => taxonomy.visibility?.show_ui\n\t);\n\treturn visibleTaxonomies.map( ( taxonomy ) => {\n\t\tconst TaxonomyComponent = taxonomy.hierarchical\n\t\t\t? HierarchicalTermSelector\n\t\t\t: FlatTermSelector;\n\t\treturn (\n\t\t\t<Fragment key={ `taxonomy-${ taxonomy.slug }` }>\n\t\t\t\t{ taxonomyWrapper(\n\t\t\t\t\t<TaxonomyComponent slug={ taxonomy.slug } />,\n\t\t\t\t\ttaxonomy\n\t\t\t\t) }\n\t\t\t</Fragment>\n\t\t);\n\t} );\n}\n\nexport default compose( [\n\twithSelect( ( select ) => {\n\t\treturn {\n\t\t\tpostType: select( editorStore ).getCurrentPostType(),\n\t\t\ttaxonomies: select( coreStore ).getTaxonomies( { per_page: -1 } ),\n\t\t};\n\t} ),\n] )( PostTaxonomies );\n"]}
@@ -9,7 +9,7 @@ import Textarea from 'react-autosize-textarea';
9
9
  */
10
10
 
11
11
  import { __ } from '@wordpress/i18n';
12
- import { useState } from '@wordpress/element';
12
+ import { useEffect, useState, useRef } from '@wordpress/element';
13
13
  import { parse } from '@wordpress/blocks';
14
14
  import { useDispatch, useSelect } from '@wordpress/data';
15
15
  import { useInstanceId } from '@wordpress/compose';
@@ -28,6 +28,7 @@ export default function PostTextEditor() {
28
28
  const [value, setValue] = useState(postContent);
29
29
  const [isDirty, setIsDirty] = useState(false);
30
30
  const instanceId = useInstanceId(PostTextEditor);
31
+ const valueRef = useRef();
31
32
 
32
33
  if (!isDirty && value !== postContent) {
33
34
  setValue(postContent);
@@ -68,6 +69,16 @@ export default function PostTextEditor() {
68
69
  }
69
70
  };
70
71
 
72
+ useEffect(() => {
73
+ valueRef.current = value;
74
+ }, [value]); // Ensure changes aren't lost when component unmounts.
75
+
76
+ useEffect(() => {
77
+ return () => {
78
+ const blocks = parse(valueRef.current);
79
+ resetEditorBlocks(blocks);
80
+ };
81
+ }, []);
71
82
  return createElement(Fragment, null, createElement(VisuallyHidden, {
72
83
  as: "label",
73
84
  htmlFor: `post-content-${instanceId}`
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/editor/src/components/post-text-editor/index.js"],"names":["Textarea","__","useState","parse","useDispatch","useSelect","useInstanceId","VisuallyHidden","store","editorStore","PostTextEditor","postContent","select","getEditedPostContent","editPost","resetEditorBlocks","value","setValue","isDirty","setIsDirty","instanceId","onChange","event","newValue","target","content","stopEditing","blocks"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,QAAP,MAAqB,yBAArB;AAEA;AACA;AACA;;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,KAAT,QAAsB,mBAAtB;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,aAAT,QAA8B,oBAA9B;AACA,SAASC,cAAT,QAA+B,uBAA/B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,WAAlB,QAAqC,aAArC;AAEA,eAAe,SAASC,cAAT,GAA0B;AACxC,QAAMC,WAAW,GAAGN,SAAS,CAC1BO,MAAF,IAAcA,MAAM,CAAEH,WAAF,CAAN,CAAsBI,oBAAtB,EADc,EAE5B,EAF4B,CAA7B;AAKA,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAAkCX,WAAW,CAAEK,WAAF,CAAnD;AAEA,QAAM,CAAEO,KAAF,EAASC,QAAT,IAAsBf,QAAQ,CAAES,WAAF,CAApC;AACA,QAAM,CAAEO,OAAF,EAAWC,UAAX,IAA0BjB,QAAQ,CAAE,KAAF,CAAxC;AACA,QAAMkB,UAAU,GAAGd,aAAa,CAAEI,cAAF,CAAhC;;AAEA,MAAK,CAAEQ,OAAF,IAAaF,KAAK,KAAKL,WAA5B,EAA0C;AACzCM,IAAAA,QAAQ,CAAEN,WAAF,CAAR;AACA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,QAAMU,QAAQ,GAAKC,KAAF,IAAa;AAC7B,UAAMC,QAAQ,GAAGD,KAAK,CAACE,MAAN,CAAaR,KAA9B;AACAF,IAAAA,QAAQ,CAAE;AAAEW,MAAAA,OAAO,EAAEF;AAAX,KAAF,CAAR;AACAN,IAAAA,QAAQ,CAAEM,QAAF,CAAR;AACAJ,IAAAA,UAAU,CAAE,IAAF,CAAV;AACA,GALD;AAOA;AACD;AACA;AACA;AACA;;;AACC,QAAMO,WAAW,GAAG,MAAM;AACzB,QAAKR,OAAL,EAAe;AACd,YAAMS,MAAM,GAAGxB,KAAK,CAAEa,KAAF,CAApB;AACAD,MAAAA,iBAAiB,CAAEY,MAAF,CAAjB;AACAR,MAAAA,UAAU,CAAE,KAAF,CAAV;AACA;AACD,GAND;;AAQA,SACC,8BACC,cAAC,cAAD;AACC,IAAA,EAAE,EAAC,OADJ;AAEC,IAAA,OAAO,EAAI,gBAAgBC,UAAY;AAFxC,KAIGnB,EAAE,CAAE,mBAAF,CAJL,CADD,EAOC,cAAC,QAAD;AACC,IAAA,YAAY,EAAC,KADd;AAEC,IAAA,GAAG,EAAC,MAFL;AAGC,IAAA,KAAK,EAAGe,KAHT;AAIC,IAAA,QAAQ,EAAGK,QAJZ;AAKC,IAAA,MAAM,EAAGK,WALV;AAMC,IAAA,SAAS,EAAC,yBANX;AAOC,IAAA,EAAE,EAAI,gBAAgBN,UAAY,EAPnC;AAQC,IAAA,WAAW,EAAGnB,EAAE,CAAE,iCAAF;AARjB,IAPD,CADD;AAoBA","sourcesContent":["/**\n * External dependencies\n */\nimport Textarea from 'react-autosize-textarea';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { parse } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { VisuallyHidden } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostTextEditor() {\n\tconst postContent = useSelect(\n\t\t( select ) => select( editorStore ).getEditedPostContent(),\n\t\t[]\n\t);\n\n\tconst { editPost, resetEditorBlocks } = useDispatch( editorStore );\n\n\tconst [ value, setValue ] = useState( postContent );\n\tconst [ isDirty, setIsDirty ] = useState( false );\n\tconst instanceId = useInstanceId( PostTextEditor );\n\n\tif ( ! isDirty && value !== postContent ) {\n\t\tsetValue( postContent );\n\t}\n\n\t/**\n\t * Handles a textarea change event to notify the onChange prop callback and\n\t * reflect the new value in the component's own state. This marks the start\n\t * of the user's edits, if not already changed, preventing future props\n\t * changes to value from replacing the rendered value. This is expected to\n\t * be followed by a reset to dirty state via `stopEditing`.\n\t *\n\t * @see stopEditing\n\t *\n\t * @param {Event} event Change event.\n\t */\n\tconst onChange = ( event ) => {\n\t\tconst newValue = event.target.value;\n\t\teditPost( { content: newValue } );\n\t\tsetValue( newValue );\n\t\tsetIsDirty( true );\n\t};\n\n\t/**\n\t * Function called when the user has completed their edits, responsible for\n\t * ensuring that changes, if made, are surfaced to the onPersist prop\n\t * callback and resetting dirty state.\n\t */\n\tconst stopEditing = () => {\n\t\tif ( isDirty ) {\n\t\t\tconst blocks = parse( value );\n\t\t\tresetEditorBlocks( blocks );\n\t\t\tsetIsDirty( false );\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<VisuallyHidden\n\t\t\t\tas=\"label\"\n\t\t\t\thtmlFor={ `post-content-${ instanceId }` }\n\t\t\t>\n\t\t\t\t{ __( 'Type text or HTML' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t<Textarea\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\tdir=\"auto\"\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonBlur={ stopEditing }\n\t\t\t\tclassName=\"editor-post-text-editor\"\n\t\t\t\tid={ `post-content-${ instanceId }` }\n\t\t\t\tplaceholder={ __( 'Start writing with text or HTML' ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/editor/src/components/post-text-editor/index.js"],"names":["Textarea","__","useEffect","useState","useRef","parse","useDispatch","useSelect","useInstanceId","VisuallyHidden","store","editorStore","PostTextEditor","postContent","select","getEditedPostContent","editPost","resetEditorBlocks","value","setValue","isDirty","setIsDirty","instanceId","valueRef","onChange","event","newValue","target","content","stopEditing","blocks","current"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,QAAP,MAAqB,yBAArB;AAEA;AACA;AACA;;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,SAAT,EAAoBC,QAApB,EAA8BC,MAA9B,QAA4C,oBAA5C;AACA,SAASC,KAAT,QAAsB,mBAAtB;AACA,SAASC,WAAT,EAAsBC,SAAtB,QAAuC,iBAAvC;AACA,SAASC,aAAT,QAA8B,oBAA9B;AACA,SAASC,cAAT,QAA+B,uBAA/B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,WAAlB,QAAqC,aAArC;AAEA,eAAe,SAASC,cAAT,GAA0B;AACxC,QAAMC,WAAW,GAAGN,SAAS,CAC1BO,MAAF,IAAcA,MAAM,CAAEH,WAAF,CAAN,CAAsBI,oBAAtB,EADc,EAE5B,EAF4B,CAA7B;AAKA,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAAkCX,WAAW,CAAEK,WAAF,CAAnD;AAEA,QAAM,CAAEO,KAAF,EAASC,QAAT,IAAsBhB,QAAQ,CAAEU,WAAF,CAApC;AACA,QAAM,CAAEO,OAAF,EAAWC,UAAX,IAA0BlB,QAAQ,CAAE,KAAF,CAAxC;AACA,QAAMmB,UAAU,GAAGd,aAAa,CAAEI,cAAF,CAAhC;AACA,QAAMW,QAAQ,GAAGnB,MAAM,EAAvB;;AAEA,MAAK,CAAEgB,OAAF,IAAaF,KAAK,KAAKL,WAA5B,EAA0C;AACzCM,IAAAA,QAAQ,CAAEN,WAAF,CAAR;AACA;AAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACC,QAAMW,QAAQ,GAAKC,KAAF,IAAa;AAC7B,UAAMC,QAAQ,GAAGD,KAAK,CAACE,MAAN,CAAaT,KAA9B;AACAF,IAAAA,QAAQ,CAAE;AAAEY,MAAAA,OAAO,EAAEF;AAAX,KAAF,CAAR;AACAP,IAAAA,QAAQ,CAAEO,QAAF,CAAR;AACAL,IAAAA,UAAU,CAAE,IAAF,CAAV;AACA,GALD;AAOA;AACD;AACA;AACA;AACA;;;AACC,QAAMQ,WAAW,GAAG,MAAM;AACzB,QAAKT,OAAL,EAAe;AACd,YAAMU,MAAM,GAAGzB,KAAK,CAAEa,KAAF,CAApB;AACAD,MAAAA,iBAAiB,CAAEa,MAAF,CAAjB;AACAT,MAAAA,UAAU,CAAE,KAAF,CAAV;AACA;AACD,GAND;;AAQAnB,EAAAA,SAAS,CAAE,MAAM;AAChBqB,IAAAA,QAAQ,CAACQ,OAAT,GAAmBb,KAAnB;AACA,GAFQ,EAEN,CAAEA,KAAF,CAFM,CAAT,CAhDwC,CAoDxC;;AACAhB,EAAAA,SAAS,CAAE,MAAM;AAChB,WAAO,MAAM;AACZ,YAAM4B,MAAM,GAAGzB,KAAK,CAAEkB,QAAQ,CAACQ,OAAX,CAApB;AACAd,MAAAA,iBAAiB,CAAEa,MAAF,CAAjB;AACA,KAHD;AAIA,GALQ,EAKN,EALM,CAAT;AAOA,SACC,8BACC,cAAC,cAAD;AACC,IAAA,EAAE,EAAC,OADJ;AAEC,IAAA,OAAO,EAAI,gBAAgBR,UAAY;AAFxC,KAIGrB,EAAE,CAAE,mBAAF,CAJL,CADD,EAOC,cAAC,QAAD;AACC,IAAA,YAAY,EAAC,KADd;AAEC,IAAA,GAAG,EAAC,MAFL;AAGC,IAAA,KAAK,EAAGiB,KAHT;AAIC,IAAA,QAAQ,EAAGM,QAJZ;AAKC,IAAA,MAAM,EAAGK,WALV;AAMC,IAAA,SAAS,EAAC,yBANX;AAOC,IAAA,EAAE,EAAI,gBAAgBP,UAAY,EAPnC;AAQC,IAAA,WAAW,EAAGrB,EAAE,CAAE,iCAAF;AARjB,IAPD,CADD;AAoBA","sourcesContent":["/**\n * External dependencies\n */\nimport Textarea from 'react-autosize-textarea';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, useState, useRef } from '@wordpress/element';\nimport { parse } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { VisuallyHidden } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostTextEditor() {\n\tconst postContent = useSelect(\n\t\t( select ) => select( editorStore ).getEditedPostContent(),\n\t\t[]\n\t);\n\n\tconst { editPost, resetEditorBlocks } = useDispatch( editorStore );\n\n\tconst [ value, setValue ] = useState( postContent );\n\tconst [ isDirty, setIsDirty ] = useState( false );\n\tconst instanceId = useInstanceId( PostTextEditor );\n\tconst valueRef = useRef();\n\n\tif ( ! isDirty && value !== postContent ) {\n\t\tsetValue( postContent );\n\t}\n\n\t/**\n\t * Handles a textarea change event to notify the onChange prop callback and\n\t * reflect the new value in the component's own state. This marks the start\n\t * of the user's edits, if not already changed, preventing future props\n\t * changes to value from replacing the rendered value. This is expected to\n\t * be followed by a reset to dirty state via `stopEditing`.\n\t *\n\t * @see stopEditing\n\t *\n\t * @param {Event} event Change event.\n\t */\n\tconst onChange = ( event ) => {\n\t\tconst newValue = event.target.value;\n\t\teditPost( { content: newValue } );\n\t\tsetValue( newValue );\n\t\tsetIsDirty( true );\n\t};\n\n\t/**\n\t * Function called when the user has completed their edits, responsible for\n\t * ensuring that changes, if made, are surfaced to the onPersist prop\n\t * callback and resetting dirty state.\n\t */\n\tconst stopEditing = () => {\n\t\tif ( isDirty ) {\n\t\t\tconst blocks = parse( value );\n\t\t\tresetEditorBlocks( blocks );\n\t\t\tsetIsDirty( false );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tvalueRef.current = value;\n\t}, [ value ] );\n\n\t// Ensure changes aren't lost when component unmounts.\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tconst blocks = parse( valueRef.current );\n\t\t\tresetEditorBlocks( blocks );\n\t\t};\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t<VisuallyHidden\n\t\t\t\tas=\"label\"\n\t\t\t\thtmlFor={ `post-content-${ instanceId }` }\n\t\t\t>\n\t\t\t\t{ __( 'Type text or HTML' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t<Textarea\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\tdir=\"auto\"\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonBlur={ stopEditing }\n\t\t\t\tclassName=\"editor-post-text-editor\"\n\t\t\t\tid={ `post-content-${ instanceId }` }\n\t\t\t\tplaceholder={ __( 'Start writing with text or HTML' ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"]}