UNPKG

react-mosaic-component

Version:
88 lines (87 loc) 3 kB
import React from 'react'; import { MosaicKey, MosaicNode, MosaicPath, MosaicUpdate } from './types'; /** * Mosaic provides functionality on the context for components within * Mosaic to affect the view state. */ /** * Context provided to everything within Mosaic */ export interface MosaicContext<T extends MosaicKey> { mosaicActions: MosaicRootActions<T>; mosaicId: string; blueprintNamespace: string; } /** * Context provided to everything within a Mosaic Window */ export interface MosaicWindowContext { blueprintNamespace: string; mosaicWindowActions: MosaicWindowActions; } /** * These actions are used to alter the state of the view tree */ export interface MosaicRootActions<T extends MosaicKey> { /** * Increases the size of this node and bubbles up the tree * @param path Path to node to expand * @param percentage Every node in the path up to root will be expanded to this percentage */ expand: (path: MosaicPath, percentage?: number) => void; /** * Remove the node at `path` * @param path */ remove: (path: MosaicPath) => void; /** * Hide the node at `path` but keep it in the DOM. Used in Drag and Drop * @param path */ hide: (path: MosaicPath) => void; /** * Replace currentNode at `path` with `node` * @param path * @param node */ replaceWith: (path: MosaicPath, node: MosaicNode<T>) => void; /** * Atomically applies all updates to the current tree * @param updates * @param suppressOnRelease (default: false) */ updateTree: (updates: MosaicUpdate<T>[], suppressOnRelease?: boolean) => void; /** * Returns the root of this Mosaic instance */ getRoot: () => MosaicNode<T> | null; } export interface MosaicWindowActions { /** * Fails if no `createNode()` is defined * Creates a new node and splits the current node. * The current node becomes the `first` and the new node the `second` of the result. * `direction` is chosen by querying the DOM and splitting along the longer axis */ split: (...args: any[]) => Promise<void>; /** * Fails if no `createNode()` is defined * Convenience function to call `createNode()` and replace the current node with it. */ replaceWithNew: (...args: any[]) => Promise<void>; /** * Sets the open state for the tray that holds additional controls. * Pass 'toggle' to invert the current state. */ setAdditionalControlsOpen: (open: boolean | 'toggle') => void; /** * Returns the path to this window */ getPath: () => MosaicPath; /** * Enables connecting a different drag source besides the react-mosaic toolbar */ connectDragSource: (connectedElements: React.ReactElement<any>) => React.ReactElement | null; } export declare const MosaicContext: React.Context<MosaicContext<MosaicKey>>; export declare const MosaicWindowContext: React.Context<MosaicWindowContext>;