@wordpress/blocks
Version:
Block API for WordPress.
150 lines (145 loc) • 3.55 kB
text/typescript
/**
* WordPress dependencies
*/
import type { ThunkArgs } from '@wordpress/data';
/**
* Internal dependencies
*/
import type {
BlockType,
BlockCategory,
BlockCollection,
BlockStyle,
BlockVariation,
BlockBindingsSource,
Icon,
} from '../types';
import type { store } from '.';
import type * as privateSelectors from './private-selectors';
import type * as privateActions from './private-actions';
/**
* The state of the `core/blocks` redux store.
*/
export interface BlockStoreState {
/**
* Bootstrapped block types from server-side definitions.
*/
bootstrappedBlockTypes: Record< string, Partial< BlockType > >;
/**
* Unprocessed block types pending filter application.
*/
unprocessedBlockTypes: Record< string, Partial< BlockType > >;
/**
* Block types by name.
*/
blockTypes: Record< string, BlockType >;
/**
* Block styles by block name.
*/
blockStyles: Record< string, BlockStyle[] >;
/**
* Block variations by block name.
*/
blockVariations: Record< string, BlockVariation[] >;
/**
* Name of the default block.
*/
defaultBlockName: string | null;
/**
* Name of the block for handling non-block content.
*/
freeformFallbackBlockName: string | null;
/**
* Name of the block for handling unregistered blocks.
*/
unregisteredFallbackBlockName: string | null;
/**
* Name of the block for handling the grouping of blocks.
*/
groupingBlockName: string | null;
/**
* The available block categories.
*/
categories: BlockCategory[];
/**
* The available collections.
*/
collections: Record< string, BlockCollection >;
/**
* Block bindings sources by name.
* The stored form omits `name` since it's the record key.
*/
blockBindingsSources: Record< string, Omit< BlockBindingsSource, 'name' > >;
}
/**
* Store action types.
*/
export type Action =
| {
type: 'ADD_BOOTSTRAPPED_BLOCK_TYPE';
name: string;
blockType: Record< string, unknown >;
}
| {
type: 'ADD_UNPROCESSED_BLOCK_TYPE';
name: string;
blockType: Partial< BlockType >;
}
| { type: 'ADD_BLOCK_TYPES'; blockTypes: BlockType[] }
| { type: 'REMOVE_BLOCK_TYPES'; names: string[] }
| {
type: 'ADD_BLOCK_STYLES';
blockNames: string[];
styles: BlockStyle[];
}
| {
type: 'REMOVE_BLOCK_STYLES';
blockName: string;
styleNames: string[];
}
| {
type: 'ADD_BLOCK_VARIATIONS';
blockName: string;
variations: BlockVariation[];
}
| {
type: 'REMOVE_BLOCK_VARIATIONS';
blockName: string;
variationNames: string[];
}
| { type: 'SET_DEFAULT_BLOCK_NAME'; name: string }
| { type: 'SET_FREEFORM_FALLBACK_BLOCK_NAME'; name: string }
| { type: 'SET_UNREGISTERED_FALLBACK_BLOCK_NAME'; name: string }
| { type: 'SET_GROUPING_BLOCK_NAME'; name: string }
| { type: 'SET_CATEGORIES'; categories: BlockCategory[] }
| {
type: 'UPDATE_CATEGORY';
slug: string;
category: Partial< BlockCategory >;
}
| {
type: 'ADD_BLOCK_COLLECTION';
namespace: string;
title: string;
icon?: Icon;
}
| { type: 'REMOVE_BLOCK_COLLECTION'; namespace: string }
| {
type: 'ADD_BLOCK_BINDINGS_SOURCE';
name: string;
label?: string;
usesContext?: string[];
getValues?: Function;
setValues?: Function;
canUserEditValue?: Function;
getFieldsList?: Function;
}
| { type: 'REMOVE_BLOCK_BINDINGS_SOURCE'; name: string };
/**
* Thunk arguments for the blocks store, including private selectors and actions.
*/
export type BlocksStoreThunkArgs = ThunkArgs<
typeof store,
typeof privateSelectors,
typeof privateActions
>;