Skip to content

Commit 1d3f350

Browse files
authored
🤖 Merge PR DefinitelyTyped#74594 [@wordpress/block-editor] Updating the Store object to match official maintainer commentary by @Toberumono
1 parent beb472c commit 1d3f350

File tree

2 files changed

+167
-34
lines changed

2 files changed

+167
-34
lines changed

‎types/wordpress__block-editor/index.d.ts‎

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { BlockIconNormalized } from "@wordpress/blocks";
2-
import { dispatch, select, StoreDescriptor } from "@wordpress/data";
2+
import { ReduxStoreConfig, StoreDescriptor } from "@wordpress/data";
33

44
export * from "./components";
55
export * from "./hooks";
@@ -8,14 +8,27 @@ export { SETTINGS_DEFAULTS } from "./store/defaults";
88
export * from "./utils";
99

1010
declare module "@wordpress/data" {
11+
/**
12+
* @deprecated Use the version that takes a store descriptor object instead
13+
*/
1114
function dispatch(key: "core/block-editor"): typeof import("./store/actions");
15+
/**
16+
* @deprecated Use the version that takes a store descriptor object instead
17+
*/
1218
function select(key: "core/block-editor"): typeof import("./store/selectors");
1319

1420
function useDispatch(key: "core/block-editor"): typeof import("./store/actions");
1521
function useSelect(key: "core/block-editor"): typeof import("./store/selectors");
1622
}
1723

18-
export interface BlockEditorStoreDescriptor extends StoreDescriptor {
24+
type Decurry<S extends { [key: string]: (...args: any[]) => any }> = {
25+
[key in keyof S]: (state: any, ...args: Parameters<S[key]>) => ReturnType<S[key]>;
26+
};
27+
export interface BlockEditorStoreDescriptor extends
28+
StoreDescriptor<
29+
ReduxStoreConfig<any, typeof import("./store/actions"), Decurry<typeof import("./store/selectors")>>
30+
>
31+
{
1932
name: "core/block-editor";
2033
}
2134

‎types/wordpress__block-editor/wordpress__block-editor-tests.tsx‎

Lines changed: 152 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -600,41 +600,161 @@ for (const dispatchOrUseDispatch of [dispatch, useDispatch]) {
600600
});
601601
}
602602

603-
// $ExpectType boolean
604-
select("core/block-editor").canInsertBlockType("core/paragraph");
605-
select("core/block-editor").canInsertBlockType("core/paragraph", "foo");
606-
607-
// $ExpectType boolean
608-
useSelect("core/block-editor").canInsertBlockType("core/paragraph");
609-
useSelect("core/block-editor").canInsertBlockType("core/paragraph", "foo");
610-
611-
// $ExpectType string | null
612-
select("core/block-editor").getAdjacentBlockClientId();
613-
select("core/block-editor").getAdjacentBlockClientId("foo");
614-
select("core/block-editor").getAdjacentBlockClientId("foo", -1);
615-
select("core/block-editor").getAdjacentBlockClientId("foo", 1);
616-
617-
// $ExpectType string | null
618-
useSelect("core/block-editor").getAdjacentBlockClientId();
619-
useSelect("core/block-editor").getAdjacentBlockClientId("foo");
620-
useSelect("core/block-editor").getAdjacentBlockClientId("foo", -1);
621-
useSelect("core/block-editor").getAdjacentBlockClientId("foo", 1);
603+
for (const dispatchOrUseDispatch of [dispatch, useDispatch]) {
604+
// $ExpectType Promise<void>
605+
dispatchOrUseDispatch(be.store).insertBlock(BLOCK_INSTANCE);
606+
dispatchOrUseDispatch(be.store).insertBlock(BLOCK_INSTANCE, 4);
607+
dispatchOrUseDispatch(be.store).insertBlock(BLOCK_INSTANCE, 4, "foo");
608+
dispatchOrUseDispatch(be.store).insertBlock(BLOCK_INSTANCE, 4, "foo", false);
609+
610+
// $ExpectType Promise<IterableIterator<void>>
611+
dispatchOrUseDispatch(be.store).insertBlocks([BLOCK_INSTANCE]);
612+
dispatchOrUseDispatch(be.store).insertBlocks([BLOCK_INSTANCE], 5);
613+
dispatchOrUseDispatch(be.store).insertBlocks([BLOCK_INSTANCE], 5, "foo");
614+
dispatchOrUseDispatch(be.store).insertBlocks([BLOCK_INSTANCE], 5, "foo", false);
615+
616+
// $ExpectType Promise<void>
617+
dispatchOrUseDispatch(be.store).insertDefaultBlock();
618+
dispatchOrUseDispatch(be.store).insertDefaultBlock({ foo: "bar" });
619+
dispatchOrUseDispatch(be.store).insertDefaultBlock({ foo: "bar" }, "foo");
620+
dispatchOrUseDispatch(be.store).insertDefaultBlock({ foo: "bar" }, "foo", 5);
621+
622+
// $ExpectType Promise<void>
623+
dispatchOrUseDispatch(be.store).mergeBlocks("foo", "bar");
624+
625+
// $ExpectType Promise<void>
626+
dispatchOrUseDispatch(be.store).moveBlocksUp("foo", "bar");
627+
dispatchOrUseDispatch(be.store).moveBlocksUp(["foo", "baz"], "bar");
628+
629+
// $ExpectType Promise<IterableIterator<void>>
630+
dispatchOrUseDispatch(be.store).moveBlockToPosition("foo", "bar", "baz", 1);
631+
dispatchOrUseDispatch(be.store).moveBlockToPosition(undefined, "foo", undefined, 5);
632+
dispatchOrUseDispatch(be.store).moveBlockToPosition(undefined, undefined, undefined, 5);
633+
634+
// $ExpectType Promise<void>
635+
dispatchOrUseDispatch(be.store).multiSelect("foo", "bar");
636+
637+
// $ExpectType Promise<void>
638+
dispatchOrUseDispatch(be.store).receiveBlocks([BLOCK_INSTANCE]);
639+
640+
// $ExpectType Promise<void>
641+
dispatchOrUseDispatch(be.store).removeBlock("foo");
642+
dispatchOrUseDispatch(be.store).removeBlock("foo", true);
643+
644+
// $ExpectType Promise<IterableIterator<void>>
645+
dispatchOrUseDispatch(be.store).removeBlocks("foo");
646+
dispatchOrUseDispatch(be.store).removeBlocks("foo", false);
647+
dispatchOrUseDispatch(be.store).removeBlocks(["foo"]);
648+
dispatchOrUseDispatch(be.store).removeBlocks(["foo"], false);
649+
650+
// $ExpectType Promise<void>
651+
dispatchOrUseDispatch(be.store).replaceBlock("foo", BLOCK_INSTANCE);
652+
dispatchOrUseDispatch(be.store).replaceBlock("foo", [BLOCK_INSTANCE]);
653+
dispatchOrUseDispatch(be.store).replaceBlock(["foo"], BLOCK_INSTANCE);
654+
dispatchOrUseDispatch(be.store).replaceBlock(["foo"], [BLOCK_INSTANCE]);
655+
656+
// $ExpectType Promise<IterableIterator<void>>
657+
dispatchOrUseDispatch(be.store).replaceBlocks("foo", BLOCK_INSTANCE);
658+
dispatchOrUseDispatch(be.store).replaceBlocks("foo", [BLOCK_INSTANCE], 3);
659+
dispatchOrUseDispatch(be.store).replaceBlocks(["foo"], BLOCK_INSTANCE);
660+
dispatchOrUseDispatch(be.store).replaceBlocks(["foo"], [BLOCK_INSTANCE], 0);
661+
662+
// $ExpectType Promise<void>
663+
dispatchOrUseDispatch(be.store).replaceInnerBlocks("foo", [BLOCK_INSTANCE]);
664+
dispatchOrUseDispatch(be.store).replaceInnerBlocks("foo", [BLOCK_INSTANCE], true);
665+
666+
// $ExpectType Promise<void>
667+
dispatchOrUseDispatch(be.store).resetBlocks([BLOCK_INSTANCE]);
668+
669+
// $ExpectType Promise<void>
670+
dispatchOrUseDispatch(be.store).selectBlock("foo");
671+
dispatchOrUseDispatch(be.store).selectBlock("foo", 5);
672+
673+
// $ExpectType Promise<void>
674+
dispatchOrUseDispatch(be.store).selectionChange("foo", "bar", 0, 5);
675+
676+
// $ExpectType Promise<IterableIterator<void>>
677+
dispatchOrUseDispatch(be.store).selectNextBlock("foo");
678+
679+
// $ExpectType Promise<IterableIterator<void>>
680+
dispatchOrUseDispatch(be.store).selectPreviousBlock("foo");
681+
682+
// $ExpectType Promise<void>
683+
dispatchOrUseDispatch(be.store).setTemplateValidity(false);
684+
685+
// $ExpectType Promise<void>
686+
dispatchOrUseDispatch(be.store).showInsertionPoint();
687+
dispatchOrUseDispatch(be.store).showInsertionPoint("foo");
688+
dispatchOrUseDispatch(be.store).showInsertionPoint("foo", 5);
689+
690+
// $ExpectType Promise<void>
691+
dispatchOrUseDispatch(be.store).toggleBlockMode("foo");
692+
693+
// $ExpectType Promise<void>
694+
dispatchOrUseDispatch(be.store).toggleSelection();
695+
dispatchOrUseDispatch(be.store).toggleSelection(true);
696+
697+
// $ExpectType Promise<void>
698+
dispatchOrUseDispatch(be.store).updateBlock("foo", { attributes: { foo: "bar" }, innerBlocks: [] });
699+
700+
// $ExpectType Promise<void>
701+
dispatchOrUseDispatch(be.store).updateBlockAttributes("foo", { foo: "bar" });
702+
703+
// $ExpectType Promise<void>
704+
dispatchOrUseDispatch(be.store).updateBlockListSettings("foo", { allowedBlocks: ["core/paragraph"] });
622705

623-
// $ExpectType string[]
624-
select("core/block-editor").getBlockParents("foo");
625-
select("core/block-editor").getBlockParentsByBlockName("foo", ["core/query"]);
626-
select("core/block-editor").getBlockParents("foo", true);
627-
select("core/block-editor").getBlockParentsByBlockName("foo", ["core/query"], true);
706+
// $ExpectType Promise<void>
707+
dispatchOrUseDispatch(be.store).updateSettings({
708+
focusMode: true,
709+
codeEditingEnabled: false,
710+
maxUploadFileSize: 500,
711+
richEditingEnabled: false,
712+
});
713+
}
628714

629-
// $ExpectType string[]
630-
useSelect("core/block-editor").getBlockParents("foo");
631-
useSelect("core/block-editor").getBlockParentsByBlockName("foo", ["core/query"]);
632-
useSelect("core/block-editor").getBlockParents("foo", true);
633-
useSelect("core/block-editor").getBlockParentsByBlockName("foo", ["core/query"], true);
715+
for (const selectOrUseSelect of [select, useSelect]) {
716+
// $ExpectType boolean
717+
selectOrUseSelect("core/block-editor").canInsertBlockType("core/paragraph");
718+
selectOrUseSelect("core/block-editor").canInsertBlockType("core/paragraph", "foo");
719+
720+
// $ExpectType string | null
721+
selectOrUseSelect("core/block-editor").getAdjacentBlockClientId();
722+
selectOrUseSelect("core/block-editor").getAdjacentBlockClientId("foo");
723+
selectOrUseSelect("core/block-editor").getAdjacentBlockClientId("foo", -1);
724+
selectOrUseSelect("core/block-editor").getAdjacentBlockClientId("foo", 1);
725+
726+
// $ExpectType string[]
727+
selectOrUseSelect("core/block-editor").getBlockParents("foo");
728+
selectOrUseSelect("core/block-editor").getBlockParentsByBlockName("foo", ["core/query"]);
729+
selectOrUseSelect("core/block-editor").getBlockParents("foo", true);
730+
selectOrUseSelect("core/block-editor").getBlockParentsByBlockName("foo", ["core/query"], true);
731+
732+
// $ExpectType string[]
733+
selectOrUseSelect("core/block-editor").getBlocksByName("core/group");
734+
selectOrUseSelect("core/block-editor").getBlocksByName(["core/group", "core/paragraph"]);
735+
}
634736

635-
// $ExpectType string[]
636-
useSelect("core/block-editor").getBlocksByName("core/group");
637-
useSelect("core/block-editor").getBlocksByName(["core/group", "core/paragraph"]);
737+
for (const selectOrUseSelect of [select, useSelect]) {
738+
// $ExpectType boolean
739+
selectOrUseSelect(be.store).canInsertBlockType("core/paragraph");
740+
selectOrUseSelect(be.store).canInsertBlockType("core/paragraph", "foo");
741+
742+
// $ExpectType string | null
743+
selectOrUseSelect(be.store).getAdjacentBlockClientId();
744+
selectOrUseSelect(be.store).getAdjacentBlockClientId("foo");
745+
selectOrUseSelect(be.store).getAdjacentBlockClientId("foo", -1);
746+
selectOrUseSelect(be.store).getAdjacentBlockClientId("foo", 1);
747+
748+
// $ExpectType string[]
749+
selectOrUseSelect(be.store).getBlockParents("foo");
750+
selectOrUseSelect(be.store).getBlockParentsByBlockName("foo", ["core/query"]);
751+
selectOrUseSelect(be.store).getBlockParents("foo", true);
752+
selectOrUseSelect(be.store).getBlockParentsByBlockName("foo", ["core/query"], true);
753+
754+
// $ExpectType string[]
755+
selectOrUseSelect(be.store).getBlocksByName("core/group");
756+
selectOrUseSelect(be.store).getBlocksByName(["core/group", "core/paragraph"]);
757+
}
638758

639759
{
640760
const blockProps: UseBlockProps.Merged & UseBlockProps.Reserved = be.useBlockProps();

0 commit comments

Comments
 (0)