react-panel-layout 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -0
- package/dist/GridLayout-CmzKfbPP.js +1295 -0
- package/dist/GridLayout-CmzKfbPP.js.map +1 -0
- package/dist/GridLayout-Dx3Qofl0.cjs +2 -0
- package/dist/GridLayout-Dx3Qofl0.cjs.map +1 -0
- package/dist/PanelSystemContext.d.ts +25 -0
- package/dist/components/grid/GridLayerList.d.ts +10 -0
- package/dist/components/grid/GridLayerResizeHandles.d.ts +22 -0
- package/dist/components/grid/GridLayout.d.ts +11 -0
- package/dist/components/grid/GridTrackResizeHandle.d.ts +18 -0
- package/dist/components/paneling/FloatingPanelFrame.d.ts +32 -0
- package/dist/components/panels/DropSuggestOverlay.d.ts +13 -0
- package/dist/components/panels/PanelGroupView.d.ts +20 -0
- package/dist/components/resizer/HorizontalDivider.d.ts +14 -0
- package/dist/components/resizer/ResizeHandle.d.ts +24 -0
- package/dist/components/tabs/TabBar.d.ts +22 -0
- package/dist/components/tabs/TabBarTab.d.ts +20 -0
- package/dist/components/tabs/TabDragOverlay.d.ts +5 -0
- package/dist/components/window/DialogOverlay.d.ts +17 -0
- package/dist/components/window/Drawer.d.ts +22 -0
- package/dist/components/window/DrawerLayers.d.ts +9 -0
- package/dist/components/window/PopupLayerPortal.d.ts +10 -0
- package/dist/config/PanelContentDeclaration.d.ts +79 -0
- package/dist/config/index.d.ts +32 -0
- package/dist/config/panelRouter.d.ts +57 -0
- package/dist/config.cjs +2 -0
- package/dist/config.cjs.map +1 -0
- package/dist/config.js +210 -0
- package/dist/config.js.map +1 -0
- package/dist/constants/styles.d.ts +181 -0
- package/dist/floating/index.d.ts +8 -0
- package/dist/floating.cjs +2 -0
- package/dist/floating.cjs.map +1 -0
- package/dist/floating.js +67 -0
- package/dist/floating.js.map +1 -0
- package/dist/hooks/useCSSMatrix.d.ts +47 -0
- package/dist/hooks/useClonedElementPreview.d.ts +7 -0
- package/dist/hooks/useDocumentPointerEvents.d.ts +37 -0
- package/dist/hooks/useEffectEvent.d.ts +17 -0
- package/dist/hooks/useElementComponentWrapper.d.ts +18 -0
- package/dist/hooks/useIntersectionObserver.d.ts +20 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +23 -0
- package/dist/hooks/useResizeObserver.d.ts +15 -0
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +1863 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/grid/GridLayoutContext.d.ts +34 -0
- package/dist/modules/grid/LayerInstanceContext.d.ts +26 -0
- package/dist/modules/grid/useGridPlacements.d.ts +7 -0
- package/dist/modules/grid/useGridTracks.d.ts +26 -0
- package/dist/modules/grid/useLayerDragHandle.d.ts +2 -0
- package/dist/modules/grid/useLayerInteractions.d.ts +12 -0
- package/dist/modules/keybindings/KeybindingsProvider.d.ts +17 -0
- package/dist/modules/panels/dom/DomRegistry.d.ts +19 -0
- package/dist/modules/panels/index.d.ts +11 -0
- package/dist/modules/panels/interactions/InteractionsContext.d.ts +50 -0
- package/dist/modules/panels/interactions/InteractionsContext.test.d.ts +1 -0
- package/dist/modules/panels/interactions/dnd.d.ts +5 -0
- package/dist/modules/panels/keybindings/KeybindingsInstaller.d.ts +5 -0
- package/dist/modules/panels/layout/adapter.d.ts +21 -0
- package/dist/modules/panels/rendering/GroupContainer.d.ts +11 -0
- package/dist/modules/panels/rendering/RenderBridge.d.ts +8 -0
- package/dist/modules/panels/rendering/RenderContext.d.ts +19 -0
- package/dist/modules/panels/state/PanelSplitHandles.d.ts +8 -0
- package/dist/modules/panels/state/PanelSystemContext.d.ts +148 -0
- package/dist/modules/panels/state/StateContext.d.ts +5 -0
- package/dist/modules/panels/state/cleanup.d.ts +11 -0
- package/dist/modules/panels/state/commands.d.ts +16 -0
- package/dist/modules/panels/state/focus/Context.d.ts +14 -0
- package/dist/modules/panels/state/focus/logic.d.ts +9 -0
- package/dist/modules/panels/state/groups/Context.d.ts +19 -0
- package/dist/modules/panels/state/groups/logic.d.ts +11 -0
- package/dist/modules/panels/state/splitLimits.d.ts +15 -0
- package/dist/modules/panels/state/tree/Context.d.ts +16 -0
- package/dist/modules/panels/state/tree/logic.d.ts +42 -0
- package/dist/modules/panels/state/types.d.ts +135 -0
- package/dist/modules/panels/system/PanelSystem.d.ts +6 -0
- package/dist/modules/resizer/useResizeDrag.d.ts +26 -0
- package/dist/modules/window/useDrawerState.d.ts +6 -0
- package/dist/styles-BMEhL6I0.cjs +2 -0
- package/dist/styles-BMEhL6I0.cjs.map +1 -0
- package/dist/styles-BnvLfp6e.js +49 -0
- package/dist/styles-BnvLfp6e.js.map +1 -0
- package/dist/types.d.ts +114 -0
- package/dist/utils/CSSMatrix.d.ts +42 -0
- package/dist/utils/dialogUtils.d.ts +18 -0
- package/dist/utils/math.d.ts +5 -0
- package/dist/utils/polyfills/createDialogPolyfill.d.ts +8 -0
- package/dist/utils/typedActions.d.ts +37 -0
- package/package.json +78 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Shared logic for draggable resize handles.
|
|
3
|
+
*/
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
export type ResizeDragAxis = "x" | "y";
|
|
6
|
+
export type UseResizeDragOptions = {
|
|
7
|
+
/** Axis along which the drag should compute deltas */
|
|
8
|
+
axis: ResizeDragAxis;
|
|
9
|
+
/** Callback invoked with the delta value when dragging */
|
|
10
|
+
onResize?: (delta: number) => void;
|
|
11
|
+
};
|
|
12
|
+
export type UseResizeDragResult<TElement extends HTMLElement> = {
|
|
13
|
+
/** Ref to attach to the draggable element */
|
|
14
|
+
ref: React.RefObject<TElement | null>;
|
|
15
|
+
/** Pointer down handler to initiate dragging */
|
|
16
|
+
onPointerDown: (event: React.PointerEvent<TElement>) => void;
|
|
17
|
+
/** Whether a drag interaction is currently active */
|
|
18
|
+
isDragging: boolean;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Provides unified pointer handling for resize-capable UI elements.
|
|
22
|
+
*
|
|
23
|
+
* @param options - Configuration for the drag interaction.
|
|
24
|
+
* @returns Handlers and state for wiring into a draggable element.
|
|
25
|
+
*/
|
|
26
|
+
export declare const useResizeDrag: <TElement extends HTMLElement = HTMLElement>(options: UseResizeDragOptions) => UseResizeDragResult<TElement>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const D="var(--rpl-color-resize-handle-idle)",A="var(--rpl-color-resize-handle-hover)",O="var(--rpl-color-resize-handle-active)",I="var(--rpl-color-drop-suggest-border)",r="var(--rpl-color-drop-suggest-bg)",N="var(--rpl-color-insert-guide)",S="var(--rpl-color-insert-guide-shadow)",_="var(--rpl-color-surface)",T="var(--rpl-color-surface-2)",E="var(--rpl-color-border)",L="var(--rpl-color-muted-fg)",R="var(--rpl-shadow-card)",s="var(--rpl-radius-suggest)",G="var(--rpl-size-suggest-border)";const a="var(--rpl-size-resize-handle-thickness)",o="var(--rpl-size-split-handle-thickness)",t="var(--rpl-z-overlay)",n="var(--rpl-z-tabdrag-overlay)",e=a,c="var(--rpl-z-resize-handle)",l=4,p="var(--rpl-size-grid-layer-corner-hit)",P="var(--rpl-size-grid-layer-edge-hit-thickness)",C=t,H=G,d=s,i=I,F=r,U=6,v=n,g="var(--rpl-space-tab-drag-preview-offset-x)",B="var(--rpl-space-tab-drag-preview-offset-y)",W="var(--rpl-size-tab-drag-insert-guide-width)",Z="var(--rpl-radius-tab-drag-insert-guide)",h=N,z=S,V="var(--rpl-radius-floating-panel)",X="var(--rpl-space-floating-panel-gap)",f="var(--rpl-space-floating-panel-header-padding-y)",u="var(--rpl-space-floating-panel-header-padding-x)",Y="var(--rpl-space-floating-panel-content-padding)",K="var(--rpl-size-floating-panel-meta-font)",w="var(--rpl-space-floating-panel-controls-gap)",b=_,y=T,M=E,k=L,x=R,m="var(--rpl-space-drawer-header-padding-y)",j="var(--rpl-space-drawer-header-padding-x)",q="var(--rpl-space-drawer-header-gap)",J="var(--rpl-space-drawer-content-padding)",Q="var(--rpl-size-drawer-close-button-font)",$=_,__=E,E_=R,R_=o,D_="var(--rpl-size-horizontal-divider-width)";exports.COLOR_RESIZE_HANDLE_ACTIVE=O;exports.COLOR_RESIZE_HANDLE_HOVER=A;exports.COLOR_RESIZE_HANDLE_IDLE=D;exports.CSS_VAR_PREFIX="rpl";exports.DRAWER_BORDER_COLOR=__;exports.DRAWER_CLOSE_BUTTON_FONT_SIZE=Q;exports.DRAWER_CONTENT_PADDING=J;exports.DRAWER_HEADER_GAP=q;exports.DRAWER_HEADER_PADDING_X=j;exports.DRAWER_HEADER_PADDING_Y=m;exports.DRAWER_SHADOW=E_;exports.DRAWER_SURFACE_COLOR=$;exports.DROP_SUGGEST_BG_COLOR=F;exports.DROP_SUGGEST_BORDER_COLOR=i;exports.DROP_SUGGEST_BORDER_RADIUS=d;exports.DROP_SUGGEST_BORDER_WIDTH=H;exports.DROP_SUGGEST_PADDING_PX=U;exports.DROP_SUGGEST_Z_INDEX=C;exports.FLOATING_PANEL_BORDER_COLOR=M;exports.FLOATING_PANEL_BORDER_RADIUS=V;exports.FLOATING_PANEL_CONTENT_PADDING=Y;exports.FLOATING_PANEL_CONTROLS_GAP=w;exports.FLOATING_PANEL_GAP=X;exports.FLOATING_PANEL_HEADER_PADDING_X=u;exports.FLOATING_PANEL_HEADER_PADDING_Y=f;exports.FLOATING_PANEL_META_FONT_SIZE=K;exports.FLOATING_PANEL_MUTED_FG_COLOR=k;exports.FLOATING_PANEL_SHADOW=x;exports.FLOATING_PANEL_SURFACE_2_COLOR=y;exports.FLOATING_PANEL_SURFACE_COLOR=b;exports.GRID_HANDLE_THICKNESS=l;exports.GRID_LAYER_CORNER_HIT_SIZE=p;exports.GRID_LAYER_EDGE_HIT_THICKNESS=P;exports.HORIZONTAL_DIVIDER_WIDTH=D_;exports.RESIZE_HANDLE_THICKNESS=e;exports.RESIZE_HANDLE_Z_INDEX=c;exports.SPLIT_HANDLE_THICKNESS=R_;exports.TAB_DRAG_INSERT_GUIDE_BORDER_RADIUS=Z;exports.TAB_DRAG_INSERT_GUIDE_COLOR=h;exports.TAB_DRAG_INSERT_GUIDE_SHADOW=z;exports.TAB_DRAG_INSERT_GUIDE_WIDTH=W;exports.TAB_DRAG_OVERLAY_Z_INDEX=v;exports.TAB_DRAG_PREVIEW_OFFSET_X=g;exports.TAB_DRAG_PREVIEW_OFFSET_Y=B;
|
|
2
|
+
//# sourceMappingURL=styles-BMEhL6I0.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles-BMEhL6I0.cjs","sources":["../src/constants/styles.ts"],"sourcesContent":["/**\n * @file Style constants for library components\n *\n * These constants reference CSS variables defined in variables.css.\n * This allows users to override theme values via CSS while maintaining\n * type-safe constants in TypeScript.\n *\n * All CSS variables use the unified prefix: --rpl- (react-panel-layout)\n * Users can override these via CSS variables (--rpl-*)\n *\n * @example\n * // In your CSS:\n * :root {\n * --rpl-color-primary: #ff0000;\n * }\n */\n\n// ========================================\n// CSS VARIABLE PREFIX\n// ========================================\n\n/**\n * Unified CSS variable prefix for all react-panel-layout variables\n * All theme variables use this prefix: --rpl-*\n */\nexport const CSS_VAR_PREFIX = 'rpl';\n\n// ========================================\n// COLORS\n// ========================================\n\n/**\n * Tab colors - used in TabBar component\n */\nexport const COLOR_TAB_FG = \"var(--rpl-color-tab-fg)\";\nexport const COLOR_TAB_ACTIVE_BG = \"var(--rpl-color-tab-active-bg)\";\nexport const COLOR_TABBAR_BG = \"var(--rpl-color-tabbar-bg)\";\n\n/**\n * Panel colors - used in panel layouts\n */\nexport const COLOR_PANEL_BORDER = \"var(--rpl-color-panel-border)\";\nexport const COLOR_PANEL_BG = \"var(--rpl-color-panel-bg)\";\n\n/**\n * Primary color - used for resize handles, highlights\n */\nexport const COLOR_PRIMARY = \"var(--rpl-color-primary)\";\nexport const COLOR_RESIZE_HANDLE_IDLE = \"var(--rpl-color-resize-handle-idle)\";\nexport const COLOR_RESIZE_HANDLE_HOVER = \"var(--rpl-color-resize-handle-hover)\";\nexport const COLOR_RESIZE_HANDLE_ACTIVE = \"var(--rpl-color-resize-handle-active)\";\n\n/**\n * Drop suggestion overlay colors\n */\nexport const COLOR_DROP_SUGGEST_BORDER = \"var(--rpl-color-drop-suggest-border)\";\nexport const COLOR_DROP_SUGGEST_BG = \"var(--rpl-color-drop-suggest-bg)\";\n\n/**\n * Tab drag overlay colors\n */\nexport const COLOR_TABDRAG_BG = \"var(--rpl-color-tabdrag-bg)\";\nexport const COLOR_TABDRAG_FG = \"var(--rpl-color-tabdrag-fg)\";\nexport const COLOR_TABDRAG_BORDER = \"var(--rpl-color-tabdrag-border)\";\nexport const COLOR_TABDRAG_SHADOW = \"var(--rpl-color-tabdrag-shadow)\";\n\n/**\n * Insert guide colors\n */\nexport const COLOR_INSERT_GUIDE = \"var(--rpl-color-insert-guide)\";\nexport const COLOR_INSERT_GUIDE_SHADOW = \"var(--rpl-color-insert-guide-shadow)\";\n\n/**\n * Node editor / floating panel colors\n * These are used by Drawer and FloatingPanelFrame components\n */\nexport const COLOR_NODE_EDITOR_SURFACE = \"var(--rpl-color-surface)\";\nexport const COLOR_NODE_EDITOR_SURFACE_2 = \"var(--rpl-color-surface-2)\";\nexport const COLOR_NODE_EDITOR_BORDER = \"var(--rpl-color-border)\";\nexport const COLOR_NODE_EDITOR_MUTED_FG = \"var(--rpl-color-muted-fg)\";\nexport const COLOR_NODE_EDITOR_CARD_SHADOW = \"var(--rpl-shadow-card)\";\n\n// ========================================\n// SIZING & SPACING\n// ========================================\n\n/**\n * Tab sizing\n */\nexport const SIZE_TAB_FONT = \"var(--rpl-size-tab-font)\";\nexport const SPACE_TAB_PADDING_Y = \"var(--rpl-space-tab-padding-y)\";\nexport const SPACE_TAB_PADDING_X = \"var(--rpl-space-tab-padding-x)\";\n\n/**\n * Tabbar spacing\n */\nexport const SPACE_TABBAR_GAP = \"var(--rpl-space-tabbar-gap)\";\nexport const SPACE_TABBAR_PADDING_Y = \"var(--rpl-space-tabbar-padding-y)\";\nexport const SPACE_TABBAR_PADDING_X = \"var(--rpl-space-tabbar-padding-x)\";\n\n/**\n * Border radius (decorative, using CSS variables)\n */\nexport const RADIUS_TAB = \"var(--rpl-radius-tab)\";\nexport const RADIUS_SUGGEST = \"var(--rpl-radius-suggest)\";\n\n/**\n * Border widths\n */\nexport const SIZE_SUGGEST_BORDER = \"var(--rpl-size-suggest-border)\";\n\n/**\n * Handle thicknesses\n * Note: SIZE_GRID_HANDLE_THICKNESS is kept as number for JavaScript calculations\n */\nexport const SIZE_GRID_HANDLE_THICKNESS = 4; // Used in GridTrackResizeHandle.tsx for offset calculation\nexport const SIZE_RESIZE_HANDLE_THICKNESS = \"var(--rpl-size-resize-handle-thickness)\";\nexport const SIZE_SPLIT_HANDLE_THICKNESS = \"var(--rpl-size-split-handle-thickness)\";\n\n/**\n * Drop suggest padding\n */\nexport const SPACE_DROP_SUGGEST_PADDING = \"var(--rpl-space-drop-suggest-padding)\";\n\n// ========================================\n// Z-INDEXES\n// ========================================\n\nexport const Z_OVERLAY = \"var(--rpl-z-overlay)\";\nexport const Z_TABDRAG_OVERLAY = \"var(--rpl-z-tabdrag-overlay)\";\nexport const Z_DIALOG_OVERLAY = \"var(--rpl-z-dialog-overlay)\";\n\n// ========================================\n// COMPONENT-SPECIFIC CONSTANTS\n// ========================================\n\n/**\n * Resize Handle\n */\nexport const RESIZE_HANDLE_THICKNESS = SIZE_RESIZE_HANDLE_THICKNESS;\nexport const RESIZE_HANDLE_Z_INDEX = \"var(--rpl-z-resize-handle)\";\n\n/**\n * Grid Track Resize Handle\n */\nexport const GRID_HANDLE_THICKNESS = SIZE_GRID_HANDLE_THICKNESS;\n\n/**\n * Grid Layer Resize Handles\n */\nexport const GRID_LAYER_CORNER_HIT_SIZE = \"var(--rpl-size-grid-layer-corner-hit)\";\nexport const GRID_LAYER_EDGE_HIT_THICKNESS = \"var(--rpl-size-grid-layer-edge-hit-thickness)\";\n\n/**\n * Drop Suggest Overlay\n */\nexport const DROP_SUGGEST_Z_INDEX = Z_OVERLAY;\nexport const DROP_SUGGEST_BORDER_WIDTH = SIZE_SUGGEST_BORDER;\nexport const DROP_SUGGEST_BORDER_RADIUS = RADIUS_SUGGEST;\nexport const DROP_SUGGEST_BORDER_COLOR = COLOR_DROP_SUGGEST_BORDER;\nexport const DROP_SUGGEST_BG_COLOR = COLOR_DROP_SUGGEST_BG;\nexport const DROP_SUGGEST_PADDING = SPACE_DROP_SUGGEST_PADDING;\nexport const DROP_SUGGEST_PADDING_PX = 6;\n\n/**\n * Tab Drag Overlay\n */\nexport const TAB_DRAG_OVERLAY_Z_INDEX = Z_TABDRAG_OVERLAY;\nexport const TAB_DRAG_PREVIEW_OFFSET_X = \"var(--rpl-space-tab-drag-preview-offset-x)\";\nexport const TAB_DRAG_PREVIEW_OFFSET_Y = \"var(--rpl-space-tab-drag-preview-offset-y)\";\nexport const TAB_DRAG_PREVIEW_BORDER_RADIUS = \"var(--rpl-radius-tab-drag-preview)\";\nexport const TAB_DRAG_PREVIEW_PADDING_Y = \"var(--rpl-space-tab-drag-preview-padding-y)\";\nexport const TAB_DRAG_PREVIEW_PADDING_X = \"var(--rpl-space-tab-drag-preview-padding-x)\";\nexport const TAB_DRAG_PREVIEW_FONT_SIZE = \"var(--rpl-size-tab-drag-preview-font)\";\nexport const TAB_DRAG_INSERT_GUIDE_WIDTH = \"var(--rpl-size-tab-drag-insert-guide-width)\";\nexport const TAB_DRAG_INSERT_GUIDE_BORDER_RADIUS = \"var(--rpl-radius-tab-drag-insert-guide)\";\nexport const TAB_DRAG_PREVIEW_BG_COLOR = COLOR_TABDRAG_BG;\nexport const TAB_DRAG_PREVIEW_FG_COLOR = COLOR_TABDRAG_FG;\nexport const TAB_DRAG_PREVIEW_BORDER_COLOR = COLOR_TABDRAG_BORDER;\nexport const TAB_DRAG_PREVIEW_SHADOW = COLOR_TABDRAG_SHADOW;\nexport const TAB_DRAG_INSERT_GUIDE_COLOR = COLOR_INSERT_GUIDE;\nexport const TAB_DRAG_INSERT_GUIDE_SHADOW = COLOR_INSERT_GUIDE_SHADOW;\n\n/**\n * Dialog Overlay\n */\nexport const DIALOG_OVERLAY_Z_INDEX = Z_DIALOG_OVERLAY;\n\n/**\n * Floating Panel Frame\n */\nexport const FLOATING_PANEL_BORDER_RADIUS = \"var(--rpl-radius-floating-panel)\";\nexport const FLOATING_PANEL_GAP = \"var(--rpl-space-floating-panel-gap)\";\nexport const FLOATING_PANEL_HEADER_PADDING_Y = \"var(--rpl-space-floating-panel-header-padding-y)\";\nexport const FLOATING_PANEL_HEADER_PADDING_X = \"var(--rpl-space-floating-panel-header-padding-x)\";\nexport const FLOATING_PANEL_CONTENT_PADDING = \"var(--rpl-space-floating-panel-content-padding)\";\nexport const FLOATING_PANEL_META_FONT_SIZE = \"var(--rpl-size-floating-panel-meta-font)\";\nexport const FLOATING_PANEL_CONTROLS_GAP = \"var(--rpl-space-floating-panel-controls-gap)\";\nexport const FLOATING_PANEL_SURFACE_COLOR = COLOR_NODE_EDITOR_SURFACE;\nexport const FLOATING_PANEL_SURFACE_2_COLOR = COLOR_NODE_EDITOR_SURFACE_2;\nexport const FLOATING_PANEL_BORDER_COLOR = COLOR_NODE_EDITOR_BORDER;\nexport const FLOATING_PANEL_MUTED_FG_COLOR = COLOR_NODE_EDITOR_MUTED_FG;\nexport const FLOATING_PANEL_SHADOW = COLOR_NODE_EDITOR_CARD_SHADOW;\n\n/**\n * Drawer\n */\nexport const DRAWER_HEADER_PADDING_Y = \"var(--rpl-space-drawer-header-padding-y)\";\nexport const DRAWER_HEADER_PADDING_X = \"var(--rpl-space-drawer-header-padding-x)\";\nexport const DRAWER_HEADER_GAP = \"var(--rpl-space-drawer-header-gap)\";\nexport const DRAWER_CONTENT_PADDING = \"var(--rpl-space-drawer-content-padding)\";\nexport const DRAWER_CLOSE_BUTTON_FONT_SIZE = \"var(--rpl-size-drawer-close-button-font)\";\nexport const DRAWER_SURFACE_COLOR = COLOR_NODE_EDITOR_SURFACE;\nexport const DRAWER_BORDER_COLOR = COLOR_NODE_EDITOR_BORDER;\nexport const DRAWER_SHADOW = COLOR_NODE_EDITOR_CARD_SHADOW;\n\n/**\n * Split Handles\n */\nexport const SPLIT_HANDLE_THICKNESS = SIZE_SPLIT_HANDLE_THICKNESS;\n\n/**\n * HorizontalDivider\n */\nexport const HORIZONTAL_DIVIDER_WIDTH = \"var(--rpl-size-horizontal-divider-width)\";\nexport const HORIZONTAL_DIVIDER_HIT_AREA_OFFSET = \"var(--rpl-space-horizontal-divider-hit-area-offset)\";\n"],"names":["COLOR_RESIZE_HANDLE_IDLE","COLOR_RESIZE_HANDLE_HOVER","COLOR_RESIZE_HANDLE_ACTIVE","COLOR_DROP_SUGGEST_BORDER","COLOR_DROP_SUGGEST_BG","COLOR_INSERT_GUIDE","COLOR_INSERT_GUIDE_SHADOW","COLOR_NODE_EDITOR_SURFACE","COLOR_NODE_EDITOR_SURFACE_2","COLOR_NODE_EDITOR_BORDER","COLOR_NODE_EDITOR_MUTED_FG","COLOR_NODE_EDITOR_CARD_SHADOW","RADIUS_SUGGEST","SIZE_SUGGEST_BORDER","SIZE_RESIZE_HANDLE_THICKNESS","SIZE_SPLIT_HANDLE_THICKNESS","Z_OVERLAY","Z_TABDRAG_OVERLAY","RESIZE_HANDLE_THICKNESS","RESIZE_HANDLE_Z_INDEX","GRID_HANDLE_THICKNESS","GRID_LAYER_CORNER_HIT_SIZE","GRID_LAYER_EDGE_HIT_THICKNESS","DROP_SUGGEST_Z_INDEX","DROP_SUGGEST_BORDER_WIDTH","DROP_SUGGEST_BORDER_RADIUS","DROP_SUGGEST_BORDER_COLOR","DROP_SUGGEST_BG_COLOR","DROP_SUGGEST_PADDING_PX","TAB_DRAG_OVERLAY_Z_INDEX","TAB_DRAG_PREVIEW_OFFSET_X","TAB_DRAG_PREVIEW_OFFSET_Y","TAB_DRAG_INSERT_GUIDE_WIDTH","TAB_DRAG_INSERT_GUIDE_BORDER_RADIUS","TAB_DRAG_INSERT_GUIDE_COLOR","TAB_DRAG_INSERT_GUIDE_SHADOW","FLOATING_PANEL_BORDER_RADIUS","FLOATING_PANEL_GAP","FLOATING_PANEL_HEADER_PADDING_Y","FLOATING_PANEL_HEADER_PADDING_X","FLOATING_PANEL_CONTENT_PADDING","FLOATING_PANEL_META_FONT_SIZE","FLOATING_PANEL_CONTROLS_GAP","FLOATING_PANEL_SURFACE_COLOR","FLOATING_PANEL_SURFACE_2_COLOR","FLOATING_PANEL_BORDER_COLOR","FLOATING_PANEL_MUTED_FG_COLOR","FLOATING_PANEL_SHADOW","DRAWER_HEADER_PADDING_Y","DRAWER_HEADER_PADDING_X","DRAWER_HEADER_GAP","DRAWER_CONTENT_PADDING","DRAWER_CLOSE_BUTTON_FONT_SIZE","DRAWER_SURFACE_COLOR","DRAWER_BORDER_COLOR","DRAWER_SHADOW","SPLIT_HANDLE_THICKNESS","HORIZONTAL_DIVIDER_WIDTH"],"mappings":"aAgDO,MAAMA,EAA2B,sCAC3BC,EAA4B,uCAC5BC,EAA6B,wCAK7BC,EAA4B,uCAC5BC,EAAwB,mCAaxBC,EAAqB,gCACrBC,EAA4B,uCAM5BC,EAA4B,2BAC5BC,EAA8B,6BAC9BC,EAA2B,0BAC3BC,EAA6B,4BAC7BC,EAAgC,yBAwBhCC,EAAiB,4BAKjBC,EAAsB,iCAO5B,MAAMC,EAA+B,0CAC/BC,EAA8B,yCAW9BC,EAAY,uBACZC,EAAoB,+BAUpBC,EAA0BJ,EAC1BK,EAAwB,6BAKxBC,EAAwB,EAKxBC,EAA6B,wCAC7BC,EAAgC,gDAKhCC,EAAuBP,EACvBQ,EAA4BX,EAC5BY,EAA6Bb,EAC7Bc,EAA4BvB,EAC5BwB,EAAwBvB,EAExBwB,EAA0B,EAK1BC,EAA2BZ,EAC3Ba,EAA4B,6CAC5BC,EAA4B,6CAK5BC,EAA8B,8CAC9BC,EAAsC,0CAKtCC,EAA8B7B,EAC9B8B,EAA+B7B,EAU/B8B,EAA+B,mCAC/BC,EAAqB,sCACrBC,EAAkC,mDAClCC,EAAkC,mDAClCC,EAAiC,kDACjCC,EAAgC,2CAChCC,EAA8B,+CAC9BC,EAA+BpC,EAC/BqC,EAAiCpC,EACjCqC,EAA8BpC,EAC9BqC,EAAgCpC,EAChCqC,EAAwBpC,EAKxBqC,EAA0B,2CAC1BC,EAA0B,2CAC1BC,EAAoB,qCACpBC,EAAyB,0CACzBC,EAAgC,2CAChCC,EAAuB9C,EACvB+C,GAAsB7C,EACtB8C,GAAgB5C,EAKhB6C,GAAyBzC,EAKzB0C,GAA2B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const l = "rpl", S = "var(--rpl-color-resize-handle-idle)", N = "var(--rpl-color-resize-handle-hover)", p = "var(--rpl-color-resize-handle-active)", r = "var(--rpl-color-drop-suggest-border)", E = "var(--rpl-color-drop-suggest-bg)", R = "var(--rpl-color-insert-guide)", o = "var(--rpl-color-insert-guide-shadow)", _ = "var(--rpl-color-surface)", D = "var(--rpl-color-surface-2)", s = "var(--rpl-color-border)", t = "var(--rpl-color-muted-fg)", a = "var(--rpl-shadow-card)", O = "var(--rpl-radius-suggest)", n = "var(--rpl-size-suggest-border)";
|
|
2
|
+
const e = "var(--rpl-size-resize-handle-thickness)", A = "var(--rpl-size-split-handle-thickness)", c = "var(--rpl-z-overlay)", I = "var(--rpl-z-tabdrag-overlay)", T = e, L = "var(--rpl-z-resize-handle)", G = 4, d = "var(--rpl-size-grid-layer-corner-hit)", i = "var(--rpl-size-grid-layer-edge-hit-thickness)", v = c, C = n, g = O, H = r, P = E, U = 6, F = I, h = "var(--rpl-space-tab-drag-preview-offset-x)", B = "var(--rpl-space-tab-drag-preview-offset-y)", Z = "var(--rpl-size-tab-drag-insert-guide-width)", z = "var(--rpl-radius-tab-drag-insert-guide)", W = R, f = o, u = "var(--rpl-radius-floating-panel)", w = "var(--rpl-space-floating-panel-gap)", b = "var(--rpl-space-floating-panel-header-padding-y)", K = "var(--rpl-space-floating-panel-header-padding-x)", V = "var(--rpl-space-floating-panel-content-padding)", y = "var(--rpl-size-floating-panel-meta-font)", X = "var(--rpl-space-floating-panel-controls-gap)", Y = _, x = D, k = s, M = t, m = a, j = "var(--rpl-space-drawer-header-padding-y)", q = "var(--rpl-space-drawer-header-padding-x)", J = "var(--rpl-space-drawer-header-gap)", Q = "var(--rpl-space-drawer-content-padding)", $ = "var(--rpl-size-drawer-close-button-font)", __ = _, s_ = s, a_ = a, r_ = A, E_ = "var(--rpl-size-horizontal-divider-width)";
|
|
3
|
+
export {
|
|
4
|
+
k as A,
|
|
5
|
+
u as B,
|
|
6
|
+
p as C,
|
|
7
|
+
v as D,
|
|
8
|
+
x as E,
|
|
9
|
+
m as F,
|
|
10
|
+
i as G,
|
|
11
|
+
E_ as H,
|
|
12
|
+
b as I,
|
|
13
|
+
K as J,
|
|
14
|
+
w as K,
|
|
15
|
+
y as L,
|
|
16
|
+
M,
|
|
17
|
+
X as N,
|
|
18
|
+
V as O,
|
|
19
|
+
T as R,
|
|
20
|
+
r_ as S,
|
|
21
|
+
h as T,
|
|
22
|
+
N as a,
|
|
23
|
+
S as b,
|
|
24
|
+
g as c,
|
|
25
|
+
P as d,
|
|
26
|
+
C as e,
|
|
27
|
+
H as f,
|
|
28
|
+
U as g,
|
|
29
|
+
B as h,
|
|
30
|
+
f as i,
|
|
31
|
+
W as j,
|
|
32
|
+
z as k,
|
|
33
|
+
Z as l,
|
|
34
|
+
F as m,
|
|
35
|
+
l as n,
|
|
36
|
+
a_ as o,
|
|
37
|
+
__ as p,
|
|
38
|
+
Q as q,
|
|
39
|
+
s_ as r,
|
|
40
|
+
J as s,
|
|
41
|
+
j as t,
|
|
42
|
+
q as u,
|
|
43
|
+
$ as v,
|
|
44
|
+
d as w,
|
|
45
|
+
L as x,
|
|
46
|
+
G as y,
|
|
47
|
+
Y as z
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=styles-BnvLfp6e.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles-BnvLfp6e.js","sources":["../src/constants/styles.ts"],"sourcesContent":["/**\n * @file Style constants for library components\n *\n * These constants reference CSS variables defined in variables.css.\n * This allows users to override theme values via CSS while maintaining\n * type-safe constants in TypeScript.\n *\n * All CSS variables use the unified prefix: --rpl- (react-panel-layout)\n * Users can override these via CSS variables (--rpl-*)\n *\n * @example\n * // In your CSS:\n * :root {\n * --rpl-color-primary: #ff0000;\n * }\n */\n\n// ========================================\n// CSS VARIABLE PREFIX\n// ========================================\n\n/**\n * Unified CSS variable prefix for all react-panel-layout variables\n * All theme variables use this prefix: --rpl-*\n */\nexport const CSS_VAR_PREFIX = 'rpl';\n\n// ========================================\n// COLORS\n// ========================================\n\n/**\n * Tab colors - used in TabBar component\n */\nexport const COLOR_TAB_FG = \"var(--rpl-color-tab-fg)\";\nexport const COLOR_TAB_ACTIVE_BG = \"var(--rpl-color-tab-active-bg)\";\nexport const COLOR_TABBAR_BG = \"var(--rpl-color-tabbar-bg)\";\n\n/**\n * Panel colors - used in panel layouts\n */\nexport const COLOR_PANEL_BORDER = \"var(--rpl-color-panel-border)\";\nexport const COLOR_PANEL_BG = \"var(--rpl-color-panel-bg)\";\n\n/**\n * Primary color - used for resize handles, highlights\n */\nexport const COLOR_PRIMARY = \"var(--rpl-color-primary)\";\nexport const COLOR_RESIZE_HANDLE_IDLE = \"var(--rpl-color-resize-handle-idle)\";\nexport const COLOR_RESIZE_HANDLE_HOVER = \"var(--rpl-color-resize-handle-hover)\";\nexport const COLOR_RESIZE_HANDLE_ACTIVE = \"var(--rpl-color-resize-handle-active)\";\n\n/**\n * Drop suggestion overlay colors\n */\nexport const COLOR_DROP_SUGGEST_BORDER = \"var(--rpl-color-drop-suggest-border)\";\nexport const COLOR_DROP_SUGGEST_BG = \"var(--rpl-color-drop-suggest-bg)\";\n\n/**\n * Tab drag overlay colors\n */\nexport const COLOR_TABDRAG_BG = \"var(--rpl-color-tabdrag-bg)\";\nexport const COLOR_TABDRAG_FG = \"var(--rpl-color-tabdrag-fg)\";\nexport const COLOR_TABDRAG_BORDER = \"var(--rpl-color-tabdrag-border)\";\nexport const COLOR_TABDRAG_SHADOW = \"var(--rpl-color-tabdrag-shadow)\";\n\n/**\n * Insert guide colors\n */\nexport const COLOR_INSERT_GUIDE = \"var(--rpl-color-insert-guide)\";\nexport const COLOR_INSERT_GUIDE_SHADOW = \"var(--rpl-color-insert-guide-shadow)\";\n\n/**\n * Node editor / floating panel colors\n * These are used by Drawer and FloatingPanelFrame components\n */\nexport const COLOR_NODE_EDITOR_SURFACE = \"var(--rpl-color-surface)\";\nexport const COLOR_NODE_EDITOR_SURFACE_2 = \"var(--rpl-color-surface-2)\";\nexport const COLOR_NODE_EDITOR_BORDER = \"var(--rpl-color-border)\";\nexport const COLOR_NODE_EDITOR_MUTED_FG = \"var(--rpl-color-muted-fg)\";\nexport const COLOR_NODE_EDITOR_CARD_SHADOW = \"var(--rpl-shadow-card)\";\n\n// ========================================\n// SIZING & SPACING\n// ========================================\n\n/**\n * Tab sizing\n */\nexport const SIZE_TAB_FONT = \"var(--rpl-size-tab-font)\";\nexport const SPACE_TAB_PADDING_Y = \"var(--rpl-space-tab-padding-y)\";\nexport const SPACE_TAB_PADDING_X = \"var(--rpl-space-tab-padding-x)\";\n\n/**\n * Tabbar spacing\n */\nexport const SPACE_TABBAR_GAP = \"var(--rpl-space-tabbar-gap)\";\nexport const SPACE_TABBAR_PADDING_Y = \"var(--rpl-space-tabbar-padding-y)\";\nexport const SPACE_TABBAR_PADDING_X = \"var(--rpl-space-tabbar-padding-x)\";\n\n/**\n * Border radius (decorative, using CSS variables)\n */\nexport const RADIUS_TAB = \"var(--rpl-radius-tab)\";\nexport const RADIUS_SUGGEST = \"var(--rpl-radius-suggest)\";\n\n/**\n * Border widths\n */\nexport const SIZE_SUGGEST_BORDER = \"var(--rpl-size-suggest-border)\";\n\n/**\n * Handle thicknesses\n * Note: SIZE_GRID_HANDLE_THICKNESS is kept as number for JavaScript calculations\n */\nexport const SIZE_GRID_HANDLE_THICKNESS = 4; // Used in GridTrackResizeHandle.tsx for offset calculation\nexport const SIZE_RESIZE_HANDLE_THICKNESS = \"var(--rpl-size-resize-handle-thickness)\";\nexport const SIZE_SPLIT_HANDLE_THICKNESS = \"var(--rpl-size-split-handle-thickness)\";\n\n/**\n * Drop suggest padding\n */\nexport const SPACE_DROP_SUGGEST_PADDING = \"var(--rpl-space-drop-suggest-padding)\";\n\n// ========================================\n// Z-INDEXES\n// ========================================\n\nexport const Z_OVERLAY = \"var(--rpl-z-overlay)\";\nexport const Z_TABDRAG_OVERLAY = \"var(--rpl-z-tabdrag-overlay)\";\nexport const Z_DIALOG_OVERLAY = \"var(--rpl-z-dialog-overlay)\";\n\n// ========================================\n// COMPONENT-SPECIFIC CONSTANTS\n// ========================================\n\n/**\n * Resize Handle\n */\nexport const RESIZE_HANDLE_THICKNESS = SIZE_RESIZE_HANDLE_THICKNESS;\nexport const RESIZE_HANDLE_Z_INDEX = \"var(--rpl-z-resize-handle)\";\n\n/**\n * Grid Track Resize Handle\n */\nexport const GRID_HANDLE_THICKNESS = SIZE_GRID_HANDLE_THICKNESS;\n\n/**\n * Grid Layer Resize Handles\n */\nexport const GRID_LAYER_CORNER_HIT_SIZE = \"var(--rpl-size-grid-layer-corner-hit)\";\nexport const GRID_LAYER_EDGE_HIT_THICKNESS = \"var(--rpl-size-grid-layer-edge-hit-thickness)\";\n\n/**\n * Drop Suggest Overlay\n */\nexport const DROP_SUGGEST_Z_INDEX = Z_OVERLAY;\nexport const DROP_SUGGEST_BORDER_WIDTH = SIZE_SUGGEST_BORDER;\nexport const DROP_SUGGEST_BORDER_RADIUS = RADIUS_SUGGEST;\nexport const DROP_SUGGEST_BORDER_COLOR = COLOR_DROP_SUGGEST_BORDER;\nexport const DROP_SUGGEST_BG_COLOR = COLOR_DROP_SUGGEST_BG;\nexport const DROP_SUGGEST_PADDING = SPACE_DROP_SUGGEST_PADDING;\nexport const DROP_SUGGEST_PADDING_PX = 6;\n\n/**\n * Tab Drag Overlay\n */\nexport const TAB_DRAG_OVERLAY_Z_INDEX = Z_TABDRAG_OVERLAY;\nexport const TAB_DRAG_PREVIEW_OFFSET_X = \"var(--rpl-space-tab-drag-preview-offset-x)\";\nexport const TAB_DRAG_PREVIEW_OFFSET_Y = \"var(--rpl-space-tab-drag-preview-offset-y)\";\nexport const TAB_DRAG_PREVIEW_BORDER_RADIUS = \"var(--rpl-radius-tab-drag-preview)\";\nexport const TAB_DRAG_PREVIEW_PADDING_Y = \"var(--rpl-space-tab-drag-preview-padding-y)\";\nexport const TAB_DRAG_PREVIEW_PADDING_X = \"var(--rpl-space-tab-drag-preview-padding-x)\";\nexport const TAB_DRAG_PREVIEW_FONT_SIZE = \"var(--rpl-size-tab-drag-preview-font)\";\nexport const TAB_DRAG_INSERT_GUIDE_WIDTH = \"var(--rpl-size-tab-drag-insert-guide-width)\";\nexport const TAB_DRAG_INSERT_GUIDE_BORDER_RADIUS = \"var(--rpl-radius-tab-drag-insert-guide)\";\nexport const TAB_DRAG_PREVIEW_BG_COLOR = COLOR_TABDRAG_BG;\nexport const TAB_DRAG_PREVIEW_FG_COLOR = COLOR_TABDRAG_FG;\nexport const TAB_DRAG_PREVIEW_BORDER_COLOR = COLOR_TABDRAG_BORDER;\nexport const TAB_DRAG_PREVIEW_SHADOW = COLOR_TABDRAG_SHADOW;\nexport const TAB_DRAG_INSERT_GUIDE_COLOR = COLOR_INSERT_GUIDE;\nexport const TAB_DRAG_INSERT_GUIDE_SHADOW = COLOR_INSERT_GUIDE_SHADOW;\n\n/**\n * Dialog Overlay\n */\nexport const DIALOG_OVERLAY_Z_INDEX = Z_DIALOG_OVERLAY;\n\n/**\n * Floating Panel Frame\n */\nexport const FLOATING_PANEL_BORDER_RADIUS = \"var(--rpl-radius-floating-panel)\";\nexport const FLOATING_PANEL_GAP = \"var(--rpl-space-floating-panel-gap)\";\nexport const FLOATING_PANEL_HEADER_PADDING_Y = \"var(--rpl-space-floating-panel-header-padding-y)\";\nexport const FLOATING_PANEL_HEADER_PADDING_X = \"var(--rpl-space-floating-panel-header-padding-x)\";\nexport const FLOATING_PANEL_CONTENT_PADDING = \"var(--rpl-space-floating-panel-content-padding)\";\nexport const FLOATING_PANEL_META_FONT_SIZE = \"var(--rpl-size-floating-panel-meta-font)\";\nexport const FLOATING_PANEL_CONTROLS_GAP = \"var(--rpl-space-floating-panel-controls-gap)\";\nexport const FLOATING_PANEL_SURFACE_COLOR = COLOR_NODE_EDITOR_SURFACE;\nexport const FLOATING_PANEL_SURFACE_2_COLOR = COLOR_NODE_EDITOR_SURFACE_2;\nexport const FLOATING_PANEL_BORDER_COLOR = COLOR_NODE_EDITOR_BORDER;\nexport const FLOATING_PANEL_MUTED_FG_COLOR = COLOR_NODE_EDITOR_MUTED_FG;\nexport const FLOATING_PANEL_SHADOW = COLOR_NODE_EDITOR_CARD_SHADOW;\n\n/**\n * Drawer\n */\nexport const DRAWER_HEADER_PADDING_Y = \"var(--rpl-space-drawer-header-padding-y)\";\nexport const DRAWER_HEADER_PADDING_X = \"var(--rpl-space-drawer-header-padding-x)\";\nexport const DRAWER_HEADER_GAP = \"var(--rpl-space-drawer-header-gap)\";\nexport const DRAWER_CONTENT_PADDING = \"var(--rpl-space-drawer-content-padding)\";\nexport const DRAWER_CLOSE_BUTTON_FONT_SIZE = \"var(--rpl-size-drawer-close-button-font)\";\nexport const DRAWER_SURFACE_COLOR = COLOR_NODE_EDITOR_SURFACE;\nexport const DRAWER_BORDER_COLOR = COLOR_NODE_EDITOR_BORDER;\nexport const DRAWER_SHADOW = COLOR_NODE_EDITOR_CARD_SHADOW;\n\n/**\n * Split Handles\n */\nexport const SPLIT_HANDLE_THICKNESS = SIZE_SPLIT_HANDLE_THICKNESS;\n\n/**\n * HorizontalDivider\n */\nexport const HORIZONTAL_DIVIDER_WIDTH = \"var(--rpl-size-horizontal-divider-width)\";\nexport const HORIZONTAL_DIVIDER_HIT_AREA_OFFSET = \"var(--rpl-space-horizontal-divider-hit-area-offset)\";\n"],"names":["CSS_VAR_PREFIX","COLOR_RESIZE_HANDLE_IDLE","COLOR_RESIZE_HANDLE_HOVER","COLOR_RESIZE_HANDLE_ACTIVE","COLOR_DROP_SUGGEST_BORDER","COLOR_DROP_SUGGEST_BG","COLOR_INSERT_GUIDE","COLOR_INSERT_GUIDE_SHADOW","COLOR_NODE_EDITOR_SURFACE","COLOR_NODE_EDITOR_SURFACE_2","COLOR_NODE_EDITOR_BORDER","COLOR_NODE_EDITOR_MUTED_FG","COLOR_NODE_EDITOR_CARD_SHADOW","RADIUS_SUGGEST","SIZE_SUGGEST_BORDER","SIZE_RESIZE_HANDLE_THICKNESS","SIZE_SPLIT_HANDLE_THICKNESS","Z_OVERLAY","Z_TABDRAG_OVERLAY","RESIZE_HANDLE_THICKNESS","RESIZE_HANDLE_Z_INDEX","GRID_HANDLE_THICKNESS","GRID_LAYER_CORNER_HIT_SIZE","GRID_LAYER_EDGE_HIT_THICKNESS","DROP_SUGGEST_Z_INDEX","DROP_SUGGEST_BORDER_WIDTH","DROP_SUGGEST_BORDER_RADIUS","DROP_SUGGEST_BORDER_COLOR","DROP_SUGGEST_BG_COLOR","DROP_SUGGEST_PADDING_PX","TAB_DRAG_OVERLAY_Z_INDEX","TAB_DRAG_PREVIEW_OFFSET_X","TAB_DRAG_PREVIEW_OFFSET_Y","TAB_DRAG_INSERT_GUIDE_WIDTH","TAB_DRAG_INSERT_GUIDE_BORDER_RADIUS","TAB_DRAG_INSERT_GUIDE_COLOR","TAB_DRAG_INSERT_GUIDE_SHADOW","FLOATING_PANEL_BORDER_RADIUS","FLOATING_PANEL_GAP","FLOATING_PANEL_HEADER_PADDING_Y","FLOATING_PANEL_HEADER_PADDING_X","FLOATING_PANEL_CONTENT_PADDING","FLOATING_PANEL_META_FONT_SIZE","FLOATING_PANEL_CONTROLS_GAP","FLOATING_PANEL_SURFACE_COLOR","FLOATING_PANEL_SURFACE_2_COLOR","FLOATING_PANEL_BORDER_COLOR","FLOATING_PANEL_MUTED_FG_COLOR","FLOATING_PANEL_SHADOW","DRAWER_HEADER_PADDING_Y","DRAWER_HEADER_PADDING_X","DRAWER_HEADER_GAP","DRAWER_CONTENT_PADDING","DRAWER_CLOSE_BUTTON_FONT_SIZE","DRAWER_SURFACE_COLOR","DRAWER_BORDER_COLOR","DRAWER_SHADOW","SPLIT_HANDLE_THICKNESS","HORIZONTAL_DIVIDER_WIDTH"],"mappings":"AAyBO,MAAMA,IAAiB,OAuBjBC,IAA2B,uCAC3BC,IAA4B,wCAC5BC,IAA6B,yCAK7BC,IAA4B,wCAC5BC,IAAwB,oCAaxBC,IAAqB,iCACrBC,IAA4B,wCAM5BC,IAA4B,4BAC5BC,IAA8B,8BAC9BC,IAA2B,2BAC3BC,IAA6B,6BAC7BC,IAAgC,0BAwBhCC,IAAiB,6BAKjBC,IAAsB;AAO5B,MAAMC,IAA+B,2CAC/BC,IAA8B,0CAW9BC,IAAY,wBACZC,IAAoB,gCAUpBC,IAA0BJ,GAC1BK,IAAwB,8BAKxBC,IAAwB,GAKxBC,IAA6B,yCAC7BC,IAAgC,iDAKhCC,IAAuBP,GACvBQ,IAA4BX,GAC5BY,IAA6Bb,GAC7Bc,IAA4BvB,GAC5BwB,IAAwBvB,GAExBwB,IAA0B,GAK1BC,IAA2BZ,GAC3Ba,IAA4B,8CAC5BC,IAA4B,8CAK5BC,IAA8B,+CAC9BC,IAAsC,2CAKtCC,IAA8B7B,GAC9B8B,IAA+B7B,GAU/B8B,IAA+B,oCAC/BC,IAAqB,uCACrBC,IAAkC,oDAClCC,IAAkC,oDAClCC,IAAiC,mDACjCC,IAAgC,4CAChCC,IAA8B,gDAC9BC,IAA+BpC,GAC/BqC,IAAiCpC,GACjCqC,IAA8BpC,GAC9BqC,IAAgCpC,GAChCqC,IAAwBpC,GAKxBqC,IAA0B,4CAC1BC,IAA0B,4CAC1BC,IAAoB,sCACpBC,IAAyB,2CACzBC,IAAgC,4CAChCC,KAAuB9C,GACvB+C,KAAsB7C,GACtB8C,KAAgB5C,GAKhB6C,KAAyBzC,GAKzB0C,KAA2B;"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Unified public type definitions for the panel layout system.
|
|
3
|
+
* Single source of truth for grid, window, and drawer related types.
|
|
4
|
+
*/
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
export type Position = {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
};
|
|
10
|
+
export type WindowOffset = number | string;
|
|
11
|
+
export type WindowPosition = {
|
|
12
|
+
top?: WindowOffset;
|
|
13
|
+
right?: WindowOffset;
|
|
14
|
+
bottom?: WindowOffset;
|
|
15
|
+
left?: WindowOffset;
|
|
16
|
+
};
|
|
17
|
+
export type WindowSize = {
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
};
|
|
21
|
+
export type WindowBounds = {
|
|
22
|
+
position?: WindowPosition;
|
|
23
|
+
size: WindowSize;
|
|
24
|
+
};
|
|
25
|
+
export type WindowConstraints = {
|
|
26
|
+
minWidth?: number;
|
|
27
|
+
maxWidth?: number;
|
|
28
|
+
minHeight?: number;
|
|
29
|
+
maxHeight?: number;
|
|
30
|
+
};
|
|
31
|
+
export type PopupWindowFeatures = {
|
|
32
|
+
toolbar?: boolean;
|
|
33
|
+
menubar?: boolean;
|
|
34
|
+
location?: boolean;
|
|
35
|
+
status?: boolean;
|
|
36
|
+
resizable?: boolean;
|
|
37
|
+
scrollbars?: boolean;
|
|
38
|
+
};
|
|
39
|
+
export type PopupWindowOptions = {
|
|
40
|
+
name?: string;
|
|
41
|
+
features?: PopupWindowFeatures;
|
|
42
|
+
focus?: boolean;
|
|
43
|
+
closeOnUnmount?: boolean;
|
|
44
|
+
createWindow?: (config: PopupWindowFactoryConfig) => Window | null;
|
|
45
|
+
};
|
|
46
|
+
export type PopupWindowFactoryConfig = {
|
|
47
|
+
name: string;
|
|
48
|
+
features: string;
|
|
49
|
+
bounds: WindowBounds;
|
|
50
|
+
};
|
|
51
|
+
export type FloatingWindowMode = "embedded" | "popup";
|
|
52
|
+
export type FloatingWindowConfig = {
|
|
53
|
+
mode?: FloatingWindowMode;
|
|
54
|
+
draggable?: boolean;
|
|
55
|
+
resizable?: boolean;
|
|
56
|
+
constraints?: WindowConstraints;
|
|
57
|
+
onMove?: (position: WindowPosition) => void;
|
|
58
|
+
onResize?: (size: WindowSize) => void;
|
|
59
|
+
popup?: PopupWindowOptions;
|
|
60
|
+
};
|
|
61
|
+
export type DrawerBehavior = {
|
|
62
|
+
/** Optional controlled state */
|
|
63
|
+
defaultOpen?: boolean;
|
|
64
|
+
open?: boolean;
|
|
65
|
+
/** Whether clicking backdrop dismisses the drawer */
|
|
66
|
+
dismissible?: boolean;
|
|
67
|
+
onStateChange?: (open: boolean) => void;
|
|
68
|
+
header?: {
|
|
69
|
+
title?: string;
|
|
70
|
+
showCloseButton?: boolean;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
export type GridTrack = {
|
|
74
|
+
size: string;
|
|
75
|
+
resizable?: boolean;
|
|
76
|
+
minSize?: number;
|
|
77
|
+
maxSize?: number;
|
|
78
|
+
};
|
|
79
|
+
export type PanelLayoutConfig = {
|
|
80
|
+
areas: string[][];
|
|
81
|
+
rows: GridTrack[];
|
|
82
|
+
columns: GridTrack[];
|
|
83
|
+
gap?: string;
|
|
84
|
+
style?: React.CSSProperties;
|
|
85
|
+
};
|
|
86
|
+
export type LayerPositionMode = "grid" | "absolute" | "relative" | "fixed";
|
|
87
|
+
export type LayerDefinition = {
|
|
88
|
+
id: string;
|
|
89
|
+
component: React.ReactNode;
|
|
90
|
+
visible?: boolean;
|
|
91
|
+
gridArea?: string;
|
|
92
|
+
gridRow?: string;
|
|
93
|
+
gridColumn?: string;
|
|
94
|
+
/**
|
|
95
|
+
* Positioning mode: when omitted, derived automatically.
|
|
96
|
+
* If `floating` is present, behaves as absolute (embedded) or relative (popup).
|
|
97
|
+
*/
|
|
98
|
+
positionMode?: LayerPositionMode;
|
|
99
|
+
/** Absolute/fixed offsets when positionMode !== 'grid'. */
|
|
100
|
+
position?: WindowPosition;
|
|
101
|
+
zIndex?: number;
|
|
102
|
+
width?: string | number;
|
|
103
|
+
height?: string | number;
|
|
104
|
+
pointerEvents?: boolean | "auto" | "none";
|
|
105
|
+
/** Optional backdrop style (used by DrawerBehaviour) */
|
|
106
|
+
backdropStyle?: React.CSSProperties;
|
|
107
|
+
drawer?: DrawerBehavior;
|
|
108
|
+
floating?: FloatingWindowConfig;
|
|
109
|
+
style?: React.CSSProperties;
|
|
110
|
+
};
|
|
111
|
+
export type PanelLayoutProps = {
|
|
112
|
+
config: PanelLayoutConfig;
|
|
113
|
+
layers: LayerDefinition[];
|
|
114
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file CSSMatrix - Immutable 4x4 matrix for CSS 3D transforms
|
|
3
|
+
*
|
|
4
|
+
* Each operation returns a new instance, preserving the original matrix.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* const mtrx = matrix().translate(0, 10);
|
|
8
|
+
* const a = mtrx.rotateX(Math.PI / 2);
|
|
9
|
+
* const b = mtrx.rotateY(Math.PI);
|
|
10
|
+
* // a and b are independent transformations from mtrx
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Matrix type with transformation methods
|
|
14
|
+
*/
|
|
15
|
+
export type CSSMatrix = {
|
|
16
|
+
readonly translate: (x?: number, y?: number, z?: number) => CSSMatrix;
|
|
17
|
+
readonly translate3d: (x: number, y: number, z: number) => CSSMatrix;
|
|
18
|
+
readonly translateX: (x: number) => CSSMatrix;
|
|
19
|
+
readonly translateY: (y: number) => CSSMatrix;
|
|
20
|
+
readonly translateZ: (z: number) => CSSMatrix;
|
|
21
|
+
readonly scale: (x?: number, y?: number, z?: number) => CSSMatrix;
|
|
22
|
+
readonly scale3d: (x: number, y: number, z: number) => CSSMatrix;
|
|
23
|
+
readonly scaleX: (x: number) => CSSMatrix;
|
|
24
|
+
readonly scaleY: (y: number) => CSSMatrix;
|
|
25
|
+
readonly scaleZ: (z: number) => CSSMatrix;
|
|
26
|
+
readonly rotateX: (angle: number) => CSSMatrix;
|
|
27
|
+
readonly rotateY: (angle: number) => CSSMatrix;
|
|
28
|
+
readonly rotateZ: (angle: number) => CSSMatrix;
|
|
29
|
+
readonly rotate: (angle: number, x: number, y: number, z: number) => CSSMatrix;
|
|
30
|
+
readonly rotate3d: (x: number, y: number, z: number, angle: number) => CSSMatrix;
|
|
31
|
+
readonly skew: (angleX?: number, angleY?: number) => CSSMatrix;
|
|
32
|
+
readonly skewX: (angle: number) => CSSMatrix;
|
|
33
|
+
readonly skewY: (angle: number) => CSSMatrix;
|
|
34
|
+
readonly perspective: (distance: number) => CSSMatrix;
|
|
35
|
+
readonly toCSS: () => string;
|
|
36
|
+
readonly toArray: () => readonly number[];
|
|
37
|
+
readonly toString: () => string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Factory function to create a new identity matrix
|
|
41
|
+
*/
|
|
42
|
+
export declare const matrix: () => CSSMatrix;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Dialog positioning utilities
|
|
3
|
+
*/
|
|
4
|
+
export type ViewportInfo = {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Get viewport dimensions
|
|
10
|
+
*/
|
|
11
|
+
export declare const getViewportInfo: () => ViewportInfo;
|
|
12
|
+
/**
|
|
13
|
+
* Calculate context menu position to keep it within viewport
|
|
14
|
+
*/
|
|
15
|
+
export declare const calculateContextMenuPosition: (anchorX: number, anchorY: number, menuWidth: number, menuHeight: number, viewport: ViewportInfo) => {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Dialog polyfill for browsers that don't support <dialog> element natively
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Ensure dialog polyfill is loaded if needed
|
|
6
|
+
* This is a placeholder - in production you might want to use a real polyfill like dialog-polyfill
|
|
7
|
+
*/
|
|
8
|
+
export declare const ensureDialogPolyfill: () => void;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Utilities for defining typed action creators and reducer handler maps without external dependencies.
|
|
3
|
+
*/
|
|
4
|
+
export type AnyAction = {
|
|
5
|
+
type: string;
|
|
6
|
+
};
|
|
7
|
+
export type AnyActionCreator = {
|
|
8
|
+
(...args: any[]): AnyAction;
|
|
9
|
+
readonly type: string;
|
|
10
|
+
};
|
|
11
|
+
type PayloadCreator = (...args: any[]) => any;
|
|
12
|
+
type ActionFromPayload<Type extends string, Creator extends PayloadCreator> = ReturnType<Creator> extends undefined | void ? {
|
|
13
|
+
type: Type;
|
|
14
|
+
} : {
|
|
15
|
+
type: Type;
|
|
16
|
+
payload: Exclude<ReturnType<Creator>, undefined>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Creates a typed action creator with an attached literal `type` property.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createAction<Type extends string>(type: Type): (() => {
|
|
22
|
+
type: Type;
|
|
23
|
+
}) & {
|
|
24
|
+
readonly type: Type;
|
|
25
|
+
};
|
|
26
|
+
export declare function createAction<Type extends string, Creator extends PayloadCreator>(type: Type, payloadCreator: Creator): ((...args: Parameters<Creator>) => ActionFromPayload<Type, Creator>) & {
|
|
27
|
+
readonly type: Type;
|
|
28
|
+
};
|
|
29
|
+
export type ActionCreatorsMap = Record<string, AnyActionCreator>;
|
|
30
|
+
export type ActionUnion<Creators extends ActionCreatorsMap> = ReturnType<Creators[keyof Creators]>;
|
|
31
|
+
export type CaseReducer<State, Action extends AnyAction, Extra> = (state: State, action: Action, extra: Extra) => State;
|
|
32
|
+
export type BoundActionCreators<Creators extends ActionCreatorsMap> = {
|
|
33
|
+
[Key in keyof Creators]: (...args: Parameters<Creators[Key]>) => ReturnType<Creators[Key]>;
|
|
34
|
+
};
|
|
35
|
+
export declare const bindActionCreators: <Creators extends ActionCreatorsMap>(creators: Creators, dispatch: (action: ActionUnion<Creators>) => unknown) => BoundActionCreators<Creators>;
|
|
36
|
+
export declare const createActionHandlerMap: <State, Creators extends ActionCreatorsMap, Extra = undefined>(creators: Creators, handlers: { [Key in keyof Creators]?: CaseReducer<State, ReturnType<Creators[Key]>, Extra>; }) => Record<string, CaseReducer<State, ReturnType<Creators[keyof Creators]>, Extra>>;
|
|
37
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "react-panel-layout",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.cjs",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"packageManager": "bun@1.3.1",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/trkbt10/react-panel-layout.git"
|
|
12
|
+
},
|
|
13
|
+
"sideEffects": [
|
|
14
|
+
"**/*.css"
|
|
15
|
+
],
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js",
|
|
20
|
+
"require": "./dist/index.cjs"
|
|
21
|
+
},
|
|
22
|
+
"./config": {
|
|
23
|
+
"types": "./dist/config/index.d.ts",
|
|
24
|
+
"import": "./dist/config.js",
|
|
25
|
+
"require": "./dist/config.cjs"
|
|
26
|
+
},
|
|
27
|
+
"./floating": {
|
|
28
|
+
"types": "./dist/floating/index.d.ts",
|
|
29
|
+
"import": "./dist/floating.js",
|
|
30
|
+
"require": "./dist/floating.cjs"
|
|
31
|
+
},
|
|
32
|
+
"./package.json": "./package.json"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist",
|
|
36
|
+
"README.md"
|
|
37
|
+
],
|
|
38
|
+
"scripts": {
|
|
39
|
+
"dev": "vite --config vite.demo.config.ts",
|
|
40
|
+
"build": "vite build --config vite.config.ts && tsc -p tsconfig.build.json",
|
|
41
|
+
"build:demo": "vite build --config vite.demo.config.ts",
|
|
42
|
+
"preview": "vite preview --config vite.demo.config.ts --outDir dist-demo",
|
|
43
|
+
"clean": "rimraf dist dist-demo",
|
|
44
|
+
"lint": "eslint ./src",
|
|
45
|
+
"format": "prettier --write ./src && eslint ./src --fix",
|
|
46
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
47
|
+
"test:cov": "vitest run --coverage",
|
|
48
|
+
"test": "vitest --run"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
52
|
+
"@testing-library/react": "^16.3.0",
|
|
53
|
+
"@types/node": "^24.9.1",
|
|
54
|
+
"@types/react": "^19.2.2",
|
|
55
|
+
"@types/react-dom": "^19.2.2",
|
|
56
|
+
"@typescript-eslint/eslint-plugin": "^8.46.2",
|
|
57
|
+
"@typescript-eslint/parser": "^8.46.2",
|
|
58
|
+
"@vitejs/plugin-react": "^5.1.0",
|
|
59
|
+
"@vitest/coverage-v8": "^4.0.3",
|
|
60
|
+
"eslint": "^9.38.0",
|
|
61
|
+
"eslint-config-prettier": "^10.1.8",
|
|
62
|
+
"eslint-plugin-eslint-comments": "^3.2.0",
|
|
63
|
+
"eslint-plugin-import": "^2.32.0",
|
|
64
|
+
"eslint-plugin-jsdoc": "^61.1.9",
|
|
65
|
+
"jsdom": "^27.0.1",
|
|
66
|
+
"prettier": "^3.6.2",
|
|
67
|
+
"react": "^19.2.0",
|
|
68
|
+
"react-dom": "^19.2.0",
|
|
69
|
+
"react-icons": "^5.5.0",
|
|
70
|
+
"react-router": "^7.9.4",
|
|
71
|
+
"rimraf": "^6.0.1",
|
|
72
|
+
"typescript": "^5.9.3",
|
|
73
|
+
"typescript-eslint": "^8.46.2",
|
|
74
|
+
"vite": "^7.1.12",
|
|
75
|
+
"vitest": "^4.0.3"
|
|
76
|
+
},
|
|
77
|
+
"dependencies": {}
|
|
78
|
+
}
|