@datalayer/core
Version:
[](https://datalayer.io)
63 lines (62 loc) • 2.48 kB
TypeScript
import { ReactPortal } from 'react';
import { IAnyOrganization, IAnySpace, IAnyTeam, ISpaceItem } from '../../models';
export type BannerDisplayVariant = 'danger' | 'info' | 'success' | 'warning';
export type LeftSidebarVariant = 'codefeed' | 'course' | 'empty' | 'guess-account' | 'guess-space' | 'guess-spaces' | 'organization' | 'organization-space' | 'organization-spaces' | 'organizations' | 'public' | 'unchanged' | 'user' | 'user-space' | 'user-spaces';
export type BackdropDisplay = {
open: boolean;
message?: string | void;
};
type BannerDisplay = {
message: string;
variant: BannerDisplayVariant;
timestamp?: Date;
};
type PortalDisplay = {
portal: ReactPortal;
pinned: boolean;
};
export type ScreenshotDisplay = {
open: boolean;
message?: string | void;
};
export type ILayoutState = {
backdrop?: BackdropDisplay;
banner?: BannerDisplay;
bootstrapped: boolean;
item?: ISpaceItem;
itemsRefreshCount: number;
leftPortal?: PortalDisplay;
leftSidebarVariant: LeftSidebarVariant;
organization?: IAnyOrganization;
rightPortal?: PortalDisplay;
screenCapture?: string;
screenshot?: ScreenshotDisplay;
space?: IAnySpace;
team?: IAnyTeam;
};
export type LayoutState = ILayoutState & {
hideBackdrop: () => void;
hideScreenshot: () => void;
reset: () => void;
resetForcedLeftPortal: () => void;
resetForcedRightPortal: () => void;
resetLeftPortal: () => void;
resetRightPortal: () => void;
setBanner: (bannerDisplay: BannerDisplay) => void;
setBootstrapped: (bootstrapped: boolean) => void;
setItem: (item?: ISpaceItem) => void;
setLeftPortal: (leftPortal: PortalDisplay) => void;
setLeftSidebarVariant: (leftSidebarVariant: LeftSidebarVariant) => void;
setRightPortal: (rightPortal: PortalDisplay) => void;
setScreenCapture: (screenCapture?: string) => void;
showBackdrop: (message?: string) => void;
showScreenshot: (message?: string) => void;
triggerItemsRefresh: () => void;
updateLayoutOrganization: (organization?: Partial<IAnyOrganization>) => void;
updateLayoutSpace: (space?: Partial<IAnySpace>) => void;
updateLayoutTeam: (team?: Partial<IAnyTeam>) => void;
};
export declare const layoutStore: import("zustand").StoreApi<LayoutState>;
export declare function useLayoutStore(): LayoutState;
export declare function useLayoutStore<T>(selector: (state: LayoutState) => T): T;
export default useLayoutStore;