main repo

This commit is contained in:
Basilosaurusrex
2025-11-24 18:09:40 +01:00
parent b636ee5e70
commit f027651f9b
34146 changed files with 4436636 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
import { PanelConstraints, PanelData } from "./Panel";
import { CSSProperties, createContext } from "./vendor/react";
// The "contextmenu" event is not supported as a PointerEvent in all browsers yet, so MouseEvent still need to be handled
export type ResizeEvent = KeyboardEvent | PointerEvent | MouseEvent;
export type ResizeHandler = (event: ResizeEvent) => void;
export type DragState = {
dragHandleId: string;
dragHandleRect: DOMRect;
initialCursorPosition: number;
initialLayout: number[];
};
export type TPanelGroupContext = {
collapsePanel: (panelData: PanelData) => void;
direction: "horizontal" | "vertical";
dragState: DragState | null;
expandPanel: (panelData: PanelData, minSizeOverride?: number) => void;
getPanelSize: (panelData: PanelData) => number;
getPanelStyle: (
panelData: PanelData,
defaultSize: number | undefined
) => CSSProperties;
groupId: string;
isPanelCollapsed: (panelData: PanelData) => boolean;
isPanelExpanded: (panelData: PanelData) => boolean;
reevaluatePanelConstraints: (
panelData: PanelData,
prevConstraints: PanelConstraints
) => void;
registerPanel: (panelData: PanelData) => void;
registerResizeHandle: (dragHandleId: string) => ResizeHandler;
resizePanel: (panelData: PanelData, size: number) => void;
startDragging: (dragHandleId: string, event: ResizeEvent) => void;
stopDragging: () => void;
unregisterPanel: (panelData: PanelData) => void;
panelGroupElement: ParentNode | null;
};
export const PanelGroupContext = createContext<TPanelGroupContext | null>(null);
PanelGroupContext.displayName = "PanelGroupContext";