@wordpress/block-editor 15.13.2-next.v.202602241322.0 → 15.13.2
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/build/components/block-bindings/attribute-control.cjs +5 -2
- package/build/components/block-bindings/attribute-control.cjs.map +2 -2
- package/build/components/block-inspector/edit-contents.cjs +5 -4
- package/build/components/block-inspector/edit-contents.cjs.map +2 -2
- package/build/components/block-list/block-html.cjs +6 -2
- package/build/components/block-list/block-html.cjs.map +2 -2
- package/build/components/block-list/block.cjs +9 -1
- package/build/components/block-list/block.cjs.map +2 -2
- package/build/components/block-list/use-block-props/index.cjs +10 -1
- package/build/components/block-list/use-block-props/index.cjs.map +2 -2
- package/build/components/block-settings-menu-controls/index.cjs +1 -0
- package/build/components/block-settings-menu-controls/index.cjs.map +2 -2
- package/build/components/block-styles/index.cjs +7 -1
- package/build/components/block-styles/index.cjs.map +3 -3
- package/build/components/block-switcher/block-transformations-menu.cjs +2 -0
- package/build/components/block-switcher/block-transformations-menu.cjs.map +2 -2
- package/build/components/block-switcher/block-variation-transformations.cjs +2 -0
- package/build/components/block-switcher/block-variation-transformations.cjs.map +2 -2
- package/build/components/block-toolbar/block-toolbar-icon.cjs +1 -1
- package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
- package/build/components/block-toolbar/index.cjs +8 -4
- package/build/components/block-toolbar/index.cjs.map +2 -2
- package/build/components/block-tools/index.cjs +4 -3
- package/build/components/block-tools/index.cjs.map +2 -2
- package/build/components/block-variation-transforms/index.cjs +11 -5
- package/build/components/block-variation-transforms/index.cjs.map +2 -2
- package/build/components/block-visibility/modal.cjs +2 -2
- package/build/components/block-visibility/modal.cjs.map +1 -1
- package/build/components/block-visibility/use-block-visibility.cjs +4 -3
- package/build/components/block-visibility/use-block-visibility.cjs.map +2 -2
- package/build/components/block-visibility/viewport-visibility-info.cjs +6 -1
- package/build/components/block-visibility/viewport-visibility-info.cjs.map +2 -2
- package/build/components/dimensions-tool/scale-tool.cjs +2 -2
- package/build/components/dimensions-tool/scale-tool.cjs.map +2 -2
- package/build/components/iframe/index.cjs +1 -3
- package/build/components/iframe/index.cjs.map +2 -2
- package/build/components/iframe/use-scale-canvas.cjs +0 -1
- package/build/components/iframe/use-scale-canvas.cjs.map +2 -2
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +8 -4
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
- package/build/components/link-picker/link-preview.cjs +2 -1
- package/build/components/link-picker/link-preview.cjs.map +3 -3
- package/build/components/provider/index.cjs +23 -7
- package/build/components/provider/index.cjs.map +2 -2
- package/build/components/provider/use-media-upload-settings.cjs +1 -0
- package/build/components/provider/use-media-upload-settings.cjs.map +2 -2
- package/build/components/writing-flow/use-arrow-nav.cjs +1 -1
- package/build/components/writing-flow/use-arrow-nav.cjs.map +2 -2
- package/build/hooks/auto-inspector-controls.cjs +26 -2
- package/build/hooks/auto-inspector-controls.cjs.map +3 -3
- package/build/hooks/cross-origin-isolation.cjs +9 -75
- package/build/hooks/cross-origin-isolation.cjs.map +2 -2
- package/build/hooks/custom-css.cjs +26 -0
- package/build/hooks/custom-css.cjs.map +3 -3
- package/build/private-apis.cjs +1 -0
- package/build/private-apis.cjs.map +2 -2
- package/build/store/actions.cjs +0 -8
- package/build/store/actions.cjs.map +2 -2
- package/build/store/private-keys.cjs +3 -0
- package/build/store/private-keys.cjs.map +2 -2
- package/build/store/private-selectors.cjs +4 -3
- package/build/store/private-selectors.cjs.map +2 -2
- package/build/store/reducer.cjs +78 -74
- package/build/store/reducer.cjs.map +2 -2
- package/build/store/selectors.cjs +16 -14
- package/build/store/selectors.cjs.map +2 -2
- package/build-module/components/block-bindings/attribute-control.mjs +5 -2
- package/build-module/components/block-bindings/attribute-control.mjs.map +2 -2
- package/build-module/components/block-inspector/edit-contents.mjs +5 -4
- package/build-module/components/block-inspector/edit-contents.mjs.map +2 -2
- package/build-module/components/block-list/block-html.mjs +7 -3
- package/build-module/components/block-list/block-html.mjs.map +2 -2
- package/build-module/components/block-list/block.mjs +10 -2
- package/build-module/components/block-list/block.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/index.mjs +11 -2
- package/build-module/components/block-list/use-block-props/index.mjs.map +2 -2
- package/build-module/components/block-settings-menu-controls/index.mjs +1 -0
- package/build-module/components/block-settings-menu-controls/index.mjs.map +2 -2
- package/build-module/components/block-styles/index.mjs +7 -1
- package/build-module/components/block-styles/index.mjs.map +2 -2
- package/build-module/components/block-switcher/block-transformations-menu.mjs +2 -0
- package/build-module/components/block-switcher/block-transformations-menu.mjs.map +2 -2
- package/build-module/components/block-switcher/block-variation-transformations.mjs +2 -0
- package/build-module/components/block-switcher/block-variation-transformations.mjs.map +2 -2
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs +1 -1
- package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
- package/build-module/components/block-toolbar/index.mjs +8 -4
- package/build-module/components/block-toolbar/index.mjs.map +2 -2
- package/build-module/components/block-tools/index.mjs +4 -3
- package/build-module/components/block-tools/index.mjs.map +2 -2
- package/build-module/components/block-variation-transforms/index.mjs +11 -5
- package/build-module/components/block-variation-transforms/index.mjs.map +2 -2
- package/build-module/components/block-visibility/modal.mjs +2 -2
- package/build-module/components/block-visibility/modal.mjs.map +1 -1
- package/build-module/components/block-visibility/use-block-visibility.mjs +4 -3
- package/build-module/components/block-visibility/use-block-visibility.mjs.map +2 -2
- package/build-module/components/block-visibility/viewport-visibility-info.mjs +6 -1
- package/build-module/components/block-visibility/viewport-visibility-info.mjs.map +2 -2
- package/build-module/components/dimensions-tool/scale-tool.mjs +2 -2
- package/build-module/components/dimensions-tool/scale-tool.mjs.map +2 -2
- package/build-module/components/iframe/index.mjs +2 -9
- package/build-module/components/iframe/index.mjs.map +2 -2
- package/build-module/components/iframe/use-scale-canvas.mjs +0 -1
- package/build-module/components/iframe/use-scale-canvas.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +8 -4
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
- package/build-module/components/link-picker/link-preview.mjs +2 -1
- package/build-module/components/link-picker/link-preview.mjs.map +2 -2
- package/build-module/components/provider/index.mjs +23 -7
- package/build-module/components/provider/index.mjs.map +2 -2
- package/build-module/components/provider/use-media-upload-settings.mjs +1 -0
- package/build-module/components/provider/use-media-upload-settings.mjs.map +2 -2
- package/build-module/components/writing-flow/use-arrow-nav.mjs +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.mjs.map +2 -2
- package/build-module/hooks/auto-inspector-controls.mjs +28 -4
- package/build-module/hooks/auto-inspector-controls.mjs.map +2 -2
- package/build-module/hooks/cross-origin-isolation.mjs +9 -75
- package/build-module/hooks/cross-origin-isolation.mjs.map +2 -2
- package/build-module/hooks/custom-css.mjs +28 -2
- package/build-module/hooks/custom-css.mjs.map +2 -2
- package/build-module/private-apis.mjs +3 -1
- package/build-module/private-apis.mjs.map +2 -2
- package/build-module/store/actions.mjs +0 -8
- package/build-module/store/actions.mjs.map +2 -2
- package/build-module/store/private-keys.mjs +2 -0
- package/build-module/store/private-keys.mjs.map +2 -2
- package/build-module/store/private-selectors.mjs +4 -3
- package/build-module/store/private-selectors.mjs.map +2 -2
- package/build-module/store/reducer.mjs +78 -73
- package/build-module/store/reducer.mjs.map +2 -2
- package/build-module/store/selectors.mjs +16 -14
- package/build-module/store/selectors.mjs.map +2 -2
- package/build-style/content-rtl.css +25 -0
- package/build-style/content.css +25 -0
- package/build-style/style-rtl.css +3 -0
- package/build-style/style.css +3 -0
- package/package.json +39 -39
- package/src/components/block-bindings/attribute-control.js +8 -3
- package/src/components/block-inspector/edit-contents.js +5 -3
- package/src/components/block-list/block-html.js +13 -3
- package/src/components/block-list/block.js +10 -1
- package/src/components/block-list/content.scss +35 -0
- package/src/components/block-list/use-block-props/index.js +11 -1
- package/src/components/block-settings-menu-controls/index.js +1 -0
- package/src/components/block-styles/index.js +7 -1
- package/src/components/block-switcher/block-transformations-menu.js +2 -0
- package/src/components/block-switcher/block-variation-transformations.js +2 -0
- package/src/components/block-toolbar/block-toolbar-icon.js +6 -1
- package/src/components/block-toolbar/index.js +7 -2
- package/src/components/block-tools/index.js +11 -4
- package/src/components/block-tools/style.scss +5 -0
- package/src/components/block-variation-transforms/index.js +41 -36
- package/src/components/block-visibility/use-block-visibility.js +4 -2
- package/src/components/block-visibility/viewport-visibility-info.js +8 -1
- package/src/components/dimensions-tool/scale-tool.js +2 -2
- package/src/components/iframe/index.js +2 -12
- package/src/components/iframe/use-scale-canvas.js +0 -1
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +9 -5
- package/src/components/link-picker/link-preview.js +2 -1
- package/src/components/provider/index.js +49 -6
- package/src/components/provider/use-media-upload-settings.js +1 -0
- package/src/components/writing-flow/use-arrow-nav.js +9 -2
- package/src/hooks/auto-inspector-controls.js +31 -4
- package/src/hooks/cross-origin-isolation.js +10 -109
- package/src/hooks/custom-css.js +36 -2
- package/src/hooks/test/cross-origin-isolation.js +15 -42
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +0 -8
- package/src/store/private-keys.js +1 -0
- package/src/store/private-selectors.js +6 -3
- package/src/store/reducer.js +119 -97
- package/src/store/selectors.js +59 -22
- package/src/store/test/private-selectors.js +67 -34
- package/src/store/test/reducer.js +545 -57
- package/src/store/test/selectors.js +611 -53
|
@@ -5,6 +5,8 @@ import {
|
|
|
5
5
|
registerBlockType,
|
|
6
6
|
unregisterBlockType,
|
|
7
7
|
setFreeformContentHandlerName,
|
|
8
|
+
setDefaultBlockName,
|
|
9
|
+
getDefaultBlockName,
|
|
8
10
|
} from '@wordpress/blocks';
|
|
9
11
|
import { RawHTML } from '@wordpress/element';
|
|
10
12
|
import { symbol } from '@wordpress/icons';
|
|
@@ -16,6 +18,7 @@ import { select, dispatch } from '@wordpress/data';
|
|
|
16
18
|
import * as selectors from '../selectors';
|
|
17
19
|
import { store } from '../';
|
|
18
20
|
import { lock } from '../../lock-unlock';
|
|
21
|
+
import { sectionRootClientIdKey } from '../private-keys';
|
|
19
22
|
|
|
20
23
|
const {
|
|
21
24
|
getBlockName,
|
|
@@ -72,6 +75,8 @@ const {
|
|
|
72
75
|
wasBlockJustInserted,
|
|
73
76
|
getBlocksByName,
|
|
74
77
|
getBlockEditingMode,
|
|
78
|
+
canRemoveBlock,
|
|
79
|
+
canMoveBlock,
|
|
75
80
|
} = selectors;
|
|
76
81
|
|
|
77
82
|
describe( 'selectors', () => {
|
|
@@ -187,6 +192,20 @@ describe( 'selectors', () => {
|
|
|
187
192
|
ancestor: [ 'core/test-block-ancestor' ],
|
|
188
193
|
} );
|
|
189
194
|
|
|
195
|
+
registerBlockType( 'core/test-content-block', {
|
|
196
|
+
apiVersion: 3,
|
|
197
|
+
save: ( props ) => props.attributes.text,
|
|
198
|
+
category: 'text',
|
|
199
|
+
title: 'Test Content Block',
|
|
200
|
+
icon: 'test',
|
|
201
|
+
attributes: {
|
|
202
|
+
text: {
|
|
203
|
+
type: 'string',
|
|
204
|
+
role: 'content',
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
} );
|
|
208
|
+
|
|
190
209
|
setFreeformContentHandlerName( 'core/freeform' );
|
|
191
210
|
|
|
192
211
|
cachedSelectors.forEach( ( { clear } ) => clear() );
|
|
@@ -203,6 +222,7 @@ describe( 'selectors', () => {
|
|
|
203
222
|
unregisterBlockType( 'core/test-block-parent' );
|
|
204
223
|
unregisterBlockType( 'core/test-block-requires-ancestor' );
|
|
205
224
|
unregisterBlockType( 'core/test-block-requires-ancestor-parent' );
|
|
225
|
+
unregisterBlockType( 'core/test-content-block' );
|
|
206
226
|
|
|
207
227
|
setFreeformContentHandlerName( undefined );
|
|
208
228
|
} );
|
|
@@ -2678,10 +2698,10 @@ describe( 'selectors', () => {
|
|
|
2678
2698
|
attributes: new Map(),
|
|
2679
2699
|
order: new Map(),
|
|
2680
2700
|
parents: new Map(),
|
|
2701
|
+
blockEditingModes: new Map(),
|
|
2681
2702
|
},
|
|
2682
2703
|
blockListSettings: {},
|
|
2683
2704
|
settings: {},
|
|
2684
|
-
blockEditingModes: new Map(),
|
|
2685
2705
|
};
|
|
2686
2706
|
expect( canInsertBlockType( state, 'core/invalid' ) ).toBe( false );
|
|
2687
2707
|
} );
|
|
@@ -2693,12 +2713,12 @@ describe( 'selectors', () => {
|
|
|
2693
2713
|
attributes: new Map(),
|
|
2694
2714
|
order: new Map(),
|
|
2695
2715
|
parents: new Map(),
|
|
2716
|
+
blockEditingModes: new Map(),
|
|
2696
2717
|
},
|
|
2697
2718
|
blockListSettings: {},
|
|
2698
2719
|
settings: {
|
|
2699
2720
|
allowedBlockTypes: [],
|
|
2700
2721
|
},
|
|
2701
|
-
blockEditingModes: new Map(),
|
|
2702
2722
|
};
|
|
2703
2723
|
expect( canInsertBlockType( state, 'core/test-block-a' ) ).toBe(
|
|
2704
2724
|
false
|
|
@@ -2712,12 +2732,12 @@ describe( 'selectors', () => {
|
|
|
2712
2732
|
attributes: new Map(),
|
|
2713
2733
|
parents: new Map(),
|
|
2714
2734
|
order: new Map(),
|
|
2735
|
+
blockEditingModes: new Map(),
|
|
2715
2736
|
},
|
|
2716
2737
|
blockListSettings: {},
|
|
2717
2738
|
settings: {
|
|
2718
2739
|
allowedBlockTypes: [ 'core/test-block-a' ],
|
|
2719
2740
|
},
|
|
2720
|
-
blockEditingModes: new Map(),
|
|
2721
2741
|
};
|
|
2722
2742
|
expect( canInsertBlockType( state, 'core/test-block-a' ) ).toBe(
|
|
2723
2743
|
true
|
|
@@ -2731,12 +2751,12 @@ describe( 'selectors', () => {
|
|
|
2731
2751
|
attributes: new Map(),
|
|
2732
2752
|
order: new Map(),
|
|
2733
2753
|
parents: new Map(),
|
|
2754
|
+
blockEditingModes: new Map(),
|
|
2734
2755
|
},
|
|
2735
2756
|
blockListSettings: {},
|
|
2736
2757
|
settings: {
|
|
2737
2758
|
templateLock: 'all',
|
|
2738
2759
|
},
|
|
2739
|
-
blockEditingModes: new Map(),
|
|
2740
2760
|
};
|
|
2741
2761
|
expect( canInsertBlockType( state, 'core/test-block-a' ) ).toBe(
|
|
2742
2762
|
false
|
|
@@ -2750,14 +2770,14 @@ describe( 'selectors', () => {
|
|
|
2750
2770
|
attributes: new Map(),
|
|
2751
2771
|
parents: new Map(),
|
|
2752
2772
|
order: new Map(),
|
|
2773
|
+
blockEditingModes: new Map(
|
|
2774
|
+
Object.entries( {
|
|
2775
|
+
'': 'disabled',
|
|
2776
|
+
} )
|
|
2777
|
+
),
|
|
2753
2778
|
},
|
|
2754
2779
|
blockListSettings: {},
|
|
2755
2780
|
settings: {},
|
|
2756
|
-
blockEditingModes: new Map(
|
|
2757
|
-
Object.entries( {
|
|
2758
|
-
'': 'disabled',
|
|
2759
|
-
} )
|
|
2760
|
-
),
|
|
2761
2781
|
};
|
|
2762
2782
|
expect( canInsertBlockType( state, 'core/test-block-a' ) ).toBe(
|
|
2763
2783
|
false
|
|
@@ -2771,10 +2791,10 @@ describe( 'selectors', () => {
|
|
|
2771
2791
|
attributes: new Map(),
|
|
2772
2792
|
parents: new Map(),
|
|
2773
2793
|
order: new Map(),
|
|
2794
|
+
blockEditingModes: new Map(),
|
|
2774
2795
|
},
|
|
2775
2796
|
blockListSettings: {},
|
|
2776
2797
|
settings: {},
|
|
2777
|
-
blockEditingModes: new Map(),
|
|
2778
2798
|
};
|
|
2779
2799
|
expect( canInsertBlockType( state, 'core/test-block-c' ) ).toBe(
|
|
2780
2800
|
false
|
|
@@ -2796,10 +2816,10 @@ describe( 'selectors', () => {
|
|
|
2796
2816
|
),
|
|
2797
2817
|
parents: new Map(),
|
|
2798
2818
|
order: new Map(),
|
|
2819
|
+
blockEditingModes: new Map(),
|
|
2799
2820
|
},
|
|
2800
2821
|
blockListSettings: {},
|
|
2801
2822
|
settings: {},
|
|
2802
|
-
blockEditingModes: new Map(),
|
|
2803
2823
|
};
|
|
2804
2824
|
expect(
|
|
2805
2825
|
canInsertBlockType( state, 'core/test-block-c', 'block1' )
|
|
@@ -2821,12 +2841,12 @@ describe( 'selectors', () => {
|
|
|
2821
2841
|
),
|
|
2822
2842
|
parents: new Map(),
|
|
2823
2843
|
order: new Map(),
|
|
2844
|
+
blockEditingModes: new Map(),
|
|
2824
2845
|
},
|
|
2825
2846
|
blockListSettings: {
|
|
2826
2847
|
block1: {},
|
|
2827
2848
|
},
|
|
2828
2849
|
settings: {},
|
|
2829
|
-
blockEditingModes: new Map(),
|
|
2830
2850
|
};
|
|
2831
2851
|
expect(
|
|
2832
2852
|
canInsertBlockType( state, 'core/test-block-c', 'block1' )
|
|
@@ -2848,12 +2868,12 @@ describe( 'selectors', () => {
|
|
|
2848
2868
|
),
|
|
2849
2869
|
parents: new Map(),
|
|
2850
2870
|
order: new Map(),
|
|
2871
|
+
blockEditingModes: new Map(),
|
|
2851
2872
|
},
|
|
2852
2873
|
blockListSettings: {
|
|
2853
2874
|
block1: {},
|
|
2854
2875
|
},
|
|
2855
2876
|
settings: {},
|
|
2856
|
-
blockEditingModes: new Map(),
|
|
2857
2877
|
};
|
|
2858
2878
|
expect(
|
|
2859
2879
|
canInsertBlockType( state, 'core/test-block-c', 'block1' )
|
|
@@ -2875,6 +2895,7 @@ describe( 'selectors', () => {
|
|
|
2875
2895
|
),
|
|
2876
2896
|
parents: new Map(),
|
|
2877
2897
|
order: new Map(),
|
|
2898
|
+
blockEditingModes: new Map(),
|
|
2878
2899
|
},
|
|
2879
2900
|
blockListSettings: {
|
|
2880
2901
|
block1: {
|
|
@@ -2882,7 +2903,6 @@ describe( 'selectors', () => {
|
|
|
2882
2903
|
},
|
|
2883
2904
|
},
|
|
2884
2905
|
settings: {},
|
|
2885
|
-
blockEditingModes: new Map(),
|
|
2886
2906
|
};
|
|
2887
2907
|
expect(
|
|
2888
2908
|
canInsertBlockType( state, 'core/test-block-b', 'block1' )
|
|
@@ -2904,6 +2924,7 @@ describe( 'selectors', () => {
|
|
|
2904
2924
|
),
|
|
2905
2925
|
parents: new Map(),
|
|
2906
2926
|
order: new Map(),
|
|
2927
|
+
blockEditingModes: new Map(),
|
|
2907
2928
|
},
|
|
2908
2929
|
blockListSettings: {
|
|
2909
2930
|
block1: {
|
|
@@ -2911,7 +2932,6 @@ describe( 'selectors', () => {
|
|
|
2911
2932
|
},
|
|
2912
2933
|
},
|
|
2913
2934
|
settings: {},
|
|
2914
|
-
blockEditingModes: new Map(),
|
|
2915
2935
|
};
|
|
2916
2936
|
expect(
|
|
2917
2937
|
canInsertBlockType( state, 'core/test-block-b', 'block1' )
|
|
@@ -2933,14 +2953,14 @@ describe( 'selectors', () => {
|
|
|
2933
2953
|
),
|
|
2934
2954
|
parents: new Map(),
|
|
2935
2955
|
order: new Map(),
|
|
2956
|
+
blockEditingModes: new Map(
|
|
2957
|
+
Object.entries( {
|
|
2958
|
+
block1: 'disabled',
|
|
2959
|
+
} )
|
|
2960
|
+
),
|
|
2936
2961
|
},
|
|
2937
2962
|
blockListSettings: {},
|
|
2938
2963
|
settings: {},
|
|
2939
|
-
blockEditingModes: new Map(
|
|
2940
|
-
Object.entries( {
|
|
2941
|
-
block1: 'disabled',
|
|
2942
|
-
} )
|
|
2943
|
-
),
|
|
2944
2964
|
};
|
|
2945
2965
|
expect(
|
|
2946
2966
|
canInsertBlockType( state, 'core/test-block-b', 'block1' )
|
|
@@ -2962,6 +2982,7 @@ describe( 'selectors', () => {
|
|
|
2962
2982
|
),
|
|
2963
2983
|
parents: new Map(),
|
|
2964
2984
|
order: new Map(),
|
|
2985
|
+
blockEditingModes: new Map(),
|
|
2965
2986
|
},
|
|
2966
2987
|
blockListSettings: {
|
|
2967
2988
|
block1: {
|
|
@@ -2969,7 +2990,6 @@ describe( 'selectors', () => {
|
|
|
2969
2990
|
},
|
|
2970
2991
|
},
|
|
2971
2992
|
settings: {},
|
|
2972
|
-
blockEditingModes: new Map(),
|
|
2973
2993
|
};
|
|
2974
2994
|
expect(
|
|
2975
2995
|
canInsertBlockType( state, 'core/test-block-c', 'block1' )
|
|
@@ -2991,10 +3011,10 @@ describe( 'selectors', () => {
|
|
|
2991
3011
|
),
|
|
2992
3012
|
parents: new Map(),
|
|
2993
3013
|
order: new Map(),
|
|
3014
|
+
blockEditingModes: new Map(),
|
|
2994
3015
|
},
|
|
2995
3016
|
blockListSettings: {},
|
|
2996
3017
|
settings: {},
|
|
2997
|
-
blockEditingModes: new Map(),
|
|
2998
3018
|
};
|
|
2999
3019
|
expect(
|
|
3000
3020
|
canInsertBlockType( state, 'core/post-content-child', 'block1' )
|
|
@@ -3008,10 +3028,10 @@ describe( 'selectors', () => {
|
|
|
3008
3028
|
attributes: new Map(),
|
|
3009
3029
|
parents: new Map(),
|
|
3010
3030
|
order: new Map(),
|
|
3031
|
+
blockEditingModes: new Map(),
|
|
3011
3032
|
},
|
|
3012
3033
|
blockListSettings: {},
|
|
3013
3034
|
settings: {},
|
|
3014
|
-
blockEditingModes: new Map(),
|
|
3015
3035
|
};
|
|
3016
3036
|
expect(
|
|
3017
3037
|
canInsertBlockType( state, 'core/post-content-child' )
|
|
@@ -3042,13 +3062,13 @@ describe( 'selectors', () => {
|
|
|
3042
3062
|
[ '', [ 'block1' ] ],
|
|
3043
3063
|
[ 'block1', [ 'block2' ] ],
|
|
3044
3064
|
] ),
|
|
3065
|
+
blockEditingModes: new Map(),
|
|
3045
3066
|
},
|
|
3046
3067
|
blockListSettings: {
|
|
3047
3068
|
block1: {},
|
|
3048
3069
|
block2: {},
|
|
3049
3070
|
},
|
|
3050
3071
|
settings: {},
|
|
3051
|
-
blockEditingModes: new Map(),
|
|
3052
3072
|
};
|
|
3053
3073
|
expect(
|
|
3054
3074
|
canInsertBlockType(
|
|
@@ -3078,18 +3098,175 @@ describe( 'selectors', () => {
|
|
|
3078
3098
|
} )
|
|
3079
3099
|
),
|
|
3080
3100
|
order: new Map( [ [ '', [ 'block1' ] ] ] ),
|
|
3101
|
+
blockEditingModes: new Map(),
|
|
3081
3102
|
},
|
|
3082
3103
|
blockListSettings: {
|
|
3083
3104
|
block1: {},
|
|
3084
3105
|
},
|
|
3085
3106
|
settings: {},
|
|
3086
|
-
blockEditingModes: new Map(),
|
|
3087
3107
|
};
|
|
3088
3108
|
expect(
|
|
3089
3109
|
canInsertBlockType( state, 'core/test-block-a', 'block1' )
|
|
3090
3110
|
).toBe( false );
|
|
3091
3111
|
} );
|
|
3092
3112
|
|
|
3113
|
+
it( 'allows inserting blocks into a non-section contentOnly container', () => {
|
|
3114
|
+
// When the parent has contentOnly editing mode but is NOT
|
|
3115
|
+
// within a section hierarchy, the contentOnly insertion
|
|
3116
|
+
// restriction does not apply.
|
|
3117
|
+
const state = {
|
|
3118
|
+
blocks: {
|
|
3119
|
+
byClientId: new Map(
|
|
3120
|
+
Object.entries( {
|
|
3121
|
+
parent: { name: 'core/test-block-a' },
|
|
3122
|
+
child: { name: 'core/test-block-b' },
|
|
3123
|
+
} )
|
|
3124
|
+
),
|
|
3125
|
+
attributes: new Map(
|
|
3126
|
+
Object.entries( {
|
|
3127
|
+
parent: {},
|
|
3128
|
+
child: {},
|
|
3129
|
+
} )
|
|
3130
|
+
),
|
|
3131
|
+
parents: new Map(
|
|
3132
|
+
Object.entries( {
|
|
3133
|
+
parent: '',
|
|
3134
|
+
child: 'parent',
|
|
3135
|
+
} )
|
|
3136
|
+
),
|
|
3137
|
+
order: new Map( [
|
|
3138
|
+
[ '', [ 'parent' ] ],
|
|
3139
|
+
[ 'parent', [ 'child' ] ],
|
|
3140
|
+
] ),
|
|
3141
|
+
blockEditingModes: new Map(),
|
|
3142
|
+
},
|
|
3143
|
+
blockListSettings: {
|
|
3144
|
+
parent: {},
|
|
3145
|
+
},
|
|
3146
|
+
settings: {},
|
|
3147
|
+
derivedBlockEditingModes: new Map( [
|
|
3148
|
+
[ 'parent', 'contentOnly' ],
|
|
3149
|
+
] ),
|
|
3150
|
+
};
|
|
3151
|
+
expect(
|
|
3152
|
+
canInsertBlockType( state, 'core/test-block-b', 'parent' )
|
|
3153
|
+
).toBe( true );
|
|
3154
|
+
} );
|
|
3155
|
+
|
|
3156
|
+
it( 'prevents inserting content blocks into a non-insertable contentOnly container within a section', () => {
|
|
3157
|
+
// When a contentOnly container is inside a section and is not
|
|
3158
|
+
// the section root or a content-to-content match, the
|
|
3159
|
+
// contentOnly insertion restriction blocks it.
|
|
3160
|
+
const state = {
|
|
3161
|
+
blocks: {
|
|
3162
|
+
byClientId: new Map(
|
|
3163
|
+
Object.entries( {
|
|
3164
|
+
section: { name: 'core/test-block-b' },
|
|
3165
|
+
container: {
|
|
3166
|
+
name: 'core/test-block-a',
|
|
3167
|
+
},
|
|
3168
|
+
} )
|
|
3169
|
+
),
|
|
3170
|
+
attributes: new Map(
|
|
3171
|
+
Object.entries( {
|
|
3172
|
+
section: {
|
|
3173
|
+
// patternName makes this block a section.
|
|
3174
|
+
metadata: { patternName: 'test-pattern' },
|
|
3175
|
+
},
|
|
3176
|
+
container: {},
|
|
3177
|
+
} )
|
|
3178
|
+
),
|
|
3179
|
+
parents: new Map(
|
|
3180
|
+
Object.entries( {
|
|
3181
|
+
section: '',
|
|
3182
|
+
container: 'section',
|
|
3183
|
+
} )
|
|
3184
|
+
),
|
|
3185
|
+
order: new Map( [
|
|
3186
|
+
[ '', [ 'section' ] ],
|
|
3187
|
+
[ 'section', [ 'container' ] ],
|
|
3188
|
+
[ 'container', [] ],
|
|
3189
|
+
] ),
|
|
3190
|
+
blockEditingModes: new Map(),
|
|
3191
|
+
},
|
|
3192
|
+
blockListSettings: {
|
|
3193
|
+
section: {},
|
|
3194
|
+
container: {},
|
|
3195
|
+
},
|
|
3196
|
+
settings: {
|
|
3197
|
+
[ sectionRootClientIdKey ]: '',
|
|
3198
|
+
},
|
|
3199
|
+
derivedBlockEditingModes: new Map( [
|
|
3200
|
+
[ 'container', 'contentOnly' ],
|
|
3201
|
+
] ),
|
|
3202
|
+
};
|
|
3203
|
+
// A content block into a non-content container that is not the
|
|
3204
|
+
// section root is blocked by the contentOnly gating.
|
|
3205
|
+
expect(
|
|
3206
|
+
canInsertBlockType(
|
|
3207
|
+
state,
|
|
3208
|
+
'core/test-content-block',
|
|
3209
|
+
'container'
|
|
3210
|
+
)
|
|
3211
|
+
).toBe( false );
|
|
3212
|
+
} );
|
|
3213
|
+
|
|
3214
|
+
it( 'allows inserting content blocks into a content container within a section', () => {
|
|
3215
|
+
// When the container is a content block and the block being
|
|
3216
|
+
// inserted is also a content block, insertion is allowed
|
|
3217
|
+
// even within a section (content-to-content match).
|
|
3218
|
+
const state = {
|
|
3219
|
+
blocks: {
|
|
3220
|
+
byClientId: new Map(
|
|
3221
|
+
Object.entries( {
|
|
3222
|
+
section: { name: 'core/test-block-b' },
|
|
3223
|
+
container: {
|
|
3224
|
+
name: 'core/test-content-block',
|
|
3225
|
+
},
|
|
3226
|
+
} )
|
|
3227
|
+
),
|
|
3228
|
+
attributes: new Map(
|
|
3229
|
+
Object.entries( {
|
|
3230
|
+
section: {
|
|
3231
|
+
// patternName makes this block a section.
|
|
3232
|
+
metadata: { patternName: 'test-pattern' },
|
|
3233
|
+
},
|
|
3234
|
+
container: {},
|
|
3235
|
+
} )
|
|
3236
|
+
),
|
|
3237
|
+
parents: new Map(
|
|
3238
|
+
Object.entries( {
|
|
3239
|
+
section: '',
|
|
3240
|
+
container: 'section',
|
|
3241
|
+
} )
|
|
3242
|
+
),
|
|
3243
|
+
order: new Map( [
|
|
3244
|
+
[ '', [ 'section' ] ],
|
|
3245
|
+
[ 'section', [ 'container' ] ],
|
|
3246
|
+
[ 'container', [] ],
|
|
3247
|
+
] ),
|
|
3248
|
+
blockEditingModes: new Map(),
|
|
3249
|
+
},
|
|
3250
|
+
blockListSettings: {
|
|
3251
|
+
section: {},
|
|
3252
|
+
container: {},
|
|
3253
|
+
},
|
|
3254
|
+
settings: {
|
|
3255
|
+
[ sectionRootClientIdKey ]: '',
|
|
3256
|
+
},
|
|
3257
|
+
derivedBlockEditingModes: new Map( [
|
|
3258
|
+
[ 'container', 'contentOnly' ],
|
|
3259
|
+
] ),
|
|
3260
|
+
};
|
|
3261
|
+
expect(
|
|
3262
|
+
canInsertBlockType(
|
|
3263
|
+
state,
|
|
3264
|
+
'core/test-content-block',
|
|
3265
|
+
'container'
|
|
3266
|
+
)
|
|
3267
|
+
).toBe( true );
|
|
3268
|
+
} );
|
|
3269
|
+
|
|
3093
3270
|
it( 'should allow blocks to be inserted if both parent and ancestor restrictions are met', () => {
|
|
3094
3271
|
const state = {
|
|
3095
3272
|
blocks: {
|
|
@@ -3118,6 +3295,7 @@ describe( 'selectors', () => {
|
|
|
3118
3295
|
[ 'block1', [ 'block2' ] ],
|
|
3119
3296
|
[ 'block2', [ 'block3' ] ],
|
|
3120
3297
|
] ),
|
|
3298
|
+
blockEditingModes: new Map(),
|
|
3121
3299
|
},
|
|
3122
3300
|
blockListSettings: {
|
|
3123
3301
|
block1: {},
|
|
@@ -3125,7 +3303,6 @@ describe( 'selectors', () => {
|
|
|
3125
3303
|
block3: {},
|
|
3126
3304
|
},
|
|
3127
3305
|
settings: {},
|
|
3128
|
-
blockEditingModes: new Map(),
|
|
3129
3306
|
};
|
|
3130
3307
|
expect(
|
|
3131
3308
|
canInsertBlockType(
|
|
@@ -3163,6 +3340,7 @@ describe( 'selectors', () => {
|
|
|
3163
3340
|
[ 'block1', [ 'block2' ] ],
|
|
3164
3341
|
[ 'block2', [ 'block3' ] ],
|
|
3165
3342
|
] ),
|
|
3343
|
+
blockEditingModes: new Map(),
|
|
3166
3344
|
},
|
|
3167
3345
|
blockListSettings: {
|
|
3168
3346
|
block1: {},
|
|
@@ -3170,7 +3348,6 @@ describe( 'selectors', () => {
|
|
|
3170
3348
|
block3: {},
|
|
3171
3349
|
},
|
|
3172
3350
|
settings: {},
|
|
3173
|
-
blockEditingModes: new Map(),
|
|
3174
3351
|
};
|
|
3175
3352
|
expect(
|
|
3176
3353
|
canInsertBlockType(
|
|
@@ -3208,6 +3385,7 @@ describe( 'selectors', () => {
|
|
|
3208
3385
|
[ 'block1', [ 'block2' ] ],
|
|
3209
3386
|
[ 'block2', [ 'block3' ] ],
|
|
3210
3387
|
] ),
|
|
3388
|
+
blockEditingModes: new Map(),
|
|
3211
3389
|
},
|
|
3212
3390
|
blockListSettings: {
|
|
3213
3391
|
block1: {},
|
|
@@ -3215,7 +3393,6 @@ describe( 'selectors', () => {
|
|
|
3215
3393
|
block3: {},
|
|
3216
3394
|
},
|
|
3217
3395
|
settings: {},
|
|
3218
|
-
blockEditingModes: new Map(),
|
|
3219
3396
|
};
|
|
3220
3397
|
expect(
|
|
3221
3398
|
canInsertBlockType(
|
|
@@ -3249,6 +3426,7 @@ describe( 'selectors', () => {
|
|
|
3249
3426
|
[ 'block2', 'block1' ],
|
|
3250
3427
|
[ 'block1', '' ],
|
|
3251
3428
|
] ),
|
|
3429
|
+
blockEditingModes: new Map(),
|
|
3252
3430
|
},
|
|
3253
3431
|
blockListSettings: {
|
|
3254
3432
|
block1: {},
|
|
@@ -3257,7 +3435,6 @@ describe( 'selectors', () => {
|
|
|
3257
3435
|
},
|
|
3258
3436
|
},
|
|
3259
3437
|
settings: {},
|
|
3260
|
-
blockEditingModes: new Map(),
|
|
3261
3438
|
};
|
|
3262
3439
|
expect(
|
|
3263
3440
|
canInsertBlockType(
|
|
@@ -3292,13 +3469,13 @@ describe( 'selectors', () => {
|
|
|
3292
3469
|
[ '', [ 'block1' ] ],
|
|
3293
3470
|
[ 'block1', [ 'block2' ] ],
|
|
3294
3471
|
] ),
|
|
3472
|
+
blockEditingModes: new Map(),
|
|
3295
3473
|
},
|
|
3296
3474
|
blockListSettings: {
|
|
3297
3475
|
block1: {},
|
|
3298
3476
|
block2: {},
|
|
3299
3477
|
},
|
|
3300
3478
|
settings: {},
|
|
3301
|
-
blockEditingModes: new Map(),
|
|
3302
3479
|
};
|
|
3303
3480
|
expect(
|
|
3304
3481
|
canInsertBlockType(
|
|
@@ -3330,6 +3507,7 @@ describe( 'selectors', () => {
|
|
|
3330
3507
|
),
|
|
3331
3508
|
parents: new Map(),
|
|
3332
3509
|
order: new Map(),
|
|
3510
|
+
blockEditingModes: new Map(),
|
|
3333
3511
|
},
|
|
3334
3512
|
blockListSettings: {
|
|
3335
3513
|
1: {
|
|
@@ -3340,7 +3518,6 @@ describe( 'selectors', () => {
|
|
|
3340
3518
|
},
|
|
3341
3519
|
},
|
|
3342
3520
|
settings: {},
|
|
3343
|
-
blockEditingModes: new Map(),
|
|
3344
3521
|
};
|
|
3345
3522
|
expect( canInsertBlocks( state, [ '2' ], '1' ) ).toBe( true );
|
|
3346
3523
|
} );
|
|
@@ -3364,6 +3541,7 @@ describe( 'selectors', () => {
|
|
|
3364
3541
|
),
|
|
3365
3542
|
parents: new Map(),
|
|
3366
3543
|
order: new Map(),
|
|
3544
|
+
blockEditingModes: new Map(),
|
|
3367
3545
|
},
|
|
3368
3546
|
blockListSettings: {
|
|
3369
3547
|
1: {
|
|
@@ -3371,7 +3549,6 @@ describe( 'selectors', () => {
|
|
|
3371
3549
|
},
|
|
3372
3550
|
},
|
|
3373
3551
|
settings: {},
|
|
3374
|
-
blockEditingModes: new Map(),
|
|
3375
3552
|
};
|
|
3376
3553
|
expect( canInsertBlocks( state, [ '2', '3' ], '1' ) ).toBe( false );
|
|
3377
3554
|
} );
|
|
@@ -3499,6 +3676,7 @@ describe( 'selectors', () => {
|
|
|
3499
3676
|
'core/freeform',
|
|
3500
3677
|
'core/test-block-ancestor',
|
|
3501
3678
|
'core/test-block-parent',
|
|
3679
|
+
'core/test-content-block',
|
|
3502
3680
|
'core/block/1',
|
|
3503
3681
|
'core/block/2',
|
|
3504
3682
|
] );
|
|
@@ -3518,6 +3696,7 @@ describe( 'selectors', () => {
|
|
|
3518
3696
|
'core/freeform',
|
|
3519
3697
|
'core/test-block-ancestor',
|
|
3520
3698
|
'core/test-block-parent',
|
|
3699
|
+
'core/test-content-block',
|
|
3521
3700
|
'core/block/1',
|
|
3522
3701
|
'core/block/2',
|
|
3523
3702
|
] );
|
|
@@ -3641,11 +3820,11 @@ describe( 'selectors', () => {
|
|
|
3641
3820
|
order: new Map(),
|
|
3642
3821
|
parents: new Map(),
|
|
3643
3822
|
cache: {},
|
|
3823
|
+
blockEditingModes: new Map(),
|
|
3644
3824
|
},
|
|
3645
3825
|
settings: {},
|
|
3646
3826
|
preferences: {},
|
|
3647
3827
|
blockListSettings: {},
|
|
3648
|
-
blockEditingModes: new Map(),
|
|
3649
3828
|
};
|
|
3650
3829
|
const blocks = [ { name: 'core/with-tranforms-a' } ];
|
|
3651
3830
|
const items = getBlockTransformItems( state, blocks );
|
|
@@ -3682,11 +3861,11 @@ describe( 'selectors', () => {
|
|
|
3682
3861
|
order: new Map(),
|
|
3683
3862
|
parents: new Map(),
|
|
3684
3863
|
cache: {},
|
|
3864
|
+
blockEditingModes: new Map(),
|
|
3685
3865
|
},
|
|
3686
3866
|
settings: {},
|
|
3687
3867
|
preferences: {},
|
|
3688
3868
|
blockListSettings: {},
|
|
3689
|
-
blockEditingModes: new Map(),
|
|
3690
3869
|
};
|
|
3691
3870
|
const block = { name: 'core/with-tranforms-a' };
|
|
3692
3871
|
const items = getBlockTransformItems( state, block );
|
|
@@ -3716,6 +3895,7 @@ describe( 'selectors', () => {
|
|
|
3716
3895
|
),
|
|
3717
3896
|
cache: {},
|
|
3718
3897
|
controlledInnerBlocks: {},
|
|
3898
|
+
blockEditingModes: new Map(),
|
|
3719
3899
|
},
|
|
3720
3900
|
settings: {},
|
|
3721
3901
|
preferences: {},
|
|
@@ -3725,7 +3905,6 @@ describe( 'selectors', () => {
|
|
|
3725
3905
|
},
|
|
3726
3906
|
block2: {},
|
|
3727
3907
|
},
|
|
3728
|
-
blockEditingModes: new Map(),
|
|
3729
3908
|
};
|
|
3730
3909
|
const blocks = [
|
|
3731
3910
|
{ clientId: 'block2', name: 'core/with-tranforms-a' },
|
|
@@ -3767,13 +3946,13 @@ describe( 'selectors', () => {
|
|
|
3767
3946
|
),
|
|
3768
3947
|
controlledInnerBlocks: {},
|
|
3769
3948
|
parents: new Map(),
|
|
3949
|
+
blockEditingModes: new Map(),
|
|
3770
3950
|
},
|
|
3771
3951
|
preferences: {
|
|
3772
3952
|
insertUsage: {},
|
|
3773
3953
|
},
|
|
3774
3954
|
blockListSettings: {},
|
|
3775
3955
|
settings: {},
|
|
3776
|
-
blockEditingModes: new Map(),
|
|
3777
3956
|
};
|
|
3778
3957
|
const blocks = [ { name: 'core/with-tranforms-a' } ];
|
|
3779
3958
|
const items = getBlockTransformItems( state, blocks );
|
|
@@ -3799,6 +3978,7 @@ describe( 'selectors', () => {
|
|
|
3799
3978
|
order: new Map(),
|
|
3800
3979
|
parents: new Map(),
|
|
3801
3980
|
cache: {},
|
|
3981
|
+
blockEditingModes: new Map(),
|
|
3802
3982
|
},
|
|
3803
3983
|
preferences: {
|
|
3804
3984
|
insertUsage: {
|
|
@@ -3807,7 +3987,6 @@ describe( 'selectors', () => {
|
|
|
3807
3987
|
},
|
|
3808
3988
|
blockListSettings: {},
|
|
3809
3989
|
settings: {},
|
|
3810
|
-
blockEditingModes: new Map(),
|
|
3811
3990
|
};
|
|
3812
3991
|
const blocks = [ { name: 'core/with-tranforms-c' } ];
|
|
3813
3992
|
const items = getBlockTransformItems( state, blocks );
|
|
@@ -4267,6 +4446,367 @@ describe( 'selectors', () => {
|
|
|
4267
4446
|
).toBe( false );
|
|
4268
4447
|
} );
|
|
4269
4448
|
} );
|
|
4449
|
+
|
|
4450
|
+
describe( 'canRemoveBlock', () => {
|
|
4451
|
+
it( 'allows removal from a non-section contentOnly container', () => {
|
|
4452
|
+
// When the parent has contentOnly editing mode but is NOT
|
|
4453
|
+
// within a section, the contentOnly removal restriction
|
|
4454
|
+
// does not apply.
|
|
4455
|
+
const state = {
|
|
4456
|
+
blocks: {
|
|
4457
|
+
byClientId: new Map(
|
|
4458
|
+
Object.entries( {
|
|
4459
|
+
parent: { name: 'core/test-block-a' },
|
|
4460
|
+
child: { name: 'core/test-block-b' },
|
|
4461
|
+
} )
|
|
4462
|
+
),
|
|
4463
|
+
attributes: new Map(
|
|
4464
|
+
Object.entries( {
|
|
4465
|
+
parent: {},
|
|
4466
|
+
child: {},
|
|
4467
|
+
} )
|
|
4468
|
+
),
|
|
4469
|
+
parents: new Map(
|
|
4470
|
+
Object.entries( {
|
|
4471
|
+
parent: '',
|
|
4472
|
+
child: 'parent',
|
|
4473
|
+
} )
|
|
4474
|
+
),
|
|
4475
|
+
order: new Map( [
|
|
4476
|
+
[ '', [ 'parent' ] ],
|
|
4477
|
+
[ 'parent', [ 'child' ] ],
|
|
4478
|
+
] ),
|
|
4479
|
+
blockEditingModes: new Map(),
|
|
4480
|
+
},
|
|
4481
|
+
blockListSettings: {
|
|
4482
|
+
parent: {},
|
|
4483
|
+
},
|
|
4484
|
+
settings: {},
|
|
4485
|
+
derivedBlockEditingModes: new Map( [
|
|
4486
|
+
[ 'parent', 'contentOnly' ],
|
|
4487
|
+
] ),
|
|
4488
|
+
};
|
|
4489
|
+
expect( canRemoveBlock( state, 'child' ) ).toBe( true );
|
|
4490
|
+
} );
|
|
4491
|
+
|
|
4492
|
+
it( 'prevents removal from a contentOnly container within a section', () => {
|
|
4493
|
+
// When the parent is within a section and has contentOnly
|
|
4494
|
+
// editing mode, blocks in a non-insertable container
|
|
4495
|
+
// cannot be removed.
|
|
4496
|
+
const state = {
|
|
4497
|
+
blocks: {
|
|
4498
|
+
byClientId: new Map(
|
|
4499
|
+
Object.entries( {
|
|
4500
|
+
section: { name: 'core/test-block-b' },
|
|
4501
|
+
container: {
|
|
4502
|
+
name: 'core/test-block-a',
|
|
4503
|
+
},
|
|
4504
|
+
child: { name: 'core/test-content-block' },
|
|
4505
|
+
} )
|
|
4506
|
+
),
|
|
4507
|
+
attributes: new Map(
|
|
4508
|
+
Object.entries( {
|
|
4509
|
+
section: {
|
|
4510
|
+
// patternName makes this block a section.
|
|
4511
|
+
metadata: { patternName: 'test-pattern' },
|
|
4512
|
+
},
|
|
4513
|
+
container: {},
|
|
4514
|
+
child: {},
|
|
4515
|
+
} )
|
|
4516
|
+
),
|
|
4517
|
+
parents: new Map(
|
|
4518
|
+
Object.entries( {
|
|
4519
|
+
section: '',
|
|
4520
|
+
container: 'section',
|
|
4521
|
+
child: 'container',
|
|
4522
|
+
} )
|
|
4523
|
+
),
|
|
4524
|
+
order: new Map( [
|
|
4525
|
+
[ '', [ 'section' ] ],
|
|
4526
|
+
[ 'section', [ 'container' ] ],
|
|
4527
|
+
[ 'container', [ 'child' ] ],
|
|
4528
|
+
] ),
|
|
4529
|
+
blockEditingModes: new Map(),
|
|
4530
|
+
},
|
|
4531
|
+
blockListSettings: {
|
|
4532
|
+
section: {},
|
|
4533
|
+
container: {},
|
|
4534
|
+
},
|
|
4535
|
+
settings: {
|
|
4536
|
+
[ sectionRootClientIdKey ]: '',
|
|
4537
|
+
},
|
|
4538
|
+
derivedBlockEditingModes: new Map( [
|
|
4539
|
+
[ 'container', 'contentOnly' ],
|
|
4540
|
+
] ),
|
|
4541
|
+
};
|
|
4542
|
+
expect( canRemoveBlock( state, 'child' ) ).toBe( false );
|
|
4543
|
+
} );
|
|
4544
|
+
|
|
4545
|
+
it( 'allows removal of a content block from a content container within a section', () => {
|
|
4546
|
+
// When both the container and the child are content blocks,
|
|
4547
|
+
// the contentOnly gating allows removal
|
|
4548
|
+
// (content-to-content match).
|
|
4549
|
+
const state = {
|
|
4550
|
+
blocks: {
|
|
4551
|
+
byClientId: new Map(
|
|
4552
|
+
Object.entries( {
|
|
4553
|
+
section: { name: 'core/test-block-b' },
|
|
4554
|
+
container: {
|
|
4555
|
+
name: 'core/test-content-block',
|
|
4556
|
+
},
|
|
4557
|
+
child: { name: 'core/test-content-block' },
|
|
4558
|
+
} )
|
|
4559
|
+
),
|
|
4560
|
+
attributes: new Map(
|
|
4561
|
+
Object.entries( {
|
|
4562
|
+
section: {
|
|
4563
|
+
// patternName makes this block a section.
|
|
4564
|
+
metadata: { patternName: 'test-pattern' },
|
|
4565
|
+
},
|
|
4566
|
+
container: {},
|
|
4567
|
+
child: {},
|
|
4568
|
+
} )
|
|
4569
|
+
),
|
|
4570
|
+
parents: new Map(
|
|
4571
|
+
Object.entries( {
|
|
4572
|
+
section: '',
|
|
4573
|
+
container: 'section',
|
|
4574
|
+
child: 'container',
|
|
4575
|
+
} )
|
|
4576
|
+
),
|
|
4577
|
+
order: new Map( [
|
|
4578
|
+
[ '', [ 'section' ] ],
|
|
4579
|
+
[ 'section', [ 'container' ] ],
|
|
4580
|
+
[ 'container', [ 'child' ] ],
|
|
4581
|
+
] ),
|
|
4582
|
+
blockEditingModes: new Map(),
|
|
4583
|
+
},
|
|
4584
|
+
blockListSettings: {
|
|
4585
|
+
section: {},
|
|
4586
|
+
container: {},
|
|
4587
|
+
},
|
|
4588
|
+
settings: {
|
|
4589
|
+
[ sectionRootClientIdKey ]: '',
|
|
4590
|
+
},
|
|
4591
|
+
derivedBlockEditingModes: new Map( [
|
|
4592
|
+
[ 'container', 'contentOnly' ],
|
|
4593
|
+
] ),
|
|
4594
|
+
};
|
|
4595
|
+
expect( canRemoveBlock( state, 'child' ) ).toBe( true );
|
|
4596
|
+
} );
|
|
4597
|
+
|
|
4598
|
+
it( 'allows removing one of multiple default blocks in a contentOnly section container', () => {
|
|
4599
|
+
// When in contentOnly mode within a section, default blocks
|
|
4600
|
+
// can be removed as long as at least one other default block
|
|
4601
|
+
// remains.
|
|
4602
|
+
const previousDefaultBlockName = getDefaultBlockName();
|
|
4603
|
+
setDefaultBlockName( 'core/test-content-block' );
|
|
4604
|
+
const state = {
|
|
4605
|
+
blocks: {
|
|
4606
|
+
byClientId: new Map(
|
|
4607
|
+
Object.entries( {
|
|
4608
|
+
section: { name: 'core/test-block-b' },
|
|
4609
|
+
container: {
|
|
4610
|
+
name: 'core/test-block-a',
|
|
4611
|
+
},
|
|
4612
|
+
child1: {
|
|
4613
|
+
name: 'core/test-content-block',
|
|
4614
|
+
},
|
|
4615
|
+
child2: {
|
|
4616
|
+
name: 'core/test-content-block',
|
|
4617
|
+
},
|
|
4618
|
+
} )
|
|
4619
|
+
),
|
|
4620
|
+
attributes: new Map(
|
|
4621
|
+
Object.entries( {
|
|
4622
|
+
section: {
|
|
4623
|
+
// patternName makes this block a section.
|
|
4624
|
+
metadata: { patternName: 'test-pattern' },
|
|
4625
|
+
},
|
|
4626
|
+
container: {},
|
|
4627
|
+
child1: {},
|
|
4628
|
+
child2: {},
|
|
4629
|
+
} )
|
|
4630
|
+
),
|
|
4631
|
+
parents: new Map(
|
|
4632
|
+
Object.entries( {
|
|
4633
|
+
section: '',
|
|
4634
|
+
container: 'section',
|
|
4635
|
+
child1: 'container',
|
|
4636
|
+
child2: 'container',
|
|
4637
|
+
} )
|
|
4638
|
+
),
|
|
4639
|
+
order: new Map( [
|
|
4640
|
+
[ '', [ 'section' ] ],
|
|
4641
|
+
[ 'section', [ 'container' ] ],
|
|
4642
|
+
[ 'container', [ 'child1', 'child2' ] ],
|
|
4643
|
+
] ),
|
|
4644
|
+
blockEditingModes: new Map(),
|
|
4645
|
+
},
|
|
4646
|
+
blockListSettings: {
|
|
4647
|
+
section: {},
|
|
4648
|
+
container: {},
|
|
4649
|
+
},
|
|
4650
|
+
settings: {
|
|
4651
|
+
[ sectionRootClientIdKey ]: '',
|
|
4652
|
+
},
|
|
4653
|
+
derivedBlockEditingModes: new Map( [
|
|
4654
|
+
[ 'container', 'contentOnly' ],
|
|
4655
|
+
] ),
|
|
4656
|
+
};
|
|
4657
|
+
expect( canRemoveBlock( state, 'child1' ) ).toBe( true );
|
|
4658
|
+
setDefaultBlockName( previousDefaultBlockName );
|
|
4659
|
+
} );
|
|
4660
|
+
} );
|
|
4661
|
+
|
|
4662
|
+
describe( 'canMoveBlock', () => {
|
|
4663
|
+
it( 'allows moving within a non-section contentOnly container', () => {
|
|
4664
|
+
// When the parent has contentOnly editing mode but is NOT
|
|
4665
|
+
// within a section, the contentOnly move restriction does
|
|
4666
|
+
// not apply.
|
|
4667
|
+
const state = {
|
|
4668
|
+
blocks: {
|
|
4669
|
+
byClientId: new Map(
|
|
4670
|
+
Object.entries( {
|
|
4671
|
+
parent: { name: 'core/test-block-a' },
|
|
4672
|
+
child: { name: 'core/test-block-b' },
|
|
4673
|
+
} )
|
|
4674
|
+
),
|
|
4675
|
+
attributes: new Map(
|
|
4676
|
+
Object.entries( {
|
|
4677
|
+
parent: {},
|
|
4678
|
+
child: {},
|
|
4679
|
+
} )
|
|
4680
|
+
),
|
|
4681
|
+
parents: new Map(
|
|
4682
|
+
Object.entries( {
|
|
4683
|
+
parent: '',
|
|
4684
|
+
child: 'parent',
|
|
4685
|
+
} )
|
|
4686
|
+
),
|
|
4687
|
+
order: new Map( [
|
|
4688
|
+
[ '', [ 'parent' ] ],
|
|
4689
|
+
[ 'parent', [ 'child' ] ],
|
|
4690
|
+
] ),
|
|
4691
|
+
blockEditingModes: new Map(),
|
|
4692
|
+
},
|
|
4693
|
+
blockListSettings: {
|
|
4694
|
+
parent: {},
|
|
4695
|
+
},
|
|
4696
|
+
settings: {},
|
|
4697
|
+
derivedBlockEditingModes: new Map( [
|
|
4698
|
+
[ 'parent', 'contentOnly' ],
|
|
4699
|
+
] ),
|
|
4700
|
+
};
|
|
4701
|
+
expect( canMoveBlock( state, 'child' ) ).toBe( true );
|
|
4702
|
+
} );
|
|
4703
|
+
|
|
4704
|
+
it( 'prevents moving within a contentOnly container inside a section', () => {
|
|
4705
|
+
// When the parent is within a section and has contentOnly
|
|
4706
|
+
// editing mode, blocks in a non-insertable container
|
|
4707
|
+
// cannot be moved.
|
|
4708
|
+
const state = {
|
|
4709
|
+
blocks: {
|
|
4710
|
+
byClientId: new Map(
|
|
4711
|
+
Object.entries( {
|
|
4712
|
+
section: { name: 'core/test-block-b' },
|
|
4713
|
+
container: {
|
|
4714
|
+
name: 'core/test-block-a',
|
|
4715
|
+
},
|
|
4716
|
+
child: { name: 'core/test-content-block' },
|
|
4717
|
+
} )
|
|
4718
|
+
),
|
|
4719
|
+
attributes: new Map(
|
|
4720
|
+
Object.entries( {
|
|
4721
|
+
section: {
|
|
4722
|
+
// patternName makes this block a section.
|
|
4723
|
+
metadata: { patternName: 'test-pattern' },
|
|
4724
|
+
},
|
|
4725
|
+
container: {},
|
|
4726
|
+
child: {},
|
|
4727
|
+
} )
|
|
4728
|
+
),
|
|
4729
|
+
parents: new Map(
|
|
4730
|
+
Object.entries( {
|
|
4731
|
+
section: '',
|
|
4732
|
+
container: 'section',
|
|
4733
|
+
child: 'container',
|
|
4734
|
+
} )
|
|
4735
|
+
),
|
|
4736
|
+
order: new Map( [
|
|
4737
|
+
[ '', [ 'section' ] ],
|
|
4738
|
+
[ 'section', [ 'container' ] ],
|
|
4739
|
+
[ 'container', [ 'child' ] ],
|
|
4740
|
+
] ),
|
|
4741
|
+
blockEditingModes: new Map(),
|
|
4742
|
+
},
|
|
4743
|
+
blockListSettings: {
|
|
4744
|
+
section: {},
|
|
4745
|
+
container: {},
|
|
4746
|
+
},
|
|
4747
|
+
settings: {
|
|
4748
|
+
[ sectionRootClientIdKey ]: '',
|
|
4749
|
+
},
|
|
4750
|
+
derivedBlockEditingModes: new Map( [
|
|
4751
|
+
[ 'container', 'contentOnly' ],
|
|
4752
|
+
] ),
|
|
4753
|
+
};
|
|
4754
|
+
expect( canMoveBlock( state, 'child' ) ).toBe( false );
|
|
4755
|
+
} );
|
|
4756
|
+
|
|
4757
|
+
it( 'allows moving a content block within a content container inside a section', () => {
|
|
4758
|
+
// When both the container and the child are content blocks,
|
|
4759
|
+
// the contentOnly gating allows moving
|
|
4760
|
+
// (content-to-content match).
|
|
4761
|
+
const state = {
|
|
4762
|
+
blocks: {
|
|
4763
|
+
byClientId: new Map(
|
|
4764
|
+
Object.entries( {
|
|
4765
|
+
section: { name: 'core/test-block-b' },
|
|
4766
|
+
container: {
|
|
4767
|
+
name: 'core/test-content-block',
|
|
4768
|
+
},
|
|
4769
|
+
child: { name: 'core/test-content-block' },
|
|
4770
|
+
} )
|
|
4771
|
+
),
|
|
4772
|
+
attributes: new Map(
|
|
4773
|
+
Object.entries( {
|
|
4774
|
+
section: {
|
|
4775
|
+
// patternName makes this block a section.
|
|
4776
|
+
metadata: { patternName: 'test-pattern' },
|
|
4777
|
+
},
|
|
4778
|
+
container: {},
|
|
4779
|
+
child: {},
|
|
4780
|
+
} )
|
|
4781
|
+
),
|
|
4782
|
+
parents: new Map(
|
|
4783
|
+
Object.entries( {
|
|
4784
|
+
section: '',
|
|
4785
|
+
container: 'section',
|
|
4786
|
+
child: 'container',
|
|
4787
|
+
} )
|
|
4788
|
+
),
|
|
4789
|
+
order: new Map( [
|
|
4790
|
+
[ '', [ 'section' ] ],
|
|
4791
|
+
[ 'section', [ 'container' ] ],
|
|
4792
|
+
[ 'container', [ 'child' ] ],
|
|
4793
|
+
] ),
|
|
4794
|
+
blockEditingModes: new Map(),
|
|
4795
|
+
},
|
|
4796
|
+
blockListSettings: {
|
|
4797
|
+
section: {},
|
|
4798
|
+
container: {},
|
|
4799
|
+
},
|
|
4800
|
+
settings: {
|
|
4801
|
+
[ sectionRootClientIdKey ]: '',
|
|
4802
|
+
},
|
|
4803
|
+
derivedBlockEditingModes: new Map( [
|
|
4804
|
+
[ 'container', 'contentOnly' ],
|
|
4805
|
+
] ),
|
|
4806
|
+
};
|
|
4807
|
+
expect( canMoveBlock( state, 'child' ) ).toBe( true );
|
|
4808
|
+
} );
|
|
4809
|
+
} );
|
|
4270
4810
|
} );
|
|
4271
4811
|
|
|
4272
4812
|
describe( 'getInserterItems with core blocks prioritization', () => {
|
|
@@ -4432,7 +4972,9 @@ describe( '__unstableGetClientIdsTree', () => {
|
|
|
4432
4972
|
|
|
4433
4973
|
describe( 'getBlockEditingMode', () => {
|
|
4434
4974
|
const baseState = {
|
|
4435
|
-
|
|
4975
|
+
blocks: {
|
|
4976
|
+
blockEditingModes: new Map( [] ),
|
|
4977
|
+
},
|
|
4436
4978
|
derivedBlockEditingModes: new Map( [] ),
|
|
4437
4979
|
};
|
|
4438
4980
|
|
|
@@ -4461,9 +5003,11 @@ describe( 'getBlockEditingMode', () => {
|
|
|
4461
5003
|
it( 'should return disabled if explicitly set', () => {
|
|
4462
5004
|
const state = {
|
|
4463
5005
|
...baseState,
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
|
|
5006
|
+
blocks: {
|
|
5007
|
+
blockEditingModes: new Map( [
|
|
5008
|
+
[ 'b3247f75-fd94-4fef-97f9-5bfd162cc416', 'disabled' ],
|
|
5009
|
+
] ),
|
|
5010
|
+
},
|
|
4467
5011
|
};
|
|
4468
5012
|
expect(
|
|
4469
5013
|
getBlockEditingMode( state, 'b3247f75-fd94-4fef-97f9-5bfd162cc416' )
|
|
@@ -4473,9 +5017,11 @@ describe( 'getBlockEditingMode', () => {
|
|
|
4473
5017
|
it( 'should return contentOnly if explicitly set', () => {
|
|
4474
5018
|
const state = {
|
|
4475
5019
|
...baseState,
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
5020
|
+
blocks: {
|
|
5021
|
+
blockEditingModes: new Map( [
|
|
5022
|
+
[ 'b3247f75-fd94-4fef-97f9-5bfd162cc416', 'contentOnly' ],
|
|
5023
|
+
] ),
|
|
5024
|
+
},
|
|
4479
5025
|
};
|
|
4480
5026
|
expect(
|
|
4481
5027
|
getBlockEditingMode( state, 'b3247f75-fd94-4fef-97f9-5bfd162cc416' )
|
|
@@ -4486,9 +5032,14 @@ describe( 'getBlockEditingMode', () => {
|
|
|
4486
5032
|
it( 'should return default if explicitly set', () => {
|
|
4487
5033
|
const state = {
|
|
4488
5034
|
...baseState,
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
5035
|
+
blocks: {
|
|
5036
|
+
blockEditingModes: new Map( [
|
|
5037
|
+
[
|
|
5038
|
+
'b3247f75-fd94-4fef-97f9-5bfd162cc416',
|
|
5039
|
+
'contentOnly',
|
|
5040
|
+
],
|
|
5041
|
+
] ),
|
|
5042
|
+
},
|
|
4492
5043
|
derivedBlockEditingModes: new Map( [
|
|
4493
5044
|
[ 'b3247f75-fd94-4fef-97f9-5bfd162cc416', 'default' ],
|
|
4494
5045
|
] ),
|
|
@@ -4504,9 +5055,14 @@ describe( 'getBlockEditingMode', () => {
|
|
|
4504
5055
|
it( 'should return disabled if explicitly set', () => {
|
|
4505
5056
|
const state = {
|
|
4506
5057
|
...baseState,
|
|
4507
|
-
|
|
4508
|
-
|
|
4509
|
-
|
|
5058
|
+
blocks: {
|
|
5059
|
+
blockEditingModes: new Map( [
|
|
5060
|
+
[
|
|
5061
|
+
'b3247f75-fd94-4fef-97f9-5bfd162cc416',
|
|
5062
|
+
'contentOnly',
|
|
5063
|
+
],
|
|
5064
|
+
] ),
|
|
5065
|
+
},
|
|
4510
5066
|
derivedBlockEditingModes: new Map( [
|
|
4511
5067
|
[ 'b3247f75-fd94-4fef-97f9-5bfd162cc416', 'disabled' ],
|
|
4512
5068
|
] ),
|
|
@@ -4522,9 +5078,11 @@ describe( 'getBlockEditingMode', () => {
|
|
|
4522
5078
|
it( 'should return contentOnly if explicitly set', () => {
|
|
4523
5079
|
const state = {
|
|
4524
5080
|
...baseState,
|
|
4525
|
-
|
|
4526
|
-
|
|
4527
|
-
|
|
5081
|
+
blocks: {
|
|
5082
|
+
blockEditingModes: new Map( [
|
|
5083
|
+
[ 'b3247f75-fd94-4fef-97f9-5bfd162cc416', 'default' ],
|
|
5084
|
+
] ),
|
|
5085
|
+
},
|
|
4528
5086
|
derivedBlockEditingModes: new Map( [
|
|
4529
5087
|
[ 'b3247f75-fd94-4fef-97f9-5bfd162cc416', 'contentOnly' ],
|
|
4530
5088
|
] ),
|