@wordpress/editor 12.12.0 → 12.14.1-next.d6164808d3.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 (83) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/components/editor-history/redo.js +2 -1
  3. package/build/components/editor-history/redo.js.map +1 -1
  4. package/build/components/global-keyboard-shortcuts/register-shortcuts.js +11 -1
  5. package/build/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  6. package/build/components/page-attributes/parent.js +6 -2
  7. package/build/components/page-attributes/parent.js.map +1 -1
  8. package/build/components/post-locked-modal/index.js +1 -1
  9. package/build/components/post-locked-modal/index.js.map +1 -1
  10. package/build/components/post-publish-panel/maybe-category-panel.js +2 -4
  11. package/build/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  12. package/build/components/post-taxonomies/flat-term-selector.js +7 -1
  13. package/build/components/post-taxonomies/flat-term-selector.js.map +1 -1
  14. package/build/components/post-title/index.js +22 -2
  15. package/build/components/post-title/index.js.map +1 -1
  16. package/build/components/post-url/label.js +1 -1
  17. package/build/components/post-url/label.js.map +1 -1
  18. package/build/components/provider/index.native.js +3 -1
  19. package/build/components/provider/index.native.js.map +1 -1
  20. package/build/components/provider/use-block-editor-settings.js +2 -2
  21. package/build/components/provider/use-block-editor-settings.js.map +1 -1
  22. package/build/hooks/custom-sources-backwards-compatibility.js +8 -5
  23. package/build/hooks/custom-sources-backwards-compatibility.js.map +1 -1
  24. package/build/store/actions.js +1 -7
  25. package/build/store/actions.js.map +1 -1
  26. package/build/store/reducer.js +17 -9
  27. package/build/store/reducer.js.map +1 -1
  28. package/build/store/selectors.js +37 -17
  29. package/build/store/selectors.js.map +1 -1
  30. package/build-module/components/editor-history/redo.js +3 -2
  31. package/build-module/components/editor-history/redo.js.map +1 -1
  32. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js +10 -1
  33. package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
  34. package/build-module/components/page-attributes/parent.js +4 -3
  35. package/build-module/components/page-attributes/parent.js.map +1 -1
  36. package/build-module/components/post-locked-modal/index.js +1 -1
  37. package/build-module/components/post-locked-modal/index.js.map +1 -1
  38. package/build-module/components/post-publish-panel/maybe-category-panel.js +2 -4
  39. package/build-module/components/post-publish-panel/maybe-category-panel.js.map +1 -1
  40. package/build-module/components/post-taxonomies/flat-term-selector.js +8 -2
  41. package/build-module/components/post-taxonomies/flat-term-selector.js.map +1 -1
  42. package/build-module/components/post-title/index.js +23 -3
  43. package/build-module/components/post-title/index.js.map +1 -1
  44. package/build-module/components/post-url/label.js +2 -2
  45. package/build-module/components/post-url/label.js.map +1 -1
  46. package/build-module/components/provider/index.native.js +3 -1
  47. package/build-module/components/provider/index.native.js.map +1 -1
  48. package/build-module/components/provider/use-block-editor-settings.js +2 -2
  49. package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
  50. package/build-module/hooks/custom-sources-backwards-compatibility.js +9 -6
  51. package/build-module/hooks/custom-sources-backwards-compatibility.js.map +1 -1
  52. package/build-module/store/actions.js +1 -6
  53. package/build-module/store/actions.js.map +1 -1
  54. package/build-module/store/reducer.js +17 -8
  55. package/build-module/store/reducer.js.map +1 -1
  56. package/build-module/store/selectors.js +37 -16
  57. package/build-module/store/selectors.js.map +1 -1
  58. package/build-style/style-rtl.css +3 -0
  59. package/build-style/style.css +3 -0
  60. package/package.json +30 -29
  61. package/src/components/README.md +1 -1
  62. package/src/components/editor-history/redo.js +6 -2
  63. package/src/components/global-keyboard-shortcuts/register-shortcuts.js +13 -0
  64. package/src/components/page-attributes/parent.js +4 -9
  65. package/src/components/post-author/test/check.js +7 -7
  66. package/src/components/post-last-revision/test/check.js +7 -7
  67. package/src/components/post-locked-modal/index.js +1 -1
  68. package/src/components/post-pending-status/test/check.js +5 -5
  69. package/src/components/post-publish-panel/maybe-category-panel.js +3 -5
  70. package/src/components/post-schedule/test/check.js +5 -5
  71. package/src/components/post-slug/test/check.js +3 -3
  72. package/src/components/post-sticky/test/index.js +11 -7
  73. package/src/components/post-taxonomies/flat-term-selector.js +10 -2
  74. package/src/components/post-title/index.js +23 -3
  75. package/src/components/post-trash/style.scss +3 -0
  76. package/src/components/post-url/label.js +2 -2
  77. package/src/components/post-visibility/test/check.js +16 -8
  78. package/src/components/provider/index.native.js +3 -1
  79. package/src/components/provider/use-block-editor-settings.js +6 -1
  80. package/src/hooks/custom-sources-backwards-compatibility.js +14 -12
  81. package/src/store/actions.js +1 -6
  82. package/src/store/reducer.js +16 -10
  83. package/src/store/selectors.js +30 -29
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { pickBy, mapValues, isEmpty, mapKeys } from 'lodash';
4
+ import { pickBy, mapValues, isEmpty } from 'lodash';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -69,17 +69,19 @@ const createWithMetaAttributeSource = ( metaAttributes ) =>
69
69
  <BlockEdit
70
70
  attributes={ mergedAttributes }
71
71
  setAttributes={ ( nextAttributes ) => {
72
- const nextMeta = mapKeys(
73
- // Filter to intersection of keys between the updated
74
- // attributes and those with an associated meta key.
75
- pickBy(
76
- nextAttributes,
77
- ( value, key ) => metaAttributes[ key ]
78
- ),
79
-
80
- // Rename the keys to the expected meta key name.
81
- ( value, attributeKey ) =>
82
- metaAttributes[ attributeKey ]
72
+ const nextMeta = Object.fromEntries(
73
+ Object.entries(
74
+ // Filter to intersection of keys between the updated
75
+ // attributes and those with an associated meta key.
76
+ pickBy(
77
+ nextAttributes,
78
+ ( value, key ) => metaAttributes[ key ]
79
+ )
80
+ ).map( ( [ attributeKey, value ] ) => [
81
+ // Rename the keys to the expected meta key name.
82
+ metaAttributes[ attributeKey ],
83
+ value,
84
+ ] )
83
85
  );
84
86
 
85
87
  if ( ! isEmpty( nextMeta ) ) {
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { has } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -48,7 +43,7 @@ export const setupEditor =
48
43
  // included as part of editor setup action. Assume edited content as
49
44
  // canonical if provided, falling back to post.
50
45
  let content;
51
- if ( has( edits, [ 'content' ] ) ) {
46
+ if ( 'content' in edits ) {
52
47
  content = edits.content;
53
48
  } else {
54
49
  content = post.content.raw;
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { omit, isEqual } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -39,7 +34,12 @@ export function getPostRawValue( value ) {
39
34
  * @return {boolean} Whether the two objects have the same keys.
40
35
  */
41
36
  export function hasSameKeys( a, b ) {
42
- return isEqual( Object.keys( a ), Object.keys( b ) );
37
+ const keysA = Object.keys( a ).sort();
38
+ const keysB = Object.keys( b ).sort();
39
+ return (
40
+ keysA.length === keysB.length &&
41
+ keysA.every( ( key, index ) => keysB[ index ] === key )
42
+ );
43
43
  }
44
44
 
45
45
  /**
@@ -184,8 +184,11 @@ export function postSavingLock( state = {}, action ) {
184
184
  case 'LOCK_POST_SAVING':
185
185
  return { ...state, [ action.lockName ]: true };
186
186
 
187
- case 'UNLOCK_POST_SAVING':
188
- return omit( state, action.lockName );
187
+ case 'UNLOCK_POST_SAVING': {
188
+ const { [ action.lockName ]: removedLockName, ...restState } =
189
+ state;
190
+ return restState;
191
+ }
189
192
  }
190
193
  return state;
191
194
  }
@@ -205,8 +208,11 @@ export function postAutosavingLock( state = {}, action ) {
205
208
  case 'LOCK_POST_AUTOSAVING':
206
209
  return { ...state, [ action.lockName ]: true };
207
210
 
208
- case 'UNLOCK_POST_AUTOSAVING':
209
- return omit( state, action.lockName );
211
+ case 'UNLOCK_POST_AUTOSAVING': {
212
+ const { [ action.lockName ]: removedLockName, ...restState } =
213
+ state;
214
+ return restState;
215
+ }
210
216
  }
211
217
  return state;
212
218
  }
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { find, get, has, includes, some } from 'lodash';
5
4
  import createSelector from 'rememo';
6
5
 
7
6
  /**
@@ -149,8 +148,7 @@ export const hasNonPostEntityChanges = createRegistrySelector(
149
148
  const dirtyEntityRecords =
150
149
  select( coreStore ).__experimentalGetDirtyEntityRecords();
151
150
  const { type, id } = getCurrentPost( state );
152
- return some(
153
- dirtyEntityRecords,
151
+ return dirtyEntityRecords.some(
154
152
  ( entityRecord ) =>
155
153
  entityRecord.kind !== 'postType' ||
156
154
  entityRecord.name !== type ||
@@ -232,10 +230,8 @@ export function getCurrentPostId( state ) {
232
230
  * @return {number} Number of revisions.
233
231
  */
234
232
  export function getCurrentPostRevisionsCount( state ) {
235
- return get(
236
- getCurrentPost( state ),
237
- [ '_links', 'version-history', 0, 'count' ],
238
- 0
233
+ return (
234
+ getCurrentPost( state )._links?.[ 'version-history' ]?.[ 0 ]?.count ?? 0
239
235
  );
240
236
  }
241
237
 
@@ -248,9 +244,8 @@ export function getCurrentPostRevisionsCount( state ) {
248
244
  * @return {?number} ID of the last revision.
249
245
  */
250
246
  export function getCurrentPostLastRevisionId( state ) {
251
- return get(
252
- getCurrentPost( state ),
253
- [ '_links', 'predecessor-version', 0, 'id' ],
247
+ return (
248
+ getCurrentPost( state )._links?.[ 'predecessor-version' ]?.[ 0 ]?.id ??
254
249
  null
255
250
  );
256
251
  }
@@ -371,7 +366,7 @@ export function getEditedPostAttribute( state, attributeName ) {
371
366
  export const getAutosaveAttribute = createRegistrySelector(
372
367
  ( select ) => ( state, attributeName ) => {
373
368
  if (
374
- ! includes( AUTOSAVE_PROPERTIES, attributeName ) &&
369
+ ! AUTOSAVE_PROPERTIES.includes( attributeName ) &&
375
370
  attributeName !== 'preview_link'
376
371
  ) {
377
372
  return;
@@ -379,9 +374,7 @@ export const getAutosaveAttribute = createRegistrySelector(
379
374
 
380
375
  const postType = getCurrentPostType( state );
381
376
  const postId = getCurrentPostId( state );
382
- const currentUserId = get( select( coreStore ).getCurrentUser(), [
383
- 'id',
384
- ] );
377
+ const currentUserId = select( coreStore ).getCurrentUser()?.id;
385
378
  const autosave = select( coreStore ).getAutosave(
386
379
  postType,
387
380
  postId,
@@ -534,7 +527,7 @@ export function isEditedPostEmpty( state ) {
534
527
 
535
528
  if ( blocks.length ) {
536
529
  // Pierce the abstraction of the serializer in knowing that blocks are
537
- // joined with with newlines such that even if every individual block
530
+ // joined with newlines such that even if every individual block
538
531
  // produces an empty save result, the serialized content is non-empty.
539
532
  if ( blocks.length > 1 ) {
540
533
  return false;
@@ -589,9 +582,7 @@ export const isEditedPostAutosaveable = createRegistrySelector(
589
582
  postType,
590
583
  postId
591
584
  );
592
- const currentUserId = get( select( coreStore ).getCurrentUser(), [
593
- 'id',
594
- ] );
585
+ const currentUserId = select( coreStore ).getCurrentUser()?.id;
595
586
 
596
587
  // Disable reason - this line causes the side-effect of fetching the autosave
597
588
  // via a resolver, moving below the return would result in the autosave never
@@ -710,8 +701,7 @@ export const isSavingNonPostEntityChanges = createRegistrySelector(
710
701
  const entitiesBeingSaved =
711
702
  select( coreStore ).__experimentalGetEntitiesBeingSaved();
712
703
  const { type, id } = getCurrentPost( state );
713
- return some(
714
- entitiesBeingSaved,
704
+ return entitiesBeingSaved.some(
715
705
  ( entityRecord ) =>
716
706
  entityRecord.kind !== 'postType' ||
717
707
  entityRecord.name !== type ||
@@ -771,7 +761,7 @@ export function isAutosavingPost( state ) {
771
761
  if ( ! isSavingPost( state ) ) {
772
762
  return false;
773
763
  }
774
- return !! get( state.saving, [ 'options', 'isAutosave' ] );
764
+ return Boolean( state.saving.options?.isAutosave );
775
765
  }
776
766
 
777
767
  /**
@@ -785,7 +775,7 @@ export function isPreviewingPost( state ) {
785
775
  if ( ! isSavingPost( state ) ) {
786
776
  return false;
787
777
  }
788
- return !! get( state.saving, [ 'options', 'isPreview' ] );
778
+ return Boolean( state.saving.options?.isPreview );
789
779
  }
790
780
 
791
781
  /**
@@ -1081,10 +1071,11 @@ export function getActivePostLock( state ) {
1081
1071
  * @return {boolean} Whether the user can or can't post unfiltered HTML.
1082
1072
  */
1083
1073
  export function canUserUseUnfilteredHTML( state ) {
1084
- return has( getCurrentPost( state ), [
1085
- '_links',
1086
- 'wp:action-unfiltered-html',
1087
- ] );
1074
+ return Boolean(
1075
+ getCurrentPost( state )._links?.hasOwnProperty(
1076
+ 'wp:action-unfiltered-html'
1077
+ )
1078
+ );
1088
1079
  }
1089
1080
 
1090
1081
  /**
@@ -1583,8 +1574,18 @@ export const __experimentalGetDefaultTemplatePartAreas = createSelector(
1583
1574
  * @return {Object} The template type.
1584
1575
  */
1585
1576
  export const __experimentalGetDefaultTemplateType = createSelector(
1586
- ( state, slug ) =>
1587
- find( __experimentalGetDefaultTemplateTypes( state ), { slug } ) || {},
1577
+ ( state, slug ) => {
1578
+ const templateTypes = __experimentalGetDefaultTemplateTypes( state );
1579
+ if ( ! templateTypes ) {
1580
+ return EMPTY_OBJECT;
1581
+ }
1582
+
1583
+ return (
1584
+ Object.values( templateTypes ).find(
1585
+ ( type ) => type.slug === slug
1586
+ ) ?? EMPTY_OBJECT
1587
+ );
1588
+ },
1588
1589
  ( state, slug ) => [ __experimentalGetDefaultTemplateTypes( state ), slug ]
1589
1590
  );
1590
1591
 
@@ -1598,7 +1599,7 @@ export const __experimentalGetDefaultTemplateType = createSelector(
1598
1599
  */
1599
1600
  export function __experimentalGetTemplateInfo( state, template ) {
1600
1601
  if ( ! template ) {
1601
- return {};
1602
+ return EMPTY_OBJECT;
1602
1603
  }
1603
1604
 
1604
1605
  const { description, slug, title, area } = template;