react-split-pane 2.0.3 → 3.0.1

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.
Files changed (54) hide show
  1. package/README.md +451 -144
  2. package/dist/components/Divider.d.ts +31 -0
  3. package/dist/components/Divider.d.ts.map +1 -0
  4. package/dist/components/Pane.d.ts +27 -0
  5. package/dist/components/Pane.d.ts.map +1 -0
  6. package/dist/components/SplitPane.d.ts +29 -0
  7. package/dist/components/SplitPane.d.ts.map +1 -0
  8. package/dist/hooks/useKeyboardResize.d.ts +34 -0
  9. package/dist/hooks/useKeyboardResize.d.ts.map +1 -0
  10. package/dist/hooks/usePaneSize.d.ts +16 -0
  11. package/dist/hooks/usePaneSize.d.ts.map +1 -0
  12. package/dist/hooks/useResizer.d.ts +44 -0
  13. package/dist/hooks/useResizer.d.ts.map +1 -0
  14. package/dist/index.cjs +2 -0
  15. package/dist/index.cjs.map +1 -0
  16. package/dist/index.d.ts +8 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/keyboard.cjs +2 -0
  21. package/dist/keyboard.cjs.map +1 -0
  22. package/dist/keyboard.d.ts +3 -0
  23. package/dist/keyboard.d.ts.map +1 -0
  24. package/dist/keyboard.js +2 -0
  25. package/dist/keyboard.js.map +1 -0
  26. package/dist/persistence.cjs +2 -0
  27. package/dist/persistence.cjs.map +1 -0
  28. package/dist/persistence.d.ts +24 -0
  29. package/dist/persistence.d.ts.map +1 -0
  30. package/dist/persistence.js +2 -0
  31. package/dist/persistence.js.map +1 -0
  32. package/dist/test/setup.d.ts +2 -0
  33. package/dist/test/setup.d.ts.map +1 -0
  34. package/dist/types/index.d.ts +89 -0
  35. package/dist/types/index.d.ts.map +1 -0
  36. package/dist/utils/accessibility.d.ts +17 -0
  37. package/dist/utils/accessibility.d.ts.map +1 -0
  38. package/dist/utils/calculations.d.ts +29 -0
  39. package/dist/utils/calculations.d.ts.map +1 -0
  40. package/package.json +82 -67
  41. package/styles.css +106 -0
  42. package/.editorconfig +0 -6
  43. package/.storybook/addons.js +0 -2
  44. package/.storybook/config.js +0 -9
  45. package/.storybook/preview-head.html +0 -33
  46. package/.travis.yml +0 -10
  47. package/index.d.ts +0 -53
  48. package/index.js +0 -3
  49. package/lcov.info +0 -700
  50. package/lib/Pane.js +0 -130
  51. package/lib/Resizer.js +0 -105
  52. package/lib/SplitPane.js +0 -512
  53. package/stories/index.stories.js +0 -40
  54. package/tsconfig.json +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pane.d.ts","sourceRoot":"","sources":["../../src/components/Pane.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI1C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,sGA0ChB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { SplitPaneProps } from '../types';
2
+ /**
3
+ * A flexible split pane component that allows resizable pane layouts.
4
+ *
5
+ * Supports horizontal (side-by-side) and vertical (stacked) layouts with
6
+ * mouse, touch, and keyboard interactions. Fully accessible with ARIA attributes.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * // Basic horizontal split
11
+ * <SplitPane direction="horizontal">
12
+ * <Pane minSize="200px" defaultSize="300px">
13
+ * <Sidebar />
14
+ * </Pane>
15
+ * <Pane>
16
+ * <MainContent />
17
+ * </Pane>
18
+ * </SplitPane>
19
+ *
20
+ * // Controlled mode with state
21
+ * const [sizes, setSizes] = useState([300, 500]);
22
+ * <SplitPane onResize={setSizes}>
23
+ * <Pane size={sizes[0]}>Left</Pane>
24
+ * <Pane size={sizes[1]}>Right</Pane>
25
+ * </SplitPane>
26
+ * ```
27
+ */
28
+ export declare function SplitPane(props: SplitPaneProps): import("react/jsx-runtime").JSX.Element;
29
+ //# sourceMappingURL=SplitPane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitPane.d.ts","sourceRoot":"","sources":["../../src/components/SplitPane.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAA0B,MAAM,UAAU,CAAC;AAUvE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,2CA+R9C"}
@@ -0,0 +1,34 @@
1
+ import type { Direction, ResizeEvent } from '../types';
2
+ /**
3
+ * Options for the useKeyboardResize hook.
4
+ */
5
+ export interface UseKeyboardResizeOptions {
6
+ direction: Direction;
7
+ sizes: number[];
8
+ minSizes: number[];
9
+ maxSizes: number[];
10
+ step?: number | undefined;
11
+ largeStep?: number | undefined;
12
+ onResize?: ((sizes: number[], event: ResizeEvent) => void) | undefined;
13
+ onResizeEnd?: ((sizes: number[], event: ResizeEvent) => void) | undefined;
14
+ }
15
+ /**
16
+ * Hook that handles keyboard-based resizing of panes.
17
+ *
18
+ * This is a low-level hook used internally by SplitPane. For most use cases,
19
+ * you should use the SplitPane component directly.
20
+ *
21
+ * Supported keys:
22
+ * - Arrow keys: Resize by step (default 10px)
23
+ * - Shift + Arrow: Resize by large step (default 50px)
24
+ * - Home: Minimize the left/top pane to its minimum size
25
+ * - End: Maximize the left/top pane to its maximum size
26
+ * - Escape: Restore pane sizes to what they were when keyboard interaction started
27
+ *
28
+ * @param options - Configuration options for keyboard resize
29
+ * @returns Handler for keyboard events
30
+ */
31
+ export declare function useKeyboardResize(options: UseKeyboardResizeOptions): {
32
+ handleKeyDown: (dividerIndex: number) => (e: React.KeyboardEvent) => void;
33
+ };
34
+ //# sourceMappingURL=useKeyboardResize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyboardResize.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeyboardResize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIvD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACvE,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC3E;AAKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB;kCAgBhD,MAAM,SAAS,KAAK,CAAC,aAAa;EAiKpD"}
@@ -0,0 +1,16 @@
1
+ import type { Size } from '../types';
2
+ export interface UsePaneSizeOptions {
3
+ defaultSize?: Size;
4
+ size?: Size;
5
+ minSize?: Size;
6
+ maxSize?: Size;
7
+ containerSize: number;
8
+ }
9
+ export interface UsePaneSizeResult {
10
+ pixelSize: number;
11
+ minPixelSize: number;
12
+ maxPixelSize: number;
13
+ isControlled: boolean;
14
+ }
15
+ export declare function usePaneSize(options: UsePaneSizeOptions): UsePaneSizeResult;
16
+ //# sourceMappingURL=usePaneSize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePaneSize.d.ts","sourceRoot":"","sources":["../../src/hooks/usePaneSize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAGrC,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CA0C1E"}
@@ -0,0 +1,44 @@
1
+ import type { Direction, ResizeEvent } from '../types';
2
+ /**
3
+ * Options for the useResizer hook.
4
+ */
5
+ export interface UseResizerOptions {
6
+ direction: Direction;
7
+ sizes: number[];
8
+ minSizes: number[];
9
+ maxSizes: number[];
10
+ snapPoints?: number[] | undefined;
11
+ snapTolerance?: number | undefined;
12
+ step?: number | undefined;
13
+ onResizeStart?: ((event: ResizeEvent) => void) | undefined;
14
+ onResize?: ((sizes: number[], event: ResizeEvent) => void) | undefined;
15
+ onResizeEnd?: ((sizes: number[], event: ResizeEvent) => void) | undefined;
16
+ }
17
+ /**
18
+ * Return type for the useResizer hook.
19
+ */
20
+ export interface UseResizerResult {
21
+ isDragging: boolean;
22
+ currentSizes: number[];
23
+ handleMouseDown: (dividerIndex: number) => (e: React.MouseEvent) => void;
24
+ handleTouchStart: (dividerIndex: number) => (e: React.TouchEvent) => void;
25
+ handleTouchEnd: (e: React.TouchEvent) => void;
26
+ }
27
+ /**
28
+ * Hook that handles mouse and touch-based resizing of panes.
29
+ *
30
+ * This is a low-level hook used internally by SplitPane. For most use cases,
31
+ * you should use the SplitPane component directly.
32
+ *
33
+ * Features:
34
+ * - Mouse drag support
35
+ * - Touch support for mobile
36
+ * - RAF-throttled updates for smooth performance
37
+ * - Snap points support
38
+ * - Step-based resizing
39
+ *
40
+ * @param options - Configuration options for the resizer
41
+ * @returns Handlers and state for resize interactions
42
+ */
43
+ export declare function useResizer(options: UseResizerOptions): UseResizerResult;
44
+ //# sourceMappingURL=useResizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResizer.d.ts","sourceRoot":"","sources":["../../src/hooks/useResizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAOvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACvE,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC1E,cAAc,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAgPvE"}
package/dist/index.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react/jsx-runtime"),t=require("react");const n="split-pane-pane",r=t.forwardRef(function(t,r){const{className:i,style:o,children:s,defaultSize:a,size:u,minSize:c,maxSize:l,...d}=t,m={position:"relative",outline:"none",overflow:"auto",flex:"none",...o},h=[n,i].filter(Boolean).join(" ");return e.jsx("div",{ref:r,className:h,style:m,"data-pane":"true",...d,children:s})});function i(e,t="polite"){const n=document.createElement("div");n.setAttribute("role","status"),n.setAttribute("aria-live",t),n.setAttribute("aria-atomic","true"),n.style.position="absolute",n.style.left="-10000px",n.style.width="1px",n.style.height="1px",n.style.overflow="hidden",n.textContent=e,document.body.appendChild(n),setTimeout(()=>{document.body.removeChild(n)},1e3)}function o(e){return 1e3>e?Math.round(e)+" pixels":Math.round(e/10)/100+" thousand pixels"}const s="split-pane-divider";function a(t){const{direction:n,index:r,isDragging:i,disabled:o,onMouseDown:a,onTouchStart:u,onTouchEnd:c,onKeyDown:l,className:d,style:m,currentSize:h,minSize:p,maxSize:f,children:z}=t,v="horizontal"===n?"vertical":"horizontal",S={...{flex:"none",position:"relative",userSelect:"none",touchAction:"none",..."horizontal"===n?{width:"11px",cursor:o?"default":"col-resize",marginLeft:"-5px",marginRight:"-5px"}:{height:"11px",cursor:o?"default":"row-resize",marginTop:"-5px",marginBottom:"-5px"},...i&&{cursor:"horizontal"===n?"col-resize":"row-resize"}},...m},x=[s,n,d].filter(Boolean).join(" "),y=function(e,t){return`${"horizontal"===t?"vertical":"horizontal"} divider ${e+1}`}(r,n),g=function(e){return`Use ${"horizontal"===e?"left and right arrow keys":"up and down arrow keys"} to resize. Hold Shift for larger steps. Press Home or End to minimize or maximize.`}(n);return e.jsx("div",{role:"separator","aria-orientation":v,"aria-label":y,"aria-valuenow":h,"aria-valuemin":p,"aria-valuemax":void 0===f||f===1/0?void 0:f,"aria-description":g,tabIndex:o?-1:0,className:x,style:S,onMouseDown:o?void 0:a,onTouchStart:o?void 0:u,onTouchEnd:o?void 0:c,onKeyDown:o?void 0:l,"data-divider-index":r,children:z})}function u(e,t){if("number"==typeof e)return e;if(e.endsWith("%")){return parseFloat(e)/100*t}if(e.endsWith("px"))return parseFloat(e);const n=parseFloat(e);return isNaN(n)?0:n}function c(e,t,n){return Math.min(Math.max(e,t),n)}function l(e,t,n,r,i){const o=[...e],s=e[t]??0,a=e[t+1]??0,u=r[t+1]??0,l=i[t+1]??1/0;let d=c(s+n,r[t]??0,i[t]??1/0),m=c(a-n,u,l);const h=a-m,p=Math.min(Math.abs(d-s),Math.abs(h));return n>0?(d=s+p,m=a-p):(d=s-p,m=a+p),o[t]=d,o[t+1]=m,o}function d(e){const{direction:n,sizes:r,minSizes:i,maxSizes:o,snapPoints:s=[],snapTolerance:a=10,step:u,onResizeStart:c,onResize:d,onResizeEnd:m}=e,[h,p]=t.useState(!1),[f,z]=t.useState(r),v=t.useRef(null),S=t.useRef(null),x=t.useRef(!0),y=t.useRef(f);y.current=f;const g=t.useRef(m);g.current=m,h||r===f||JSON.stringify(r)===JSON.stringify(f)||z(r),t.useEffect(()=>(x.current=!0,()=>{x.current=!1,S.current&&(cancelAnimationFrame(S.current),S.current=null)}),[]);const w=t.useCallback((e,t)=>{if(!v.current||!x.current)return;const{dividerIndex:r,startPosition:c,startSizes:m}=v.current;let h=("horizontal"===n?e:t)-c;u&&(h=function(e,t){return t>0?Math.round(e/t)*t:e}(h,u));let p=l(m,r,h,i,o);s.length>0&&(p=p.map(e=>function(e,t,n){for(const r of t)if(n>=Math.abs(e-r))return r;return e}(e,s,a))),z(p),d&&d(p,{sizes:p,source:"mouse"})},[n,u,i,o,s,a,d]),E=t.useCallback(e=>{e.preventDefault(),S.current||(S.current=requestAnimationFrame(()=>{S.current=null,x.current&&w(e.clientX,e.clientY)}))},[w]),b=t.useCallback(e=>{e.preventDefault(),S.current||(S.current=requestAnimationFrame(()=>{if(S.current=null,x.current){const t=e.touches[0];t&&w(t.clientX,t.clientY)}}))},[w]),R=t.useCallback(()=>{if(!v.current)return;S.current&&(cancelAnimationFrame(S.current),S.current=null),p(!1);const e=y.current,t=g.current;t&&t(e,{sizes:e,source:"mouse"}),v.current=null},[]),k=t.useCallback(e=>t=>{t.preventDefault();v.current={dividerIndex:e,startPosition:"horizontal"===n?t.clientX:t.clientY,startSizes:f},p(!0),c&&c({sizes:f,source:"mouse",originalEvent:t.nativeEvent})},[n,f,c]),D=t.useCallback(e=>t=>{const r=t.touches[0];if(!r)return;v.current={dividerIndex:e,startPosition:"horizontal"===n?r.clientX:r.clientY,startSizes:f},p(!0),c&&c({sizes:f,source:"touch",originalEvent:t.nativeEvent})},[n,f,c]),A=t.useCallback(e=>{e.preventDefault(),R()},[R]);return t.useEffect(()=>{if(h)return document.addEventListener("mousemove",E),document.addEventListener("mouseup",R),document.addEventListener("touchmove",b,{passive:!1}),document.addEventListener("touchend",R),()=>{document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",R),document.removeEventListener("touchmove",b),document.removeEventListener("touchend",R)}},[h,E,R,b]),{isDragging:h,currentSizes:f,handleMouseDown:k,handleTouchStart:D,handleTouchEnd:A}}const m=10,h=50;function p(e){const{direction:n,sizes:r,minSizes:s,maxSizes:a,step:u=m,largeStep:d=h,onResize:p,onResizeEnd:f}=e,z=t.useRef(null);return{handleKeyDown:t.useCallback(e=>t=>{if(!("horizontal"===n?["ArrowLeft","ArrowRight"]:["ArrowUp","ArrowDown"]).includes(t.key)&&"Home"!==t.key&&"End"!==t.key&&"Escape"!==t.key)return;if(t.preventDefault(),"Escape"===t.key){if(z.current){const e=z.current;z.current=null,p&&p(e,{sizes:e,source:"keyboard",originalEvent:t.nativeEvent}),f&&f(e,{sizes:e,source:"keyboard",originalEvent:t.nativeEvent}),i("Pane sizes restored")}return}null===z.current&&(z.current=[...r]);let m=0,h=[...r],v="arrow";switch(t.key){case"ArrowLeft":case"ArrowUp":m=-(t.shiftKey?d:u);break;case"ArrowRight":case"ArrowDown":m=t.shiftKey?d:u;break;case"Home":{v="home";const t=e+1,n=s[e]??0,i=(r[e]??0)+(r[t]??0);h[e]=n,h[t]=i-n;break}case"End":{v="end";const t=e,n=e+1,i=(r[t]??0)+(r[n]??0);h[t]=Math.min(a[t]??1/0,i-(s[n]??0)),h[n]=i-h[t];break}}if(0!==m&&(h=l(r,e,m,s,a)),h=h.map((e,t)=>c(e,s[t]??0,a[t]??1/0)),p&&p(h,{sizes:h,source:"keyboard",originalEvent:t.nativeEvent}),f&&f(h,{sizes:h,source:"keyboard",originalEvent:t.nativeEvent}),"home"===v)i(`Pane ${e+1} minimized to ${o(h[e]??0)}`);else if("end"===v)i(`Pane ${e+1} maximized to ${o(h[e]??0)}`);else{const t=m>0?e:e+1;i(`Pane ${t+1} resized to ${o(h[t]??0)}`)}},[n,r,s,a,u,d,p,f])}}const f="split-pane";exports.Divider=a,exports.Pane=r,exports.SplitPane=function(n){const{direction:i="horizontal",resizable:o=!0,snapPoints:s,snapTolerance:c=10,step:l,onResizeStart:m,onResize:h,onResizeEnd:z,className:v,style:S,divider:x,dividerStyle:y,dividerClassName:g,children:w}=n,E=t.useRef(null),[b,R]=t.useState(0),k=t.useRef(0),D=t.useMemo(()=>t.Children.toArray(w).filter(e=>"object"==typeof e&&null!==e&&"props"in e).map(e=>({props:e.props,size:e.props.size,defaultSize:e.props.defaultSize,minSize:e.props.minSize??0,maxSize:e.props.maxSize??1/0})),[w]),A=D.length,M=t.useRef(!1);2>A&&!M.current&&(M.current=!0,console.warn(`SplitPane requires at least 2 Pane children. Received ${A}.`));const{minSizes:T,maxSizes:C}=t.useMemo(()=>{if(0===b)return{minSizes:Array(A).fill(0),maxSizes:Array(A).fill(1/0)};const e=[],t=[];return D.forEach(n=>{e.push(u(n.minSize,b)),t.push(n.maxSize===1/0?1/0:u(n.maxSize,b))}),{minSizes:e,maxSizes:t}},[b,A,D]),P=t.useCallback(e=>{if(0===e)return Array(A).fill(0);const t=D.map(t=>{const n=t.size??t.defaultSize;return void 0!==n?u(n,e):null}),n=t.reduce((e,t)=>e+(t??0),0),r=t.filter(e=>null===e).length,i=r>0?(e-n)/r:0;return t.map(e=>null===e?i:e)},[A,D]),[N,L]=t.useState(()=>P(b)),j=t.useCallback(e=>{const t=k.current;k.current=e,0!==e&&L(n=>n.every(e=>0===e)||n.length!==A?P(e):t>0&&t!==e?function(e,t){const n=e.reduce((e,t)=>e+t,0);if(0===n){const n=t/e.length;return e.map(()=>n)}return e.map(e=>e/n*t)}(n,e):0===t?P(e):n)},[A,P]);t.useEffect(()=>{const e=E.current;if(!e)return;const t=new ResizeObserver(e=>{const t=e[0];t&&(e=>{const t="horizontal"===i?e.width:e.height;t>0&&(R(t),j(t))})(t.contentRect)});return t.observe(e),()=>{t.disconnect()}},[i,j]);const $=t.useCallback((e,t)=>{L(e),h?.(e,t)},[h]),{isDragging:F,currentSizes:K,handleMouseDown:I,handleTouchStart:q,handleTouchEnd:O}=d({direction:i,sizes:N,minSizes:T,maxSizes:C,snapPoints:s,snapTolerance:c,step:l,onResizeStart:m,onResize:$,onResizeEnd:z}),{handleKeyDown:B}=p({direction:i,sizes:K,minSizes:T,maxSizes:C,step:l,onResize:$,onResizeEnd:z}),H={display:"flex",flexDirection:"horizontal"===i?"row":"column",height:"100%",width:"100%",overflow:"hidden",position:"relative",...S},J=[f,i,v].filter(Boolean).join(" ");return e.jsx("div",{ref:E,className:J,style:H,children:b>0&&(()=>{if(2>A)return null;const t=[];return D.forEach((n,s)=>{const u=K[s]??0,c={..."horizontal"===i?{width:u+"px",height:"100%"}:{height:u+"px",width:"100%"},...n.props.style};if(t.push(e.jsx(r,{...n.props,style:c,children:n.props.children},"pane-"+s)),A-1>s){const n=T[s],r=C[s];t.push(e.jsx(x??a,{direction:i,index:s,isDragging:F,disabled:!o,onMouseDown:I(s),onTouchStart:q(s),onTouchEnd:O,onKeyDown:B(s),className:g,style:y,currentSize:u,minSize:n,maxSize:r===1/0?void 0:r},"divider-"+s))}}),t})()})},exports.useKeyboardResize=p,exports.usePersistence=function(e){const{key:n,storage:r=localStorage,debounce:i=300}=e,[o,s]=t.useState(()=>{try{const e=r.getItem(n);return e?JSON.parse(e):[]}catch{return[]}});return t.useEffect(()=>{if(0===o.length)return;const e=setTimeout(()=>{try{r.setItem(n,JSON.stringify(o))}catch(e){console.warn("Failed to persist pane sizes:",e)}},i);return()=>clearTimeout(e)},[o,n,r,i]),[o,s]},exports.useResizer=d;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/components/Pane.tsx","../src/utils/accessibility.ts","../src/components/Divider.tsx","../src/utils/calculations.ts","../src/hooks/useResizer.ts","../src/hooks/useKeyboardResize.ts","../src/components/SplitPane.tsx","../src/persistence.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["DEFAULT_CLASSNAME","Pane","forwardRef","props","ref","className","style","children","defaultSize","_defaultSize","size","_size","minSize","_minSize","maxSize","_maxSize","rest","combinedStyle","position","outline","overflow","flex","combinedClassName","filter","Boolean","join","_jsx","announce","message","priority","announcement","document","createElement","setAttribute","left","width","height","textContent","body","appendChild","setTimeout","removeChild","formatSizeForAnnouncement","Math","round","Divider","direction","index","isDragging","disabled","onMouseDown","onTouchStart","onTouchEnd","onKeyDown","currentSize","orientation","userSelect","touchAction","cursor","marginLeft","marginRight","marginTop","marginBottom","label","getDividerLabel","instructions","getKeyboardInstructions","role","undefined","Infinity","tabIndex","convertToPixels","containerSize","endsWith","parseFloat","parsed","isNaN","clamp","value","min","max","calculateDraggedSizes","sizes","dividerIndex","delta","minSizes","maxSizes","newSizes","leftSize","rightSize","rightMin","rightMax","newLeftSize","newRightSize","rightDelta","actualDelta","abs","useResizer","options","snapPoints","snapTolerance","step","onResizeStart","onResize","onResizeEnd","setIsDragging","useState","currentSizes","setCurrentSizes","dragStateRef","useRef","rafRef","mountedRef","currentSizesRef","current","onResizeEndRef","JSON","stringify","useEffect","cancelAnimationFrame","handleDrag","useCallback","clientX","clientY","startPosition","startSizes","applyStep","length","map","tolerance","point","snapToPoint","source","handleMouseMove","e","preventDefault","requestAnimationFrame","handleTouchMove","touch","touches","handleMouseUp","latestSizes","latestOnResizeEnd","handleMouseDown","originalEvent","nativeEvent","handleTouchStart","handleTouchEnd","addEventListener","passive","removeEventListener","DEFAULT_STEP","DEFAULT_LARGE_STEP","useKeyboardResize","largeStep","initialSizesRef","handleKeyDown","includes","key","restoredSizes","announcementKey","shiftKey","rightPaneIndex","minLeft","totalSize","leftPaneIndex","idx","changedPaneIndex","resizable","divider","CustomDivider","dividerStyle","dividerClassName","containerRef","setContainerSize","prevContainerSizeRef","paneConfigs","useMemo","Children","toArray","child","pane","paneCount","warnedRef","console","warn","Array","fill","mins","maxs","forEach","config","push","calculateInitialSizes","containerSz","paneSize","explicitTotal","reduce","sum","autoSizedCount","s","autoSize","paneSizes","setPaneSizes","handleContainerSizeChange","newContainerSize","prevSize","every","totalCurrentSize","equalSize","distributeSizes","container","resizeObserver","ResizeObserver","entries","entry","rect","updateSizeFromRect","contentRect","observe","disconnect","handleResize","event","containerStyle","display","flexDirection","containerClassName","elements","paneStyle","dividerMinSize","dividerMaxSize","renderChildren","storage","localStorage","debounce","setSizes","stored","getItem","parse","timeout","setItem","error","clearTimeout"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { SplitPane } from './components/SplitPane';
2
+ export { Pane } from './components/Pane';
3
+ export { Divider } from './components/Divider';
4
+ export type { SplitPaneProps, PaneProps, DividerProps, Direction, Size, ResizeEvent, PaneState, } from './types';
5
+ export { useResizer } from './hooks/useResizer';
6
+ export { useKeyboardResize } from './hooks/useKeyboardResize';
7
+ export { usePersistence } from './persistence';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,YAAY,EACV,cAAc,EACd,SAAS,EACT,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,WAAW,EACX,SAAS,GACV,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{forwardRef as n,useState as t,useRef as r,useEffect as i,useCallback as o,useMemo as s,Children as a}from"react";const c="split-pane-pane",u=n(function(n,t){const{className:r,style:i,children:o,defaultSize:s,size:a,minSize:u,maxSize:l,...d}=n,m={position:"relative",outline:"none",overflow:"auto",flex:"none",...i},h=[c,r].filter(Boolean).join(" ");return e("div",{ref:t,className:h,style:m,"data-pane":"true",...d,children:o})});function l(e,n="polite"){const t=document.createElement("div");t.setAttribute("role","status"),t.setAttribute("aria-live",n),t.setAttribute("aria-atomic","true"),t.style.position="absolute",t.style.left="-10000px",t.style.width="1px",t.style.height="1px",t.style.overflow="hidden",t.textContent=e,document.body.appendChild(t),setTimeout(()=>{document.body.removeChild(t)},1e3)}function d(e){return 1e3>e?Math.round(e)+" pixels":Math.round(e/10)/100+" thousand pixels"}const m="split-pane-divider";function h(n){const{direction:t,index:r,isDragging:i,disabled:o,onMouseDown:s,onTouchStart:a,onTouchEnd:c,onKeyDown:u,className:l,style:d,currentSize:h,minSize:p,maxSize:z,children:f}=n,v="horizontal"===t?"vertical":"horizontal",S={...{flex:"none",position:"relative",userSelect:"none",touchAction:"none",..."horizontal"===t?{width:"11px",cursor:o?"default":"col-resize",marginLeft:"-5px",marginRight:"-5px"}:{height:"11px",cursor:o?"default":"row-resize",marginTop:"-5px",marginBottom:"-5px"},...i&&{cursor:"horizontal"===t?"col-resize":"row-resize"}},...d},y=[m,t,l].filter(Boolean).join(" "),g=function(e,n){return`${"horizontal"===n?"vertical":"horizontal"} divider ${e+1}`}(r,t),x=function(e){return`Use ${"horizontal"===e?"left and right arrow keys":"up and down arrow keys"} to resize. Hold Shift for larger steps. Press Home or End to minimize or maximize.`}(t);return e("div",{role:"separator","aria-orientation":v,"aria-label":g,"aria-valuenow":h,"aria-valuemin":p,"aria-valuemax":void 0===z||z===1/0?void 0:z,"aria-description":x,tabIndex:o?-1:0,className:y,style:S,onMouseDown:o?void 0:s,onTouchStart:o?void 0:a,onTouchEnd:o?void 0:c,onKeyDown:o?void 0:u,"data-divider-index":r,children:f})}function p(e,n){if("number"==typeof e)return e;if(e.endsWith("%")){return parseFloat(e)/100*n}if(e.endsWith("px"))return parseFloat(e);const t=parseFloat(e);return isNaN(t)?0:t}function z(e,n,t){return Math.min(Math.max(e,n),t)}function f(e,n,t,r,i){const o=[...e],s=e[n]??0,a=e[n+1]??0,c=r[n+1]??0,u=i[n+1]??1/0;let l=z(s+t,r[n]??0,i[n]??1/0),d=z(a-t,c,u);const m=a-d,h=Math.min(Math.abs(l-s),Math.abs(m));return t>0?(l=s+h,d=a-h):(l=s-h,d=a+h),o[n]=l,o[n+1]=d,o}function v(e){const{direction:n,sizes:s,minSizes:a,maxSizes:c,snapPoints:u=[],snapTolerance:l=10,step:d,onResizeStart:m,onResize:h,onResizeEnd:p}=e,[z,v]=t(!1),[S,y]=t(s),g=r(null),x=r(null),w=r(!0),E=r(S);E.current=S;const b=r(p);b.current=p,z||s===S||JSON.stringify(s)===JSON.stringify(S)||y(s),i(()=>(w.current=!0,()=>{w.current=!1,x.current&&(cancelAnimationFrame(x.current),x.current=null)}),[]);const D=o((e,t)=>{if(!g.current||!w.current)return;const{dividerIndex:r,startPosition:i,startSizes:o}=g.current;let s=("horizontal"===n?e:t)-i;d&&(s=function(e,n){return n>0?Math.round(e/n)*n:e}(s,d));let m=f(o,r,s,a,c);u.length>0&&(m=m.map(e=>function(e,n,t){for(const r of n)if(t>=Math.abs(e-r))return r;return e}(e,u,l))),y(m),h&&h(m,{sizes:m,source:"mouse"})},[n,d,a,c,u,l,h]),A=o(e=>{e.preventDefault(),x.current||(x.current=requestAnimationFrame(()=>{x.current=null,w.current&&D(e.clientX,e.clientY)}))},[D]),R=o(e=>{e.preventDefault(),x.current||(x.current=requestAnimationFrame(()=>{if(x.current=null,w.current){const n=e.touches[0];n&&D(n.clientX,n.clientY)}}))},[D]),k=o(()=>{if(!g.current)return;x.current&&(cancelAnimationFrame(x.current),x.current=null),v(!1);const e=E.current,n=b.current;n&&n(e,{sizes:e,source:"mouse"}),g.current=null},[]),T=o(e=>t=>{t.preventDefault();g.current={dividerIndex:e,startPosition:"horizontal"===n?t.clientX:t.clientY,startSizes:S},v(!0),m&&m({sizes:S,source:"mouse",originalEvent:t.nativeEvent})},[n,S,m]),M=o(e=>t=>{const r=t.touches[0];if(!r)return;g.current={dividerIndex:e,startPosition:"horizontal"===n?r.clientX:r.clientY,startSizes:S},v(!0),m&&m({sizes:S,source:"touch",originalEvent:t.nativeEvent})},[n,S,m]),N=o(e=>{e.preventDefault(),k()},[k]);return i(()=>{if(z)return document.addEventListener("mousemove",A),document.addEventListener("mouseup",k),document.addEventListener("touchmove",R,{passive:!1}),document.addEventListener("touchend",k),()=>{document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",k),document.removeEventListener("touchmove",R),document.removeEventListener("touchend",k)}},[z,A,k,R]),{isDragging:z,currentSizes:S,handleMouseDown:T,handleTouchStart:M,handleTouchEnd:N}}const S=10,y=50;function g(e){const{direction:n,sizes:t,minSizes:i,maxSizes:s,step:a=S,largeStep:c=y,onResize:u,onResizeEnd:m}=e,h=r(null);return{handleKeyDown:o(e=>r=>{if(!("horizontal"===n?["ArrowLeft","ArrowRight"]:["ArrowUp","ArrowDown"]).includes(r.key)&&"Home"!==r.key&&"End"!==r.key&&"Escape"!==r.key)return;if(r.preventDefault(),"Escape"===r.key){if(h.current){const e=h.current;h.current=null,u&&u(e,{sizes:e,source:"keyboard",originalEvent:r.nativeEvent}),m&&m(e,{sizes:e,source:"keyboard",originalEvent:r.nativeEvent}),l("Pane sizes restored")}return}null===h.current&&(h.current=[...t]);let o=0,p=[...t],v="arrow";switch(r.key){case"ArrowLeft":case"ArrowUp":o=-(r.shiftKey?c:a);break;case"ArrowRight":case"ArrowDown":o=r.shiftKey?c:a;break;case"Home":{v="home";const n=e+1,r=i[e]??0,o=(t[e]??0)+(t[n]??0);p[e]=r,p[n]=o-r;break}case"End":{v="end";const n=e,r=e+1,o=(t[n]??0)+(t[r]??0);p[n]=Math.min(s[n]??1/0,o-(i[r]??0)),p[r]=o-p[n];break}}if(0!==o&&(p=f(t,e,o,i,s)),p=p.map((e,n)=>z(e,i[n]??0,s[n]??1/0)),u&&u(p,{sizes:p,source:"keyboard",originalEvent:r.nativeEvent}),m&&m(p,{sizes:p,source:"keyboard",originalEvent:r.nativeEvent}),"home"===v)l(`Pane ${e+1} minimized to ${d(p[e]??0)}`);else if("end"===v)l(`Pane ${e+1} maximized to ${d(p[e]??0)}`);else{const n=o>0?e:e+1;l(`Pane ${n+1} resized to ${d(p[n]??0)}`)}},[n,t,i,s,a,c,u,m])}}const x="split-pane";function w(n){const{direction:c="horizontal",resizable:l=!0,snapPoints:d,snapTolerance:m=10,step:z,onResizeStart:f,onResize:S,onResizeEnd:y,className:w,style:E,divider:b,dividerStyle:D,dividerClassName:A,children:R}=n,k=r(null),[T,M]=t(0),N=r(0),P=s(()=>a.toArray(R).filter(e=>"object"==typeof e&&null!==e&&"props"in e).map(e=>({props:e.props,size:e.props.size,defaultSize:e.props.defaultSize,minSize:e.props.minSize??0,maxSize:e.props.maxSize??1/0})),[R]),L=P.length,$=r(!1);2>L&&!$.current&&($.current=!0,console.warn(`SplitPane requires at least 2 Pane children. Received ${L}.`));const{minSizes:F,maxSizes:K}=s(()=>{if(0===T)return{minSizes:Array(L).fill(0),maxSizes:Array(L).fill(1/0)};const e=[],n=[];return P.forEach(t=>{e.push(p(t.minSize,T)),n.push(t.maxSize===1/0?1/0:p(t.maxSize,T))}),{minSizes:e,maxSizes:n}},[T,L,P]),I=o(e=>{if(0===e)return Array(L).fill(0);const n=P.map(n=>{const t=n.size??n.defaultSize;return void 0!==t?p(t,e):null}),t=n.reduce((e,n)=>e+(n??0),0),r=n.filter(e=>null===e).length,i=r>0?(e-t)/r:0;return n.map(e=>null===e?i:e)},[L,P]),[j,O]=t(()=>I(T)),B=o(e=>{const n=N.current;N.current=e,0!==e&&O(t=>t.every(e=>0===e)||t.length!==L?I(e):n>0&&n!==e?function(e,n){const t=e.reduce((e,n)=>e+n,0);if(0===t){const t=n/e.length;return e.map(()=>t)}return e.map(e=>e/t*n)}(t,e):0===n?I(e):t)},[L,I]);i(()=>{const e=k.current;if(!e)return;const n=new ResizeObserver(e=>{const n=e[0];n&&(e=>{const n="horizontal"===c?e.width:e.height;n>0&&(M(n),B(n))})(n.contentRect)});return n.observe(e),()=>{n.disconnect()}},[c,B]);const C=o((e,n)=>{O(e),S?.(e,n)},[S]),{isDragging:H,currentSizes:J,handleMouseDown:X,handleTouchStart:Y,handleTouchEnd:q}=v({direction:c,sizes:j,minSizes:F,maxSizes:K,snapPoints:d,snapTolerance:m,step:z,onResizeStart:f,onResize:C,onResizeEnd:y}),{handleKeyDown:U}=g({direction:c,sizes:J,minSizes:F,maxSizes:K,step:z,onResize:C,onResizeEnd:y}),W={display:"flex",flexDirection:"horizontal"===c?"row":"column",height:"100%",width:"100%",overflow:"hidden",position:"relative",...E},G=[x,c,w].filter(Boolean).join(" ");return e("div",{ref:k,className:G,style:W,children:T>0&&(()=>{if(2>L)return null;const n=[];return P.forEach((t,r)=>{const i=J[r]??0,o={..."horizontal"===c?{width:i+"px",height:"100%"}:{height:i+"px",width:"100%"},...t.props.style};if(n.push(e(u,{...t.props,style:o,children:t.props.children},"pane-"+r)),L-1>r){const t=F[r],o=K[r];n.push(e(b??h,{direction:c,index:r,isDragging:H,disabled:!l,onMouseDown:X(r),onTouchStart:Y(r),onTouchEnd:q,onKeyDown:U(r),className:A,style:D,currentSize:i,minSize:t,maxSize:o===1/0?void 0:o},"divider-"+r))}}),n})()})}function E(e){const{key:n,storage:r=localStorage,debounce:o=300}=e,[s,a]=t(()=>{try{const e=r.getItem(n);return e?JSON.parse(e):[]}catch{return[]}});return i(()=>{if(0===s.length)return;const e=setTimeout(()=>{try{r.setItem(n,JSON.stringify(s))}catch(e){console.warn("Failed to persist pane sizes:",e)}},o);return()=>clearTimeout(e)},[s,n,r,o]),[s,a]}export{h as Divider,u as Pane,w as SplitPane,g as useKeyboardResize,E as usePersistence,v as useResizer};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/Pane.tsx","../src/utils/accessibility.ts","../src/components/Divider.tsx","../src/utils/calculations.ts","../src/hooks/useResizer.ts","../src/hooks/useKeyboardResize.ts","../src/components/SplitPane.tsx","../src/persistence.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["DEFAULT_CLASSNAME","Pane","forwardRef","props","ref","className","style","children","defaultSize","_defaultSize","size","_size","minSize","_minSize","maxSize","_maxSize","rest","combinedStyle","position","outline","overflow","flex","combinedClassName","filter","Boolean","join","_jsx","announce","message","priority","announcement","document","createElement","setAttribute","left","width","height","textContent","body","appendChild","setTimeout","removeChild","formatSizeForAnnouncement","Math","round","Divider","direction","index","isDragging","disabled","onMouseDown","onTouchStart","onTouchEnd","onKeyDown","currentSize","orientation","userSelect","touchAction","cursor","marginLeft","marginRight","marginTop","marginBottom","label","getDividerLabel","instructions","getKeyboardInstructions","role","undefined","Infinity","tabIndex","convertToPixels","containerSize","endsWith","parseFloat","parsed","isNaN","clamp","value","min","max","calculateDraggedSizes","sizes","dividerIndex","delta","minSizes","maxSizes","newSizes","leftSize","rightSize","rightMin","rightMax","newLeftSize","newRightSize","rightDelta","actualDelta","abs","useResizer","options","snapPoints","snapTolerance","step","onResizeStart","onResize","onResizeEnd","setIsDragging","useState","currentSizes","setCurrentSizes","dragStateRef","useRef","rafRef","mountedRef","currentSizesRef","current","onResizeEndRef","JSON","stringify","useEffect","cancelAnimationFrame","handleDrag","useCallback","clientX","clientY","startPosition","startSizes","applyStep","length","map","tolerance","point","snapToPoint","source","handleMouseMove","e","preventDefault","requestAnimationFrame","handleTouchMove","touch","touches","handleMouseUp","latestSizes","latestOnResizeEnd","handleMouseDown","originalEvent","nativeEvent","handleTouchStart","handleTouchEnd","addEventListener","passive","removeEventListener","DEFAULT_STEP","DEFAULT_LARGE_STEP","useKeyboardResize","largeStep","initialSizesRef","handleKeyDown","includes","key","restoredSizes","announcementKey","shiftKey","rightPaneIndex","minLeft","totalSize","leftPaneIndex","idx","changedPaneIndex","SplitPane","resizable","divider","CustomDivider","dividerStyle","dividerClassName","containerRef","setContainerSize","prevContainerSizeRef","paneConfigs","useMemo","Children","toArray","child","pane","paneCount","warnedRef","console","warn","Array","fill","mins","maxs","forEach","config","push","calculateInitialSizes","containerSz","paneSize","explicitTotal","reduce","sum","autoSizedCount","s","autoSize","paneSizes","setPaneSizes","handleContainerSizeChange","newContainerSize","prevSize","every","totalCurrentSize","equalSize","distributeSizes","container","resizeObserver","ResizeObserver","entries","entry","rect","updateSizeFromRect","contentRect","observe","disconnect","handleResize","event","containerStyle","display","flexDirection","containerClassName","elements","paneStyle","dividerMinSize","dividerMaxSize","renderChildren","usePersistence","storage","localStorage","debounce","setSizes","stored","getItem","parse","timeout","setItem","error","clearTimeout"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react");function t(e,t,n){return Math.min(Math.max(e,t),n)}function n(e,t="polite"){const n=document.createElement("div");n.setAttribute("role","status"),n.setAttribute("aria-live",t),n.setAttribute("aria-atomic","true"),n.style.position="absolute",n.style.left="-10000px",n.style.width="1px",n.style.height="1px",n.style.overflow="hidden",n.textContent=e,document.body.appendChild(n),setTimeout(()=>{document.body.removeChild(n)},1e3)}function r(e){return 1e3>e?Math.round(e)+" pixels":Math.round(e/10)/100+" thousand pixels"}const i=10,o=50;exports.useKeyboardResize=function(s){const{direction:a,sizes:u,minSizes:c,maxSizes:l,step:d=i,largeStep:h=o,onResize:m,onResizeEnd:y}=s,b=e.useRef(null);return{handleKeyDown:e.useCallback(e=>i=>{if(!("horizontal"===a?["ArrowLeft","ArrowRight"]:["ArrowUp","ArrowDown"]).includes(i.key)&&"Home"!==i.key&&"End"!==i.key&&"Escape"!==i.key)return;if(i.preventDefault(),"Escape"===i.key){if(b.current){const e=b.current;b.current=null,m&&m(e,{sizes:e,source:"keyboard",originalEvent:i.nativeEvent}),y&&y(e,{sizes:e,source:"keyboard",originalEvent:i.nativeEvent}),n("Pane sizes restored")}return}null===b.current&&(b.current=[...u]);let o=0,s=[...u],f="arrow";switch(i.key){case"ArrowLeft":case"ArrowUp":o=-(i.shiftKey?h:d);break;case"ArrowRight":case"ArrowDown":o=i.shiftKey?h:d;break;case"Home":{f="home";const t=e+1,n=c[e]??0,r=(u[e]??0)+(u[t]??0);s[e]=n,s[t]=r-n;break}case"End":{f="end";const t=e,n=e+1,r=(u[t]??0)+(u[n]??0);s[t]=Math.min(l[t]??1/0,r-(c[n]??0)),s[n]=r-s[t];break}}if(0!==o&&(s=function(e,n,r,i,o){const s=[...e],a=e[n]??0,u=e[n+1]??0,c=i[n+1]??0,l=o[n+1]??1/0;let d=t(a+r,i[n]??0,o[n]??1/0),h=t(u-r,c,l);const m=u-h,y=Math.min(Math.abs(d-a),Math.abs(m));return r>0?(d=a+y,h=u-y):(d=a-y,h=u+y),s[n]=d,s[n+1]=h,s}(u,e,o,c,l)),s=s.map((e,n)=>t(e,c[n]??0,l[n]??1/0)),m&&m(s,{sizes:s,source:"keyboard",originalEvent:i.nativeEvent}),y&&y(s,{sizes:s,source:"keyboard",originalEvent:i.nativeEvent}),"home"===f)n(`Pane ${e+1} minimized to ${r(s[e]??0)}`);else if("end"===f)n(`Pane ${e+1} maximized to ${r(s[e]??0)}`);else{const t=o>0?e:e+1;n(`Pane ${t+1} resized to ${r(s[t]??0)}`)}},[a,u,c,l,d,h,m,y])}};
2
+ //# sourceMappingURL=keyboard.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.cjs","sources":["../src/utils/calculations.ts","../src/utils/accessibility.ts","../src/hooks/useKeyboardResize.ts"],"sourcesContent":[null,null,null],"names":["clamp","value","min","max","Math","announce","message","priority","announcement","document","createElement","setAttribute","style","position","left","width","height","overflow","textContent","body","appendChild","setTimeout","removeChild","formatSizeForAnnouncement","size","round","DEFAULT_STEP","DEFAULT_LARGE_STEP","options","direction","sizes","minSizes","maxSizes","step","largeStep","onResize","onResizeEnd","initialSizesRef","useRef","handleKeyDown","useCallback","dividerIndex","e","includes","key","preventDefault","current","restoredSizes","source","originalEvent","nativeEvent","delta","newSizes","announcementKey","shiftKey","rightPaneIndex","minLeft","totalSize","leftPaneIndex","Infinity","leftSize","rightSize","rightMin","rightMax","newLeftSize","newRightSize","rightDelta","actualDelta","abs","calculateDraggedSizes","map","idx","changedPaneIndex"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { useKeyboardResize } from './hooks/useKeyboardResize';
2
+ export type { UseKeyboardResizeOptions } from './hooks/useKeyboardResize';
3
+ //# sourceMappingURL=keyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{useRef as e,useCallback as t}from"react";function n(e,t,n){return Math.min(Math.max(e,t),n)}function r(e,t="polite"){const n=document.createElement("div");n.setAttribute("role","status"),n.setAttribute("aria-live",t),n.setAttribute("aria-atomic","true"),n.style.position="absolute",n.style.left="-10000px",n.style.width="1px",n.style.height="1px",n.style.overflow="hidden",n.textContent=e,document.body.appendChild(n),setTimeout(()=>{document.body.removeChild(n)},1e3)}function o(e){return 1e3>e?Math.round(e)+" pixels":Math.round(e/10)/100+" thousand pixels"}const i=10,s=50;function a(a){const{direction:c,sizes:u,minSizes:l,maxSizes:d,step:h=i,largeStep:m=s,onResize:y,onResizeEnd:p}=a,f=e(null);return{handleKeyDown:t(e=>t=>{if(!("horizontal"===c?["ArrowLeft","ArrowRight"]:["ArrowUp","ArrowDown"]).includes(t.key)&&"Home"!==t.key&&"End"!==t.key&&"Escape"!==t.key)return;if(t.preventDefault(),"Escape"===t.key){if(f.current){const e=f.current;f.current=null,y&&y(e,{sizes:e,source:"keyboard",originalEvent:t.nativeEvent}),p&&p(e,{sizes:e,source:"keyboard",originalEvent:t.nativeEvent}),r("Pane sizes restored")}return}null===f.current&&(f.current=[...u]);let i=0,s=[...u],a="arrow";switch(t.key){case"ArrowLeft":case"ArrowUp":i=-(t.shiftKey?m:h);break;case"ArrowRight":case"ArrowDown":i=t.shiftKey?m:h;break;case"Home":{a="home";const t=e+1,n=l[e]??0,r=(u[e]??0)+(u[t]??0);s[e]=n,s[t]=r-n;break}case"End":{a="end";const t=e,n=e+1,r=(u[t]??0)+(u[n]??0);s[t]=Math.min(d[t]??1/0,r-(l[n]??0)),s[n]=r-s[t];break}}if(0!==i&&(s=function(e,t,r,o,i){const s=[...e],a=e[t]??0,c=e[t+1]??0,u=o[t+1]??0,l=i[t+1]??1/0;let d=n(a+r,o[t]??0,i[t]??1/0),h=n(c-r,u,l);const m=c-h,y=Math.min(Math.abs(d-a),Math.abs(m));return r>0?(d=a+y,h=c-y):(d=a-y,h=c+y),s[t]=d,s[t+1]=h,s}(u,e,i,l,d)),s=s.map((e,t)=>n(e,l[t]??0,d[t]??1/0)),y&&y(s,{sizes:s,source:"keyboard",originalEvent:t.nativeEvent}),p&&p(s,{sizes:s,source:"keyboard",originalEvent:t.nativeEvent}),"home"===a)r(`Pane ${e+1} minimized to ${o(s[e]??0)}`);else if("end"===a)r(`Pane ${e+1} maximized to ${o(s[e]??0)}`);else{const t=i>0?e:e+1;r(`Pane ${t+1} resized to ${o(s[t]??0)}`)}},[c,u,l,d,h,m,y,p])}}export{a as useKeyboardResize};
2
+ //# sourceMappingURL=keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.js","sources":["../src/utils/calculations.ts","../src/utils/accessibility.ts","../src/hooks/useKeyboardResize.ts"],"sourcesContent":[null,null,null],"names":["clamp","value","min","max","Math","announce","message","priority","announcement","document","createElement","setAttribute","style","position","left","width","height","overflow","textContent","body","appendChild","setTimeout","removeChild","formatSizeForAnnouncement","size","round","DEFAULT_STEP","DEFAULT_LARGE_STEP","useKeyboardResize","options","direction","sizes","minSizes","maxSizes","step","largeStep","onResize","onResizeEnd","initialSizesRef","useRef","handleKeyDown","useCallback","dividerIndex","e","includes","key","preventDefault","current","restoredSizes","source","originalEvent","nativeEvent","delta","newSizes","announcementKey","shiftKey","rightPaneIndex","minLeft","totalSize","leftPaneIndex","Infinity","leftSize","rightSize","rightMin","rightMax","newLeftSize","newRightSize","rightDelta","actualDelta","abs","calculateDraggedSizes","map","idx","changedPaneIndex"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react");exports.usePersistence=function(t){const{key:r,storage:s=localStorage,debounce:n=300}=t,[c,o]=e.useState(()=>{try{const e=s.getItem(r);return e?JSON.parse(e):[]}catch{return[]}});return e.useEffect(()=>{if(0===c.length)return;const e=setTimeout(()=>{try{s.setItem(r,JSON.stringify(c))}catch(e){console.warn("Failed to persist pane sizes:",e)}},n);return()=>clearTimeout(e)},[c,r,s,n]),[c,o]};
2
+ //# sourceMappingURL=persistence.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.cjs","sources":["../src/persistence.ts"],"sourcesContent":[null],"names":["options","key","storage","localStorage","debounce","sizes","setSizes","useState","stored","getItem","JSON","parse","useEffect","length","timeout","setTimeout","setItem","stringify","error","console","warn","clearTimeout"],"mappings":"2DAyBM,SACJA,GAEA,MAAMC,IAAEA,EAAGC,QAAEA,EAAUC,aAAYC,SAAEA,EAAW,KAAQJ,GAEjDK,EAAOC,GAAYC,EAAAA,SAAmB,KAC3C,IACE,MAAMC,EAASN,EAAQO,QAAQR,GAC/B,OAAOO,EAASE,KAAKC,MAAMH,GAAU,EACvC,CAAE,MACA,MAAO,EACT,IAkBF,OAdAI,EAAAA,UAAU,KACR,GAAqB,IAAjBP,EAAMQ,OAAc,OAExB,MAAMC,EAAUC,WAAW,KACzB,IACEb,EAAQc,QAAQf,EAAKS,KAAKO,UAAUZ,GACtC,CAAE,MAAOa,GACPC,QAAQC,KAAK,gCAAiCF,EAChD,GACCd,GAEH,MAAO,IAAMiB,aAAaP,IACzB,CAACT,EAAOJ,EAAKC,EAASE,IAElB,CAACC,EAAOC,EACjB"}
@@ -0,0 +1,24 @@
1
+ export interface UsePersistenceOptions {
2
+ key: string;
3
+ storage?: Storage;
4
+ debounce?: number;
5
+ }
6
+ /**
7
+ * Hook for persisting pane sizes to localStorage/sessionStorage
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * function App() {
12
+ * const [sizes, setSizes] = usePersistence({ key: 'my-layout' });
13
+ *
14
+ * return (
15
+ * <SplitPane onResize={setSizes}>
16
+ * <Pane size={sizes[0]}>...</Pane>
17
+ * <Pane size={sizes[1]}>...</Pane>
18
+ * </SplitPane>
19
+ * );
20
+ * }
21
+ * ```
22
+ */
23
+ export declare function usePersistence(options: UsePersistenceOptions): [number[], (sizes: number[]) => void];
24
+ //# sourceMappingURL=persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,CA4BvC"}
@@ -0,0 +1,2 @@
1
+ import{useState as t,useEffect as e}from"react";function r(r){const{key:n,storage:o=localStorage,debounce:c=300}=r,[s,a]=t(()=>{try{const t=o.getItem(n);return t?JSON.parse(t):[]}catch{return[]}});return e(()=>{if(0===s.length)return;const t=setTimeout(()=>{try{o.setItem(n,JSON.stringify(s))}catch(t){console.warn("Failed to persist pane sizes:",t)}},c);return()=>clearTimeout(t)},[s,n,o,c]),[s,a]}export{r as usePersistence};
2
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistence.js","sources":["../src/persistence.ts"],"sourcesContent":[null],"names":["usePersistence","options","key","storage","localStorage","debounce","sizes","setSizes","useState","stored","getItem","JSON","parse","useEffect","length","timeout","setTimeout","setItem","stringify","error","console","warn","clearTimeout"],"mappings":"gDAyBM,SAAUA,EACdC,GAEA,MAAMC,IAAEA,EAAGC,QAAEA,EAAUC,aAAYC,SAAEA,EAAW,KAAQJ,GAEjDK,EAAOC,GAAYC,EAAmB,KAC3C,IACE,MAAMC,EAASN,EAAQO,QAAQR,GAC/B,OAAOO,EAASE,KAAKC,MAAMH,GAAU,EACvC,CAAE,MACA,MAAO,EACT,IAkBF,OAdAI,EAAU,KACR,GAAqB,IAAjBP,EAAMQ,OAAc,OAExB,MAAMC,EAAUC,WAAW,KACzB,IACEb,EAAQc,QAAQf,EAAKS,KAAKO,UAAUZ,GACtC,CAAE,MAAOa,GACPC,QAAQC,KAAK,gCAAiCF,EAChD,GACCd,GAEH,MAAO,IAAMiB,aAAaP,IACzB,CAACT,EAAOJ,EAAKC,EAASE,IAElB,CAACC,EAAOC,EACjB"}
@@ -0,0 +1,2 @@
1
+ import '@testing-library/jest-dom';
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
@@ -0,0 +1,89 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ export type Direction = 'horizontal' | 'vertical';
3
+ export type Size = string | number;
4
+ export interface ResizeEvent {
5
+ sizes: number[];
6
+ source: 'mouse' | 'touch' | 'keyboard';
7
+ originalEvent?: MouseEvent | TouchEvent | KeyboardEvent;
8
+ }
9
+ export interface SplitPaneProps {
10
+ /** Layout direction - horizontal means panes are side-by-side */
11
+ direction?: Direction;
12
+ /** Whether panes can be resized */
13
+ resizable?: boolean;
14
+ /** Snap points for auto-alignment (in pixels) */
15
+ snapPoints?: number[];
16
+ /** Snap tolerance in pixels */
17
+ snapTolerance?: number;
18
+ /** Step size for keyboard resize in pixels */
19
+ step?: number;
20
+ /** Called when resize starts */
21
+ onResizeStart?: (event: ResizeEvent) => void;
22
+ /** Called during resize - consider debouncing this */
23
+ onResize?: (sizes: number[], event: ResizeEvent) => void;
24
+ /** Called when resize ends */
25
+ onResizeEnd?: (sizes: number[], event: ResizeEvent) => void;
26
+ /** CSS class name */
27
+ className?: string;
28
+ /** Inline styles */
29
+ style?: CSSProperties;
30
+ /** Custom divider component */
31
+ divider?: React.ComponentType<DividerProps>;
32
+ /** Custom divider styles */
33
+ dividerStyle?: CSSProperties;
34
+ /** Custom divider class name */
35
+ dividerClassName?: string;
36
+ /** Pane children */
37
+ children: ReactNode;
38
+ }
39
+ export interface PaneProps {
40
+ /** Initial size (uncontrolled mode) */
41
+ defaultSize?: Size;
42
+ /** Controlled size */
43
+ size?: Size;
44
+ /** Minimum size */
45
+ minSize?: Size;
46
+ /** Maximum size */
47
+ maxSize?: Size;
48
+ /** CSS class name */
49
+ className?: string;
50
+ /** Inline styles */
51
+ style?: CSSProperties;
52
+ /** Pane content */
53
+ children: ReactNode;
54
+ }
55
+ export interface DividerProps {
56
+ /** Layout direction */
57
+ direction: Direction;
58
+ /** Index of this divider (0-based) */
59
+ index: number;
60
+ /** Whether divider is being dragged */
61
+ isDragging: boolean;
62
+ /** Whether divider can be interacted with */
63
+ disabled: boolean;
64
+ /** Mouse down handler */
65
+ onMouseDown: (e: React.MouseEvent) => void;
66
+ /** Touch start handler */
67
+ onTouchStart: (e: React.TouchEvent) => void;
68
+ /** Touch end handler */
69
+ onTouchEnd: (e: React.TouchEvent) => void;
70
+ /** Keyboard handler */
71
+ onKeyDown: (e: React.KeyboardEvent) => void;
72
+ /** CSS class name */
73
+ className?: string | undefined;
74
+ /** Inline styles */
75
+ style?: CSSProperties | undefined;
76
+ /** Current size values for ARIA */
77
+ currentSize?: number | undefined;
78
+ minSize?: number | undefined;
79
+ maxSize?: number | undefined;
80
+ /** Custom content */
81
+ children?: ReactNode | undefined;
82
+ }
83
+ export interface PaneState {
84
+ size: number;
85
+ minSize: number;
86
+ maxSize: number;
87
+ defaultSize: number;
88
+ }
89
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Announce a message to screen readers
3
+ */
4
+ export declare function announce(message: string, priority?: 'polite' | 'assertive'): void;
5
+ /**
6
+ * Format size for screen reader announcement
7
+ */
8
+ export declare function formatSizeForAnnouncement(size: number): string;
9
+ /**
10
+ * Generate accessible label for divider
11
+ */
12
+ export declare function getDividerLabel(index: number, direction: 'horizontal' | 'vertical'): string;
13
+ /**
14
+ * Get keyboard instructions for divider
15
+ */
16
+ export declare function getKeyboardInstructions(direction: 'horizontal' | 'vertical'): string;
17
+ //# sourceMappingURL=accessibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../src/utils/accessibility.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,QAAQ,GAAG,WAAsB,GAC1C,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,YAAY,GAAG,UAAU,GACnC,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,YAAY,GAAG,UAAU,GACnC,MAAM,CAOR"}
@@ -0,0 +1,29 @@
1
+ import type { Size } from '../types';
2
+ /**
3
+ * Convert a size value (string or number) to pixels
4
+ * @param size - Size value (e.g., "50%", "200px", 300)
5
+ * @param containerSize - Container size in pixels
6
+ * @returns Size in pixels
7
+ */
8
+ export declare function convertToPixels(size: Size, containerSize: number): number;
9
+ /**
10
+ * Constrain a value between min and max
11
+ */
12
+ export declare function clamp(value: number, min: number, max: number): number;
13
+ /**
14
+ * Snap a value to the nearest snap point if within tolerance
15
+ */
16
+ export declare function snapToPoint(value: number, snapPoints: number[], tolerance: number): number;
17
+ /**
18
+ * Distribute sizes proportionally when container size changes
19
+ */
20
+ export declare function distributeSizes(currentSizes: number[], newContainerSize: number): number[];
21
+ /**
22
+ * Calculate new sizes after a divider drag
23
+ */
24
+ export declare function calculateDraggedSizes(sizes: number[], dividerIndex: number, delta: number, minSizes: number[], maxSizes: number[]): number[];
25
+ /**
26
+ * Apply step-based resizing
27
+ */
28
+ export declare function applyStep(delta: number, step: number): number;
29
+ //# sourceMappingURL=calculations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAiBzE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,GAChB,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EAAE,EACtB,gBAAgB,EAAE,MAAM,GACvB,MAAM,EAAE,CAaV;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,EAAE,CAiCV;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK7D"}