@wordpress/editor 13.28.5 → 13.30.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.
- package/CHANGELOG.md +4 -0
- package/build/components/block-removal-warnings/index.js +70 -0
- package/build/components/block-removal-warnings/index.js.map +1 -0
- package/build/components/commands/index.js +209 -0
- package/build/components/commands/index.js.map +1 -0
- package/build/components/commands/index.native.js +9 -0
- package/build/components/commands/index.native.js.map +1 -0
- package/build/components/document-bar/index.js +78 -67
- package/build/components/document-bar/index.js.map +1 -1
- package/build/components/document-outline/check.js +8 -7
- package/build/components/document-outline/check.js.map +1 -1
- package/build/components/document-outline/index.js +26 -27
- package/build/components/document-outline/index.js.map +1 -1
- package/build/components/document-tools/index.js +5 -3
- package/build/components/document-tools/index.js.map +1 -1
- package/build/components/editor-help/intro-to-blocks.native.js.map +1 -1
- package/build/components/entities-saved-states/entity-type-list.js.map +1 -1
- package/build/components/global-keyboard-shortcuts/index.js +20 -2
- package/build/components/global-keyboard-shortcuts/index.js.map +1 -1
- package/build/components/global-keyboard-shortcuts/register-shortcuts.js +18 -0
- package/build/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
- package/build/components/list-view-sidebar/index.js +1 -1
- package/build/components/list-view-sidebar/index.js.map +1 -1
- package/build/components/mode-switcher/index.js +86 -0
- package/build/components/mode-switcher/index.js.map +1 -0
- package/build/components/post-locked-modal/index.js.map +1 -1
- package/build/components/post-preview-button/index.js +2 -1
- package/build/components/post-preview-button/index.js.map +1 -1
- package/build/components/post-publish-button/index.js +2 -1
- package/build/components/post-publish-button/index.js.map +1 -1
- package/build/components/post-publish-panel/index.js.map +1 -1
- package/build/components/post-publish-panel/maybe-upload-media.js.map +1 -1
- package/build/components/post-taxonomies/hierarchical-term-selector.js +3 -0
- package/build/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build/components/post-title/index.js +0 -5
- package/build/components/post-title/index.js.map +1 -1
- package/build/components/post-title/index.native.js.map +1 -1
- package/build/components/post-title/post-title-raw.js.map +1 -1
- package/build/components/post-view-link/index.js +2 -1
- package/build/components/post-view-link/index.js.map +1 -1
- package/build/components/provider/index.js +8 -1
- package/build/components/provider/index.js.map +1 -1
- package/build/components/provider/index.native.js +4 -9
- package/build/components/provider/index.native.js.map +1 -1
- package/build/components/provider/use-block-editor-settings.js +1 -1
- package/build/components/provider/use-block-editor-settings.js.map +1 -1
- package/build/components/provider/use-hide-blocks-from-inserter.js +53 -0
- package/build/components/provider/use-hide-blocks-from-inserter.js.map +1 -0
- package/build/private-apis.js +2 -0
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +69 -2
- package/build/store/actions.js.map +1 -1
- package/build/store/selectors.js +13 -1
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-removal-warnings/index.js +64 -0
- package/build-module/components/block-removal-warnings/index.js.map +1 -0
- package/build-module/components/commands/index.js +202 -0
- package/build-module/components/commands/index.js.map +1 -0
- package/build-module/components/commands/index.native.js +3 -0
- package/build-module/components/commands/index.native.js.map +1 -0
- package/build-module/components/document-bar/index.js +81 -70
- package/build-module/components/document-bar/index.js.map +1 -1
- package/build-module/components/document-outline/check.js +9 -8
- package/build-module/components/document-outline/check.js.map +1 -1
- package/build-module/components/document-outline/index.js +26 -26
- package/build-module/components/document-outline/index.js.map +1 -1
- package/build-module/components/document-tools/index.js +5 -3
- package/build-module/components/document-tools/index.js.map +1 -1
- package/build-module/components/editor-help/intro-to-blocks.native.js.map +1 -1
- package/build-module/components/entities-saved-states/entity-type-list.js.map +1 -1
- package/build-module/components/global-keyboard-shortcuts/index.js +20 -2
- package/build-module/components/global-keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js +18 -0
- package/build-module/components/global-keyboard-shortcuts/register-shortcuts.js.map +1 -1
- package/build-module/components/list-view-sidebar/index.js +1 -1
- package/build-module/components/list-view-sidebar/index.js.map +1 -1
- package/build-module/components/mode-switcher/index.js +80 -0
- package/build-module/components/mode-switcher/index.js.map +1 -0
- package/build-module/components/post-locked-modal/index.js.map +1 -1
- package/build-module/components/post-preview-button/index.js +2 -1
- package/build-module/components/post-preview-button/index.js.map +1 -1
- package/build-module/components/post-publish-button/index.js +2 -1
- package/build-module/components/post-publish-button/index.js.map +1 -1
- package/build-module/components/post-publish-panel/index.js.map +1 -1
- package/build-module/components/post-publish-panel/maybe-upload-media.js.map +1 -1
- package/build-module/components/post-taxonomies/hierarchical-term-selector.js +3 -0
- package/build-module/components/post-taxonomies/hierarchical-term-selector.js.map +1 -1
- package/build-module/components/post-title/index.js +0 -5
- package/build-module/components/post-title/index.js.map +1 -1
- package/build-module/components/post-title/index.native.js.map +1 -1
- package/build-module/components/post-title/post-title-raw.js.map +1 -1
- package/build-module/components/post-view-link/index.js +2 -1
- package/build-module/components/post-view-link/index.js.map +1 -1
- package/build-module/components/provider/index.js +8 -1
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/provider/index.native.js +4 -10
- package/build-module/components/provider/index.native.js.map +1 -1
- package/build-module/components/provider/use-block-editor-settings.js +1 -1
- package/build-module/components/provider/use-block-editor-settings.js.map +1 -1
- package/build-module/components/provider/use-hide-blocks-from-inserter.js +47 -0
- package/build-module/components/provider/use-hide-blocks-from-inserter.js.map +1 -0
- package/build-module/private-apis.js +2 -0
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +66 -0
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/selectors.js +12 -0
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +4 -47
- package/build-style/style.css +4 -47
- package/package.json +32 -32
- package/src/components/block-removal-warnings/index.js +92 -0
- package/src/components/commands/index.js +210 -0
- package/src/components/commands/index.native.js +2 -0
- package/src/components/document-bar/index.js +115 -94
- package/src/components/document-bar/style.scss +4 -37
- package/src/components/document-outline/check.js +8 -10
- package/src/components/document-outline/index.js +18 -23
- package/src/components/document-outline/test/index.js +26 -7
- package/src/components/document-tools/index.js +3 -3
- package/src/components/editor-help/intro-to-blocks.native.js +1 -1
- package/src/components/entities-saved-states/entity-type-list.js +1 -1
- package/src/components/global-keyboard-shortcuts/index.js +35 -4
- package/src/components/global-keyboard-shortcuts/register-shortcuts.js +20 -0
- package/src/components/list-view-sidebar/index.js +1 -1
- package/src/components/mode-switcher/index.js +90 -0
- package/src/components/post-locked-modal/index.js +1 -1
- package/src/components/post-preview-button/index.js +1 -0
- package/src/components/post-publish-button/index.js +1 -0
- package/src/components/post-publish-panel/index.js +1 -1
- package/src/components/post-publish-panel/maybe-upload-media.js +1 -1
- package/src/components/post-publish-panel/test/__snapshots__/index.js.snap +3 -3
- package/src/components/post-taxonomies/hierarchical-term-selector.js +3 -0
- package/src/components/post-title/index.js +0 -3
- package/src/components/post-title/index.native.js +2 -2
- package/src/components/post-title/post-title-raw.js +1 -1
- package/src/components/post-view-link/index.js +1 -0
- package/src/components/provider/index.js +9 -0
- package/src/components/provider/index.native.js +7 -6
- package/src/components/provider/use-block-editor-settings.js +0 -3
- package/src/components/provider/use-hide-blocks-from-inserter.js +81 -0
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +95 -0
- package/src/store/selectors.js +12 -0
- package/src/store/test/actions.js +82 -0
|
@@ -59,8 +59,6 @@ const postTypeEntities = [
|
|
|
59
59
|
import { EditorHelpTopics, store as editorStore } from '@wordpress/editor';
|
|
60
60
|
import { store as noticesStore } from '@wordpress/notices';
|
|
61
61
|
import { store as coreStore } from '@wordpress/core-data';
|
|
62
|
-
// eslint-disable-next-line no-restricted-imports
|
|
63
|
-
import { store as editPostStore } from '@wordpress/edit-post';
|
|
64
62
|
|
|
65
63
|
/**
|
|
66
64
|
* Internal dependencies
|
|
@@ -392,8 +390,8 @@ const ComposedNativeProvider = compose( [
|
|
|
392
390
|
getEditedPostAttribute,
|
|
393
391
|
getEditedPostContent,
|
|
394
392
|
getEditorSettings,
|
|
393
|
+
getEditorMode,
|
|
395
394
|
} = select( editorStore );
|
|
396
|
-
const { getEditorMode } = select( editPostStore );
|
|
397
395
|
|
|
398
396
|
const { getBlockIndex, getSelectedBlockClientId, getGlobalBlockCount } =
|
|
399
397
|
select( blockEditorStore );
|
|
@@ -417,15 +415,18 @@ const ComposedNativeProvider = compose( [
|
|
|
417
415
|
};
|
|
418
416
|
} ),
|
|
419
417
|
withDispatch( ( dispatch ) => {
|
|
420
|
-
const {
|
|
421
|
-
|
|
418
|
+
const {
|
|
419
|
+
editPost,
|
|
420
|
+
resetEditorBlocks,
|
|
421
|
+
updateEditorSettings,
|
|
422
|
+
switchEditorMode,
|
|
423
|
+
} = dispatch( editorStore );
|
|
422
424
|
const {
|
|
423
425
|
clearSelectedBlock,
|
|
424
426
|
updateSettings,
|
|
425
427
|
insertBlock,
|
|
426
428
|
replaceBlock,
|
|
427
429
|
} = dispatch( blockEditorStore );
|
|
428
|
-
const { switchEditorMode } = dispatch( editPostStore );
|
|
429
430
|
const { addEntities, receiveEntityRecords } = dispatch( coreStore );
|
|
430
431
|
const { createSuccessNotice, createErrorNotice } =
|
|
431
432
|
dispatch( noticesStore );
|
|
@@ -29,7 +29,6 @@ const BLOCK_EDITOR_SETTINGS = [
|
|
|
29
29
|
'__experimentalDiscussionSettings',
|
|
30
30
|
'__experimentalFeatures',
|
|
31
31
|
'__experimentalGlobalStylesBaseStyles',
|
|
32
|
-
'__experimentalPreferredStyleVariations',
|
|
33
32
|
'__unstableGalleryWithImageBlocks',
|
|
34
33
|
'alignWide',
|
|
35
34
|
'blockInspectorTabs',
|
|
@@ -53,7 +52,6 @@ const BLOCK_EDITOR_SETTINGS = [
|
|
|
53
52
|
'gradients',
|
|
54
53
|
'generateAnchors',
|
|
55
54
|
'onNavigateToEntityRecord',
|
|
56
|
-
'hasInlineToolbar',
|
|
57
55
|
'imageDefaultSize',
|
|
58
56
|
'imageDimensions',
|
|
59
57
|
'imageEditing',
|
|
@@ -61,7 +59,6 @@ const BLOCK_EDITOR_SETTINGS = [
|
|
|
61
59
|
'isRTL',
|
|
62
60
|
'locale',
|
|
63
61
|
'maxWidth',
|
|
64
|
-
'onUpdateDefaultBlockStyles',
|
|
65
62
|
'postContentAttributes',
|
|
66
63
|
'postsPerPage',
|
|
67
64
|
'readOnly',
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useEffect } from '@wordpress/element';
|
|
5
|
+
import { addFilter, removeFilter } from '@wordpress/hooks';
|
|
6
|
+
|
|
7
|
+
// These post types are "structural" block lists.
|
|
8
|
+
// We should be allowed to use
|
|
9
|
+
// the post content and template parts blocks within them.
|
|
10
|
+
const POST_TYPES_ALLOWING_POST_CONTENT_TEMPLATE_PART = [
|
|
11
|
+
'wp_block',
|
|
12
|
+
'wp_template',
|
|
13
|
+
'wp_template_part',
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* In some specific contexts,
|
|
18
|
+
* the template part and post content blocks need to be hidden.
|
|
19
|
+
*
|
|
20
|
+
* @param {string} postType Post Type
|
|
21
|
+
*/
|
|
22
|
+
export function useHideBlocksFromInserter( postType ) {
|
|
23
|
+
useEffect( () => {
|
|
24
|
+
/*
|
|
25
|
+
* Prevent adding template part in the editor.
|
|
26
|
+
*/
|
|
27
|
+
addFilter(
|
|
28
|
+
'blockEditor.__unstableCanInsertBlockType',
|
|
29
|
+
'removeTemplatePartsFromInserter',
|
|
30
|
+
( canInsert, blockType ) => {
|
|
31
|
+
if (
|
|
32
|
+
! POST_TYPES_ALLOWING_POST_CONTENT_TEMPLATE_PART.includes(
|
|
33
|
+
postType
|
|
34
|
+
) &&
|
|
35
|
+
blockType.name === 'core/template-part'
|
|
36
|
+
) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return canInsert;
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
/*
|
|
44
|
+
* Prevent adding post content block (except in query block) in the editor.
|
|
45
|
+
*/
|
|
46
|
+
addFilter(
|
|
47
|
+
'blockEditor.__unstableCanInsertBlockType',
|
|
48
|
+
'removePostContentFromInserter',
|
|
49
|
+
(
|
|
50
|
+
canInsert,
|
|
51
|
+
blockType,
|
|
52
|
+
rootClientId,
|
|
53
|
+
{ getBlockParentsByBlockName }
|
|
54
|
+
) => {
|
|
55
|
+
if (
|
|
56
|
+
! POST_TYPES_ALLOWING_POST_CONTENT_TEMPLATE_PART.includes(
|
|
57
|
+
postType
|
|
58
|
+
) &&
|
|
59
|
+
blockType.name === 'core/post-content'
|
|
60
|
+
) {
|
|
61
|
+
return (
|
|
62
|
+
getBlockParentsByBlockName( rootClientId, 'core/query' )
|
|
63
|
+
.length > 0
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
return canInsert;
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
return () => {
|
|
71
|
+
removeFilter(
|
|
72
|
+
'blockEditor.__unstableCanInsertBlockType',
|
|
73
|
+
'removeTemplatePartsFromInserter'
|
|
74
|
+
);
|
|
75
|
+
removeFilter(
|
|
76
|
+
'blockEditor.__unstableCanInsertBlockType',
|
|
77
|
+
'removePostContentFromInserter'
|
|
78
|
+
);
|
|
79
|
+
};
|
|
80
|
+
}, [ postType ] );
|
|
81
|
+
}
|
package/src/private-apis.js
CHANGED
|
@@ -10,6 +10,7 @@ import useBlockEditorSettings from './components/provider/use-block-editor-setti
|
|
|
10
10
|
import DocumentTools from './components/document-tools';
|
|
11
11
|
import InserterSidebar from './components/inserter-sidebar';
|
|
12
12
|
import ListViewSidebar from './components/list-view-sidebar';
|
|
13
|
+
import ModeSwitcher from './components/mode-switcher';
|
|
13
14
|
import PluginPostExcerpt from './components/post-excerpt/plugin';
|
|
14
15
|
import PostPanelRow from './components/post-panel-row';
|
|
15
16
|
import PostViewLink from './components/post-view-link';
|
|
@@ -25,6 +26,7 @@ lock( privateApis, {
|
|
|
25
26
|
EntitiesSavedStatesExtensible,
|
|
26
27
|
InserterSidebar,
|
|
27
28
|
ListViewSidebar,
|
|
29
|
+
ModeSwitcher,
|
|
28
30
|
PluginPostExcerpt,
|
|
29
31
|
PostPanelRow,
|
|
30
32
|
PostViewLink,
|
package/src/store/actions.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
+
import { speak } from '@wordpress/a11y';
|
|
4
5
|
import apiFetch from '@wordpress/api-fetch';
|
|
5
6
|
import deprecated from '@wordpress/deprecated';
|
|
6
7
|
import {
|
|
@@ -13,6 +14,7 @@ import { store as coreStore } from '@wordpress/core-data';
|
|
|
13
14
|
import { store as blockEditorStore } from '@wordpress/block-editor';
|
|
14
15
|
import { applyFilters } from '@wordpress/hooks';
|
|
15
16
|
import { store as preferencesStore } from '@wordpress/preferences';
|
|
17
|
+
import { __ } from '@wordpress/i18n';
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
20
|
* Internal dependencies
|
|
@@ -725,6 +727,99 @@ export function setIsListViewOpened( isOpen ) {
|
|
|
725
727
|
};
|
|
726
728
|
}
|
|
727
729
|
|
|
730
|
+
/**
|
|
731
|
+
* Action that toggles Distraction free mode.
|
|
732
|
+
* Distraction free mode expects there are no sidebars, as due to the
|
|
733
|
+
* z-index values set, you can't close sidebars.
|
|
734
|
+
*/
|
|
735
|
+
export const toggleDistractionFree =
|
|
736
|
+
() =>
|
|
737
|
+
( { dispatch, registry } ) => {
|
|
738
|
+
const isDistractionFree = registry
|
|
739
|
+
.select( preferencesStore )
|
|
740
|
+
.get( 'core', 'distractionFree' );
|
|
741
|
+
if ( isDistractionFree ) {
|
|
742
|
+
registry
|
|
743
|
+
.dispatch( preferencesStore )
|
|
744
|
+
.set( 'core', 'fixedToolbar', false );
|
|
745
|
+
}
|
|
746
|
+
if ( ! isDistractionFree ) {
|
|
747
|
+
registry.batch( () => {
|
|
748
|
+
registry
|
|
749
|
+
.dispatch( preferencesStore )
|
|
750
|
+
.set( 'core', 'fixedToolbar', true );
|
|
751
|
+
dispatch.setIsInserterOpened( false );
|
|
752
|
+
dispatch.setIsListViewOpened( false );
|
|
753
|
+
} );
|
|
754
|
+
}
|
|
755
|
+
registry.batch( () => {
|
|
756
|
+
registry
|
|
757
|
+
.dispatch( preferencesStore )
|
|
758
|
+
.set( 'core', 'distractionFree', ! isDistractionFree );
|
|
759
|
+
registry
|
|
760
|
+
.dispatch( noticesStore )
|
|
761
|
+
.createInfoNotice(
|
|
762
|
+
isDistractionFree
|
|
763
|
+
? __( 'Distraction free off.' )
|
|
764
|
+
: __( 'Distraction free on.' ),
|
|
765
|
+
{
|
|
766
|
+
id: 'core/editor/distraction-free-mode/notice',
|
|
767
|
+
type: 'snackbar',
|
|
768
|
+
actions: [
|
|
769
|
+
{
|
|
770
|
+
label: __( 'Undo' ),
|
|
771
|
+
onClick: () => {
|
|
772
|
+
registry.batch( () => {
|
|
773
|
+
registry
|
|
774
|
+
.dispatch( preferencesStore )
|
|
775
|
+
.set(
|
|
776
|
+
'core',
|
|
777
|
+
'fixedToolbar',
|
|
778
|
+
isDistractionFree ? true : false
|
|
779
|
+
);
|
|
780
|
+
registry
|
|
781
|
+
.dispatch( preferencesStore )
|
|
782
|
+
.toggle(
|
|
783
|
+
'core',
|
|
784
|
+
'distractionFree'
|
|
785
|
+
);
|
|
786
|
+
} );
|
|
787
|
+
},
|
|
788
|
+
},
|
|
789
|
+
],
|
|
790
|
+
}
|
|
791
|
+
);
|
|
792
|
+
} );
|
|
793
|
+
};
|
|
794
|
+
|
|
795
|
+
/**
|
|
796
|
+
* Triggers an action used to switch editor mode.
|
|
797
|
+
*
|
|
798
|
+
* @param {string} mode The editor mode.
|
|
799
|
+
*/
|
|
800
|
+
export const switchEditorMode =
|
|
801
|
+
( mode ) =>
|
|
802
|
+
( { dispatch, registry } ) => {
|
|
803
|
+
registry.dispatch( preferencesStore ).set( 'core', 'editorMode', mode );
|
|
804
|
+
|
|
805
|
+
// Unselect blocks when we switch to a non visual mode.
|
|
806
|
+
if ( mode !== 'visual' ) {
|
|
807
|
+
registry.dispatch( blockEditorStore ).clearSelectedBlock();
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
if ( mode === 'visual' ) {
|
|
811
|
+
speak( __( 'Visual editor selected' ), 'assertive' );
|
|
812
|
+
} else if ( mode === 'text' ) {
|
|
813
|
+
const isDistractionFree = registry
|
|
814
|
+
.select( preferencesStore )
|
|
815
|
+
.get( 'core', 'distractionFree' );
|
|
816
|
+
if ( isDistractionFree ) {
|
|
817
|
+
dispatch.toggleDistractionFree();
|
|
818
|
+
}
|
|
819
|
+
speak( __( 'Code editor selected' ), 'assertive' );
|
|
820
|
+
}
|
|
821
|
+
};
|
|
822
|
+
|
|
728
823
|
/**
|
|
729
824
|
* Backward compatibility
|
|
730
825
|
*/
|
package/src/store/selectors.js
CHANGED
|
@@ -1313,6 +1313,18 @@ export function isInserterOpened( state ) {
|
|
|
1313
1313
|
return !! state.blockInserterPanel;
|
|
1314
1314
|
}
|
|
1315
1315
|
|
|
1316
|
+
/**
|
|
1317
|
+
* Returns the current editing mode.
|
|
1318
|
+
*
|
|
1319
|
+
* @param {Object} state Global application state.
|
|
1320
|
+
*
|
|
1321
|
+
* @return {string} Editing mode.
|
|
1322
|
+
*/
|
|
1323
|
+
export const getEditorMode = createRegistrySelector(
|
|
1324
|
+
( select ) => () =>
|
|
1325
|
+
select( preferencesStore ).get( 'core', 'editorMode' ) ?? 'visual'
|
|
1326
|
+
);
|
|
1327
|
+
|
|
1316
1328
|
/*
|
|
1317
1329
|
* Backward compatibility
|
|
1318
1330
|
*/
|
|
@@ -488,4 +488,86 @@ describe( 'Editor actions', () => {
|
|
|
488
488
|
).toBe( false );
|
|
489
489
|
} );
|
|
490
490
|
} );
|
|
491
|
+
|
|
492
|
+
describe( 'switchEditorMode', () => {
|
|
493
|
+
let registry;
|
|
494
|
+
|
|
495
|
+
beforeEach( () => {
|
|
496
|
+
registry = createRegistryWithStores();
|
|
497
|
+
} );
|
|
498
|
+
|
|
499
|
+
it( 'to visual', () => {
|
|
500
|
+
// Switch to text first, since the default is visual.
|
|
501
|
+
registry.dispatch( editorStore ).switchEditorMode( 'text' );
|
|
502
|
+
expect( registry.select( editorStore ).getEditorMode() ).toEqual(
|
|
503
|
+
'text'
|
|
504
|
+
);
|
|
505
|
+
registry.dispatch( editorStore ).switchEditorMode( 'visual' );
|
|
506
|
+
expect( registry.select( editorStore ).getEditorMode() ).toEqual(
|
|
507
|
+
'visual'
|
|
508
|
+
);
|
|
509
|
+
} );
|
|
510
|
+
|
|
511
|
+
it( 'to text', () => {
|
|
512
|
+
// It defaults to visual.
|
|
513
|
+
expect( registry.select( editorStore ).getEditorMode() ).toEqual(
|
|
514
|
+
'visual'
|
|
515
|
+
);
|
|
516
|
+
// Add a selected client id and make sure it's there.
|
|
517
|
+
const clientId = 'clientId_1';
|
|
518
|
+
registry.dispatch( blockEditorStore ).selectionChange( clientId );
|
|
519
|
+
expect(
|
|
520
|
+
registry.select( blockEditorStore ).getSelectedBlockClientId()
|
|
521
|
+
).toEqual( clientId );
|
|
522
|
+
|
|
523
|
+
registry.dispatch( editorStore ).switchEditorMode( 'text' );
|
|
524
|
+
expect(
|
|
525
|
+
registry.select( blockEditorStore ).getSelectedBlockClientId()
|
|
526
|
+
).toBeNull();
|
|
527
|
+
expect( registry.select( editorStore ).getEditorMode() ).toEqual(
|
|
528
|
+
'text'
|
|
529
|
+
);
|
|
530
|
+
} );
|
|
531
|
+
it( 'should turn off distraction free mode when switching to code editor', () => {
|
|
532
|
+
registry
|
|
533
|
+
.dispatch( preferencesStore )
|
|
534
|
+
.set( 'core', 'distractionFree', true );
|
|
535
|
+
registry.dispatch( editorStore ).switchEditorMode( 'text' );
|
|
536
|
+
expect(
|
|
537
|
+
registry
|
|
538
|
+
.select( preferencesStore )
|
|
539
|
+
.get( 'core', 'distractionFree' )
|
|
540
|
+
).toBe( false );
|
|
541
|
+
} );
|
|
542
|
+
} );
|
|
543
|
+
|
|
544
|
+
describe( 'toggleDistractionFree', () => {
|
|
545
|
+
it( 'should properly update settings to prevent layout corruption when enabling distraction free mode', () => {
|
|
546
|
+
const registry = createRegistryWithStores();
|
|
547
|
+
|
|
548
|
+
// Enable everything that shouldn't be enabled in distraction free mode.
|
|
549
|
+
registry
|
|
550
|
+
.dispatch( preferencesStore )
|
|
551
|
+
.set( 'core', 'fixedToolbar', true );
|
|
552
|
+
registry.dispatch( editorStore ).setIsListViewOpened( true );
|
|
553
|
+
// Initial state is falsy.
|
|
554
|
+
registry.dispatch( editorStore ).toggleDistractionFree();
|
|
555
|
+
expect(
|
|
556
|
+
registry
|
|
557
|
+
.select( preferencesStore )
|
|
558
|
+
.get( 'core', 'fixedToolbar' )
|
|
559
|
+
).toBe( true );
|
|
560
|
+
expect( registry.select( editorStore ).isListViewOpened() ).toBe(
|
|
561
|
+
false
|
|
562
|
+
);
|
|
563
|
+
expect( registry.select( editorStore ).isInserterOpened() ).toBe(
|
|
564
|
+
false
|
|
565
|
+
);
|
|
566
|
+
expect(
|
|
567
|
+
registry
|
|
568
|
+
.select( preferencesStore )
|
|
569
|
+
.get( 'core', 'distractionFree' )
|
|
570
|
+
).toBe( true );
|
|
571
|
+
} );
|
|
572
|
+
} );
|
|
491
573
|
} );
|