@adea-ai/ui 0.130.0 → 0.130.2

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 (33) hide show
  1. package/dist/components/composites/settings/settings.js +1 -1
  2. package/dist/components/composites/settings/settings.js.map +1 -1
  3. package/dist/components/layout/pixel-resize-handle/pixel-resize-handle.d.ts +7 -6
  4. package/dist/components/layout/pixel-resize-handle/pixel-resize-handle.d.ts.map +1 -1
  5. package/dist/components/layout/pixel-resize-handle/pixel-resize-handle.js +130 -144
  6. package/dist/components/layout/pixel-resize-handle/pixel-resize-handle.js.map +1 -1
  7. package/dist/components/layout/split-layout/resize-controller-core-retry.d.ts +1 -1
  8. package/dist/components/layout/split-layout/resize-controller-core-retry.d.ts.map +1 -1
  9. package/dist/components/layout/split-layout/resize-controller-core-retry.js +91 -55
  10. package/dist/components/layout/split-layout/resize-controller-core-retry.js.map +1 -1
  11. package/dist/components/layout/split-layout/resize-controller-core.d.ts +1 -1
  12. package/dist/components/layout/split-layout/resize-controller-core.d.ts.map +1 -1
  13. package/dist/components/layout/split-layout/resize-controller-core.js +91 -55
  14. package/dist/components/layout/split-layout/resize-controller-core.js.map +1 -1
  15. package/dist/components/layout/split-layout/split-layout.d.ts +1 -1
  16. package/dist/components/layout/split-layout/split-layout.d.ts.map +1 -1
  17. package/dist/components/layout/split-layout/split-layout.js +2 -2
  18. package/dist/components/layout/split-layout/split-layout.js.map +1 -1
  19. package/dist/r/pixel-resize-handle.json +3 -2
  20. package/dist/r/registry.json +3 -3
  21. package/dist/r/split-layout.json +0 -1
  22. package/dist/r/src/components/composites/settings/settings.tsx +1 -1
  23. package/dist/r/src/components/layout/pixel-resize-handle/pixel-resize-handle.tsx +60 -61
  24. package/dist/r/src/components/layout/split-layout/resize-controller-core-retry.tsx +72 -31
  25. package/dist/r/src/components/layout/split-layout/resize-controller-core.tsx +72 -31
  26. package/dist/r/src/components/layout/split-layout/split-layout.tsx +2 -2
  27. package/package.json +1 -1
  28. package/registry.json +3 -3
  29. package/src/components/composites/settings/settings.tsx +1 -1
  30. package/src/components/layout/pixel-resize-handle/pixel-resize-handle.tsx +60 -61
  31. package/src/components/layout/split-layout/resize-controller-core-retry.tsx +72 -31
  32. package/src/components/layout/split-layout/resize-controller-core.tsx +72 -31
  33. package/src/components/layout/split-layout/split-layout.tsx +2 -2
@@ -1,62 +1,98 @@
1
1
  import { MAX_SPLIT_RATIO, MIN_SPLIT_RATIO, listLeaves } from "./tree.js";
2
- import { createComponent } from "solid-js/web";
3
- import "solid-js";
4
- import Resizable from "@corvu/resizable";
2
+ import { delegateEvents, effect, setAttribute, style, template, use } from "solid-js/web";
3
+ import { createSignal } from "solid-js";
5
4
  //#region src/components/layout/split-layout/resize-controller-core-retry.tsx
6
- /** Corvu stays behind the first real split while the pane owners remain mounted. */
5
+ var _tmpl$ = /*#__PURE__*/ template(`<div class="pointer-events-none absolute min-h-0 min-w-0"><div role=separator tabindex=0 data-split-layout-handle aria-valuemin=10 aria-valuemax=90 class="pointer-events-auto absolute shrink-0 bg-border after:absolute after:inset-y-0 after:-inset-x-1 after:w-3 focus-visible:bg-primary focus-visible:outline-none hover:bg-primary data-[orientation=vertical]:after:inset-x-0 data-[orientation=vertical]:after:-inset-y-1 data-[orientation=vertical]:after:h-3 data-[orientation=vertical]:after:w-full">`);
6
+ var KEYBOARD_DELTA = .05;
7
+ /** The divider stays behind the first real split while the pane owners remain mounted. */
7
8
  function SplitLayoutResizeController(props) {
8
- const id = () => props.branch().id;
9
- return createComponent(Resizable, {
10
- get orientation() {
11
- return props.branch().direction === "row" ? "horizontal" : "vertical";
12
- },
13
- get sizes() {
14
- return [props.branch().ratio, 1 - props.branch().ratio];
15
- },
16
- keyboardDelta: .05,
17
- onSizesChange: (sizes) => {
18
- const root = props.root();
19
- if (!root?.isConnected || root.getClientRects().length === 0) return;
20
- if (sizes.length !== 2 || sizes.some((size) => !Number.isFinite(size)) || Math.abs(sizes[0] + sizes[1] - 1) > 1e-6) return;
21
- if (sizes[0] !== void 0 && Math.abs(sizes[0] - props.branch().ratio) > 1e-6) props.onResize(id(), sizes[0]);
22
- },
23
- get style() {
24
- return props.rect();
25
- },
26
- "class": "pointer-events-none absolute flex min-h-0 min-w-0 data-[orientation=vertical]:flex-col",
27
- get children() {
28
- return [
29
- createComponent(Resizable.Panel, {
30
- minSize: MIN_SPLIT_RATIO,
31
- maxSize: MAX_SPLIT_RATIO,
32
- "aria-hidden": "true"
33
- }),
34
- createComponent(Resizable.Handle, {
35
- get ["aria-label"]() {
36
- return props.labelForSeparator?.(props.branch()) ?? (props.branch().direction === "row" ? "Resize pane columns" : "Resize pane rows");
37
- },
38
- get ["aria-orientation"]() {
39
- return props.branch().direction === "row" ? "vertical" : "horizontal";
40
- },
41
- get ["aria-controls"]() {
42
- return listLeaves(props.branch()).map((leaf) => props.domId(leaf.id)).join(" ");
43
- },
44
- "aria-valuemin": 10,
45
- "aria-valuemax": 90,
46
- get ["aria-valuenow"]() {
47
- return Math.round(props.branch().ratio * 100);
48
- },
49
- "class": "pointer-events-auto relative w-px shrink-0 bg-border after:absolute after:inset-y-0 after:-inset-x-1 after:w-3 focus-visible:bg-primary focus-visible:outline-none hover:bg-primary data-[orientation=vertical]:h-px data-[orientation=vertical]:w-full data-[orientation=vertical]:after:inset-x-0 data-[orientation=vertical]:after:-inset-y-1 data-[orientation=vertical]:after:h-3 data-[orientation=vertical]:after:w-full"
50
- }),
51
- createComponent(Resizable.Panel, {
52
- minSize: MIN_SPLIT_RATIO,
53
- maxSize: MAX_SPLIT_RATIO,
54
- "aria-hidden": "true"
55
- })
56
- ];
57
- }
58
- });
9
+ const [container, setContainer] = createSignal();
10
+ let activePointer;
11
+ const horizontal = () => props.branch().direction === "row";
12
+ const resizeTo = (ratio) => {
13
+ const root = props.root();
14
+ if (!root?.isConnected || root.getClientRects().length === 0) return;
15
+ const next = Math.min(MAX_SPLIT_RATIO, Math.max(MIN_SPLIT_RATIO, ratio));
16
+ if (Number.isFinite(next) && Math.abs(next - props.branch().ratio) > 1e-6) props.onResize(props.branch().id, next);
17
+ };
18
+ const stopDrag = (handle, event) => {
19
+ if (activePointer !== event.pointerId) return;
20
+ activePointer = void 0;
21
+ handle.removeAttribute("data-dragging");
22
+ if (handle.hasPointerCapture(event.pointerId)) handle.releasePointerCapture(event.pointerId);
23
+ };
24
+ return (() => {
25
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild;
26
+ use(setContainer, _el$);
27
+ _el$2.addEventListener("lostpointercapture", (event) => stopDrag(event.currentTarget, event));
28
+ _el$2.addEventListener("pointercancel", (event) => stopDrag(event.currentTarget, event));
29
+ _el$2.$$pointerup = (event) => stopDrag(event.currentTarget, event);
30
+ _el$2.$$pointermove = (event) => {
31
+ const element = container();
32
+ if (activePointer !== event.pointerId || !element) return;
33
+ const box = element.getBoundingClientRect();
34
+ const size = horizontal() ? box.width : box.height;
35
+ if (size <= 0) return;
36
+ resizeTo((horizontal() ? event.clientX - box.left : event.clientY - box.top) / size);
37
+ };
38
+ _el$2.$$pointerdown = (event) => {
39
+ if (event.button !== 0 || activePointer !== void 0) return;
40
+ activePointer = event.pointerId;
41
+ event.currentTarget.setPointerCapture(event.pointerId);
42
+ event.currentTarget.setAttribute("data-dragging", "");
43
+ event.preventDefault();
44
+ };
45
+ _el$2.$$keydown = (event) => {
46
+ const forward = horizontal() ? "ArrowRight" : "ArrowDown";
47
+ const backward = horizontal() ? "ArrowLeft" : "ArrowUp";
48
+ const current = props.branch().ratio;
49
+ let next;
50
+ if (event.key === forward) next = current + KEYBOARD_DELTA;
51
+ else if (event.key === backward) next = current - KEYBOARD_DELTA;
52
+ else if (event.key === "Home") next = MIN_SPLIT_RATIO;
53
+ else if (event.key === "End") next = MAX_SPLIT_RATIO;
54
+ else return;
55
+ event.preventDefault();
56
+ resizeTo(next);
57
+ };
58
+ effect((_p$) => {
59
+ var _v$ = props.rect(), _v$2 = horizontal() ? "horizontal" : "vertical", _v$3 = props.labelForSeparator?.(props.branch()) ?? (horizontal() ? "Resize pane columns" : "Resize pane rows"), _v$4 = horizontal() ? "vertical" : "horizontal", _v$5 = listLeaves(props.branch()).map((leaf) => props.domId(leaf.id)).join(" "), _v$6 = Math.round(props.branch().ratio * 100), _v$7 = horizontal() ? {
60
+ left: `${props.branch().ratio * 100}%`,
61
+ top: 0,
62
+ bottom: 0,
63
+ width: "1px"
64
+ } : {
65
+ top: `${props.branch().ratio * 100}%`,
66
+ left: 0,
67
+ right: 0,
68
+ height: "1px"
69
+ };
70
+ _p$.e = style(_el$, _v$, _p$.e);
71
+ _v$2 !== _p$.t && setAttribute(_el$2, "data-orientation", _p$.t = _v$2);
72
+ _v$3 !== _p$.a && setAttribute(_el$2, "aria-label", _p$.a = _v$3);
73
+ _v$4 !== _p$.o && setAttribute(_el$2, "aria-orientation", _p$.o = _v$4);
74
+ _v$5 !== _p$.i && setAttribute(_el$2, "aria-controls", _p$.i = _v$5);
75
+ _v$6 !== _p$.n && setAttribute(_el$2, "aria-valuenow", _p$.n = _v$6);
76
+ _p$.s = style(_el$2, _v$7, _p$.s);
77
+ return _p$;
78
+ }, {
79
+ e: void 0,
80
+ t: void 0,
81
+ a: void 0,
82
+ o: void 0,
83
+ i: void 0,
84
+ n: void 0,
85
+ s: void 0
86
+ });
87
+ return _el$;
88
+ })();
59
89
  }
90
+ delegateEvents([
91
+ "keydown",
92
+ "pointerdown",
93
+ "pointermove",
94
+ "pointerup"
95
+ ]);
60
96
  //#endregion
61
97
  export { SplitLayoutResizeController as default };
62
98
 
@@ -1 +1 @@
1
- {"version":3,"file":"resize-controller-core-retry.js","names":["Resizable","Accessor","JSX","listLeaves","MIN_SPLIT_RATIO","MAX_SPLIT_RATIO","SplitLayoutBranch","SplitLayoutLeaf","SplitLayoutResizeControllerProps","branch","L","rect","CSSProperties","domId","id","root","HTMLDivElement","labelForSeparator","onResize","splitId","ratio","SplitLayoutResizeController","props","_$createComponent","orientation","direction","sizes","keyboardDelta","onSizesChange","isConnected","getClientRects","length","some","size","Number","isFinite","Math","abs","undefined","style","children","Panel","minSize","maxSize","Handle","aria-label","aria-orientation","aria-controls","map","leaf","join","aria-valuenow","round","_$createComponent"],"sources":["../../../../src/components/layout/split-layout/resize-controller-core-retry.tsx"],"sourcesContent":["import Resizable from '@corvu/resizable'\nimport { type Accessor, type JSX } from 'solid-js'\nimport {\n listLeaves,\n MIN_SPLIT_RATIO,\n MAX_SPLIT_RATIO,\n type SplitLayoutBranch,\n type SplitLayoutLeaf,\n} from './model'\n\nexport type SplitLayoutResizeControllerProps<L extends SplitLayoutLeaf> = {\n branch: Accessor<SplitLayoutBranch<L>>\n rect: Accessor<JSX.CSSProperties>\n domId: (id: string) => string\n root: () => HTMLDivElement | undefined\n labelForSeparator?: (branch: SplitLayoutBranch<L>) => string\n onResize: (splitId: string, ratio: number) => void\n}\n\n/** Corvu stays behind the first real split while the pane owners remain mounted. */\nexport default function SplitLayoutResizeController<L extends SplitLayoutLeaf>(\n props: SplitLayoutResizeControllerProps<L>\n) {\n const id = () => props.branch().id\n return (\n <Resizable\n orientation={props.branch().direction === 'row' ? 'horizontal' : 'vertical'}\n sizes={[props.branch().ratio, 1 - props.branch().ratio]}\n keyboardDelta={0.05}\n onSizesChange={(sizes) => {\n // Corvu also reports panel registration/unregistration while\n // mounting or disposing a controller. Those incomplete or\n // hidden-host sizes are not user resize intent.\n const root = props.root()\n if (!root?.isConnected || root.getClientRects().length === 0) return\n if (\n sizes.length !== 2 ||\n sizes.some((size) => !Number.isFinite(size)) ||\n Math.abs(sizes[0]! + sizes[1]! - 1) > 0.000001\n )\n return\n if (sizes[0] !== undefined && Math.abs(sizes[0] - props.branch().ratio) > 0.000001)\n props.onResize(id(), sizes[0])\n }}\n style={props.rect()}\n class=\"pointer-events-none absolute flex min-h-0 min-w-0 data-[orientation=vertical]:flex-col\"\n >\n <Resizable.Panel minSize={MIN_SPLIT_RATIO} maxSize={MAX_SPLIT_RATIO} aria-hidden=\"true\" />\n <Resizable.Handle\n aria-label={\n props.labelForSeparator?.(props.branch()) ??\n (props.branch().direction === 'row' ? 'Resize pane columns' : 'Resize pane rows')\n }\n aria-orientation={props.branch().direction === 'row' ? 'vertical' : 'horizontal'}\n aria-controls={listLeaves(props.branch())\n .map((leaf) => props.domId(leaf.id))\n .join(' ')}\n aria-valuemin={10}\n aria-valuemax={90}\n aria-valuenow={Math.round(props.branch().ratio * 100)}\n class=\"pointer-events-auto relative w-px shrink-0 bg-border after:absolute after:inset-y-0 after:-inset-x-1 after:w-3 focus-visible:bg-primary focus-visible:outline-none hover:bg-primary data-[orientation=vertical]:h-px data-[orientation=vertical]:w-full data-[orientation=vertical]:after:inset-x-0 data-[orientation=vertical]:after:-inset-y-1 data-[orientation=vertical]:after:h-3 data-[orientation=vertical]:after:w-full\"\n />\n <Resizable.Panel minSize={MIN_SPLIT_RATIO} maxSize={MAX_SPLIT_RATIO} aria-hidden=\"true\" />\n </Resizable>\n )\n}\n"],"mappings":";;;;;;AAoBA,SAAwBqB,4BACtBC,OACA;CACA,MAAMR,WAAWQ,MAAMb,OAAO,CAAC,CAACK;CAChC,OAAAS,gBACGvB,WAAS;EAAA,IACRwB,cAAW;GAAA,OAAEF,MAAMb,OAAO,CAAC,CAACgB,cAAc,QAAQ,eAAe;EAAU;EAAA,IAC3EC,QAAK;GAAA,OAAE,CAACJ,MAAMb,OAAO,CAAC,CAACW,OAAO,IAAIE,MAAMb,OAAO,CAAC,CAACW,KAAK;EAAC;EACvDO,eAAe;EACfC,gBAAgBF,UAAU;GAIxB,MAAMX,OAAOO,MAAMP,KAAK;GACxB,IAAI,CAACA,MAAMc,eAAed,KAAKe,eAAe,CAAC,CAACC,WAAW,GAAG;GAC9D,IACEL,MAAMK,WAAW,KACjBL,MAAMM,MAAMC,SAAS,CAACC,OAAOC,SAASF,IAAI,CAAC,KAC3CG,KAAKC,IAAIX,MAAM,KAAMA,MAAM,KAAM,CAAC,IAAI,MAEtC;GACF,IAAIA,MAAM,OAAOY,KAAAA,KAAaF,KAAKC,IAAIX,MAAM,KAAKJ,MAAMb,OAAO,CAAC,CAACW,KAAK,IAAI,MACxEE,MAAMJ,SAASJ,GAAG,GAAGY,MAAM,EAAE;EACjC;EAAC,IACDa,QAAK;GAAA,OAAEjB,MAAMX,KAAK;EAAC;EAAA,SAAA;EAAA,IAAA6B,WAAA;GAAA,OAAA;IAAAjB,gBAGlBvB,UAAUyC,OAAK;KAACC,SAAStC;KAAiBuC,SAAStC;KAAe,eAAA;IAAA,CAAA;IAAAkB,gBAClEvB,UAAU4C,QAAM;KAAA,KAAA,gBAAA;MAAA,OAEbtB,MAAML,oBAAoBK,MAAMb,OAAO,CAAC,MACvCa,MAAMb,OAAO,CAAC,CAACgB,cAAc,QAAQ,wBAAwB;KAAmB;KAAA,KAAA,sBAAA;MAAA,OAEjEH,MAAMb,OAAO,CAAC,CAACgB,cAAc,QAAQ,aAAa;KAAY;KAAA,KAAA,mBAAA;MAAA,OACjEtB,WAAWmB,MAAMb,OAAO,CAAC,CAAC,CACtCuC,KAAKC,SAAS3B,MAAMT,MAAMoC,KAAKnC,EAAE,CAAC,CAAC,CACnCoC,KAAK,GAAG;KAAC;KAAA,iBACG;KAAE,iBACF;KAAE,KAAA,mBAAA;MAAA,OACFd,KAAKgB,MAAM9B,MAAMb,OAAO,CAAC,CAACW,QAAQ,GAAG;KAAC;KAAA,SAAA;IAAA,CAAA;IAAAG,gBAGtDvB,UAAUyC,OAAK;KAACC,SAAStC;KAAiBuC,SAAStC;KAAe,eAAA;IAAA,CAAA;GAAA;EAAA;CAAA,CAAA;AAGzE"}
1
+ {"version":3,"file":"resize-controller-core-retry.js","names":["createSignal","Accessor","JSX","listLeaves","MIN_SPLIT_RATIO","MAX_SPLIT_RATIO","SplitLayoutBranch","SplitLayoutLeaf","SplitLayoutResizeControllerProps","branch","L","rect","CSSProperties","domId","id","root","HTMLDivElement","labelForSeparator","onResize","splitId","ratio","KEYBOARD_DELTA","SplitLayoutResizeController","props","container","setContainer","activePointer","horizontal","direction","resizeTo","isConnected","getClientRects","length","next","Math","min","max","Number","isFinite","abs","stopDrag","handle","HTMLElement","event","PointerEvent","pointerId","undefined","removeAttribute","hasPointerCapture","releasePointerCapture","_el$","_tmpl$","_el$2","firstChild","_$use","addEventListener","currentTarget","$$pointerup","$$pointermove","element","box","getBoundingClientRect","size","width","height","clientX","left","clientY","top","$$pointerdown","button","setPointerCapture","setAttribute","preventDefault","$$keydown","forward","backward","current","key","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","map","leaf","join","_v$6","round","_v$7","bottom","right","e","_$style","t","_$setAttribute","a","o","i","n","s","_$delegateEvents","_$style","_$setAttribute","_$delegateEvents"],"sources":["../../../../src/components/layout/split-layout/resize-controller-core-retry.tsx"],"sourcesContent":["import { createSignal, type Accessor, type JSX } from 'solid-js'\nimport {\n listLeaves,\n MIN_SPLIT_RATIO,\n MAX_SPLIT_RATIO,\n type SplitLayoutBranch,\n type SplitLayoutLeaf,\n} from './model'\n\nexport type SplitLayoutResizeControllerProps<L extends SplitLayoutLeaf> = {\n branch: Accessor<SplitLayoutBranch<L>>\n rect: Accessor<JSX.CSSProperties>\n domId: (id: string) => string\n root: () => HTMLDivElement | undefined\n labelForSeparator?: (branch: SplitLayoutBranch<L>) => string\n onResize: (splitId: string, ratio: number) => void\n}\n\nconst KEYBOARD_DELTA = 0.05\n\n/** The divider stays behind the first real split while the pane owners remain mounted. */\nexport default function SplitLayoutResizeController<L extends SplitLayoutLeaf>(\n props: SplitLayoutResizeControllerProps<L>\n) {\n const [container, setContainer] = createSignal<HTMLDivElement>()\n let activePointer: number | undefined\n const horizontal = () => props.branch().direction === 'row'\n\n const resizeTo = (ratio: number) => {\n // A hidden or detached host reports no usable geometry; that is not\n // user resize intent.\n const root = props.root()\n if (!root?.isConnected || root.getClientRects().length === 0) return\n const next = Math.min(MAX_SPLIT_RATIO, Math.max(MIN_SPLIT_RATIO, ratio))\n if (Number.isFinite(next) && Math.abs(next - props.branch().ratio) > 0.000001)\n props.onResize(props.branch().id, next)\n }\n const stopDrag = (handle: HTMLElement, event: PointerEvent) => {\n if (activePointer !== event.pointerId) return\n activePointer = undefined\n handle.removeAttribute('data-dragging')\n if (handle.hasPointerCapture(event.pointerId)) handle.releasePointerCapture(event.pointerId)\n }\n\n return (\n <div\n ref={setContainer}\n style={props.rect()}\n class=\"pointer-events-none absolute min-h-0 min-w-0\"\n >\n <div\n role=\"separator\"\n tabIndex={0}\n data-split-layout-handle=\"\"\n data-orientation={horizontal() ? 'horizontal' : 'vertical'}\n aria-label={\n props.labelForSeparator?.(props.branch()) ??\n (horizontal() ? 'Resize pane columns' : 'Resize pane rows')\n }\n aria-orientation={horizontal() ? 'vertical' : 'horizontal'}\n aria-controls={listLeaves(props.branch())\n .map((leaf) => props.domId(leaf.id))\n .join(' ')}\n aria-valuemin={10}\n aria-valuemax={90}\n aria-valuenow={Math.round(props.branch().ratio * 100)}\n style={\n horizontal()\n ? { left: `${props.branch().ratio * 100}%`, top: 0, bottom: 0, width: '1px' }\n : { top: `${props.branch().ratio * 100}%`, left: 0, right: 0, height: '1px' }\n }\n onKeyDown={(event) => {\n const forward = horizontal() ? 'ArrowRight' : 'ArrowDown'\n const backward = horizontal() ? 'ArrowLeft' : 'ArrowUp'\n const current = props.branch().ratio\n let next: number\n if (event.key === forward) next = current + KEYBOARD_DELTA\n else if (event.key === backward) next = current - KEYBOARD_DELTA\n else if (event.key === 'Home') next = MIN_SPLIT_RATIO\n else if (event.key === 'End') next = MAX_SPLIT_RATIO\n else return\n event.preventDefault()\n resizeTo(next)\n }}\n onPointerDown={(event) => {\n if (event.button !== 0 || activePointer !== undefined) return\n activePointer = event.pointerId\n event.currentTarget.setPointerCapture(event.pointerId)\n event.currentTarget.setAttribute('data-dragging', '')\n event.preventDefault()\n }}\n onPointerMove={(event) => {\n const element = container()\n if (activePointer !== event.pointerId || !element) return\n const box = element.getBoundingClientRect()\n const size = horizontal() ? box.width : box.height\n if (size <= 0) return\n resizeTo((horizontal() ? event.clientX - box.left : event.clientY - box.top) / size)\n }}\n onPointerUp={(event) => stopDrag(event.currentTarget, event)}\n onPointerCancel={(event) => stopDrag(event.currentTarget, event)}\n onLostPointerCapture={(event) => stopDrag(event.currentTarget, event)}\n class=\"pointer-events-auto absolute shrink-0 bg-border after:absolute after:inset-y-0 after:-inset-x-1 after:w-3 focus-visible:bg-primary focus-visible:outline-none hover:bg-primary data-[orientation=vertical]:after:inset-x-0 data-[orientation=vertical]:after:-inset-y-1 data-[orientation=vertical]:after:h-3 data-[orientation=vertical]:after:w-full\"\n />\n </div>\n )\n}\n"],"mappings":"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"}
@@ -8,6 +8,6 @@ export type SplitLayoutResizeControllerProps<L extends SplitLayoutLeaf> = {
8
8
  labelForSeparator?: (branch: SplitLayoutBranch<L>) => string;
9
9
  onResize: (splitId: string, ratio: number) => void;
10
10
  };
11
- /** Corvu stays behind the first real split while the pane owners remain mounted. */
11
+ /** The divider stays behind the first real split while the pane owners remain mounted. */
12
12
  export default function SplitLayoutResizeController<L extends SplitLayoutLeaf>(props: SplitLayoutResizeControllerProps<L>): JSX.Element;
13
13
  //# sourceMappingURL=resize-controller-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resize-controller-core.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/split-layout/resize-controller-core.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,gCAAgC,CAAC,CAAC,SAAS,eAAe,IAAI;IACxE,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACjC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;IAC7B,IAAI,EAAE,MAAM,cAAc,GAAG,SAAS,CAAA;IACtC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAA;IAC5D,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnD,CAAA;AAED,oFAAoF;AACpF,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,CAAC,SAAS,eAAe,EAC3E,KAAK,EAAE,gCAAgC,CAAC,CAAC,CAAC,eA4C3C"}
1
+ {"version":3,"file":"resize-controller-core.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/split-layout/resize-controller-core.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,UAAU,CAAA;AAChE,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACrB,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,gCAAgC,CAAC,CAAC,SAAS,eAAe,IAAI;IACxE,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IACjC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;IAC7B,IAAI,EAAE,MAAM,cAAc,GAAG,SAAS,CAAA;IACtC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAA;IAC5D,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnD,CAAA;AAID,0FAA0F;AAC1F,MAAM,CAAC,OAAO,UAAU,2BAA2B,CAAC,CAAC,SAAS,eAAe,EAC3E,KAAK,EAAE,gCAAgC,CAAC,CAAC,CAAC,eAoF3C"}
@@ -1,62 +1,98 @@
1
1
  import { MAX_SPLIT_RATIO, MIN_SPLIT_RATIO, listLeaves } from "./tree.js";
2
- import { createComponent } from "solid-js/web";
3
- import "solid-js";
4
- import Resizable from "@corvu/resizable";
2
+ import { delegateEvents, effect, setAttribute, style, template, use } from "solid-js/web";
3
+ import { createSignal } from "solid-js";
5
4
  //#region src/components/layout/split-layout/resize-controller-core.tsx
6
- /** Corvu stays behind the first real split while the pane owners remain mounted. */
5
+ var _tmpl$ = /*#__PURE__*/ template(`<div class="pointer-events-none absolute min-h-0 min-w-0"><div role=separator tabindex=0 data-split-layout-handle aria-valuemin=10 aria-valuemax=90 class="pointer-events-auto absolute shrink-0 bg-border after:absolute after:inset-y-0 after:-inset-x-1 after:w-3 focus-visible:bg-primary focus-visible:outline-none hover:bg-primary data-[orientation=vertical]:after:inset-x-0 data-[orientation=vertical]:after:-inset-y-1 data-[orientation=vertical]:after:h-3 data-[orientation=vertical]:after:w-full">`);
6
+ var KEYBOARD_DELTA = .05;
7
+ /** The divider stays behind the first real split while the pane owners remain mounted. */
7
8
  function SplitLayoutResizeController(props) {
8
- const id = () => props.branch().id;
9
- return createComponent(Resizable, {
10
- get orientation() {
11
- return props.branch().direction === "row" ? "horizontal" : "vertical";
12
- },
13
- get sizes() {
14
- return [props.branch().ratio, 1 - props.branch().ratio];
15
- },
16
- keyboardDelta: .05,
17
- onSizesChange: (sizes) => {
18
- const root = props.root();
19
- if (!root?.isConnected || root.getClientRects().length === 0) return;
20
- if (sizes.length !== 2 || sizes.some((size) => !Number.isFinite(size)) || Math.abs(sizes[0] + sizes[1] - 1) > 1e-6) return;
21
- if (sizes[0] !== void 0 && Math.abs(sizes[0] - props.branch().ratio) > 1e-6) props.onResize(id(), sizes[0]);
22
- },
23
- get style() {
24
- return props.rect();
25
- },
26
- "class": "pointer-events-none absolute flex min-h-0 min-w-0 data-[orientation=vertical]:flex-col",
27
- get children() {
28
- return [
29
- createComponent(Resizable.Panel, {
30
- minSize: MIN_SPLIT_RATIO,
31
- maxSize: MAX_SPLIT_RATIO,
32
- "aria-hidden": "true"
33
- }),
34
- createComponent(Resizable.Handle, {
35
- get ["aria-label"]() {
36
- return props.labelForSeparator?.(props.branch()) ?? (props.branch().direction === "row" ? "Resize pane columns" : "Resize pane rows");
37
- },
38
- get ["aria-orientation"]() {
39
- return props.branch().direction === "row" ? "vertical" : "horizontal";
40
- },
41
- get ["aria-controls"]() {
42
- return listLeaves(props.branch()).map((leaf) => props.domId(leaf.id)).join(" ");
43
- },
44
- "aria-valuemin": 10,
45
- "aria-valuemax": 90,
46
- get ["aria-valuenow"]() {
47
- return Math.round(props.branch().ratio * 100);
48
- },
49
- "class": "pointer-events-auto relative w-px shrink-0 bg-border after:absolute after:inset-y-0 after:-inset-x-1 after:w-3 focus-visible:bg-primary focus-visible:outline-none hover:bg-primary data-[orientation=vertical]:h-px data-[orientation=vertical]:w-full data-[orientation=vertical]:after:inset-x-0 data-[orientation=vertical]:after:-inset-y-1 data-[orientation=vertical]:after:h-3 data-[orientation=vertical]:after:w-full"
50
- }),
51
- createComponent(Resizable.Panel, {
52
- minSize: MIN_SPLIT_RATIO,
53
- maxSize: MAX_SPLIT_RATIO,
54
- "aria-hidden": "true"
55
- })
56
- ];
57
- }
58
- });
9
+ const [container, setContainer] = createSignal();
10
+ let activePointer;
11
+ const horizontal = () => props.branch().direction === "row";
12
+ const resizeTo = (ratio) => {
13
+ const root = props.root();
14
+ if (!root?.isConnected || root.getClientRects().length === 0) return;
15
+ const next = Math.min(MAX_SPLIT_RATIO, Math.max(MIN_SPLIT_RATIO, ratio));
16
+ if (Number.isFinite(next) && Math.abs(next - props.branch().ratio) > 1e-6) props.onResize(props.branch().id, next);
17
+ };
18
+ const stopDrag = (handle, event) => {
19
+ if (activePointer !== event.pointerId) return;
20
+ activePointer = void 0;
21
+ handle.removeAttribute("data-dragging");
22
+ if (handle.hasPointerCapture(event.pointerId)) handle.releasePointerCapture(event.pointerId);
23
+ };
24
+ return (() => {
25
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild;
26
+ use(setContainer, _el$);
27
+ _el$2.addEventListener("lostpointercapture", (event) => stopDrag(event.currentTarget, event));
28
+ _el$2.addEventListener("pointercancel", (event) => stopDrag(event.currentTarget, event));
29
+ _el$2.$$pointerup = (event) => stopDrag(event.currentTarget, event);
30
+ _el$2.$$pointermove = (event) => {
31
+ const element = container();
32
+ if (activePointer !== event.pointerId || !element) return;
33
+ const box = element.getBoundingClientRect();
34
+ const size = horizontal() ? box.width : box.height;
35
+ if (size <= 0) return;
36
+ resizeTo((horizontal() ? event.clientX - box.left : event.clientY - box.top) / size);
37
+ };
38
+ _el$2.$$pointerdown = (event) => {
39
+ if (event.button !== 0 || activePointer !== void 0) return;
40
+ activePointer = event.pointerId;
41
+ event.currentTarget.setPointerCapture(event.pointerId);
42
+ event.currentTarget.setAttribute("data-dragging", "");
43
+ event.preventDefault();
44
+ };
45
+ _el$2.$$keydown = (event) => {
46
+ const forward = horizontal() ? "ArrowRight" : "ArrowDown";
47
+ const backward = horizontal() ? "ArrowLeft" : "ArrowUp";
48
+ const current = props.branch().ratio;
49
+ let next;
50
+ if (event.key === forward) next = current + KEYBOARD_DELTA;
51
+ else if (event.key === backward) next = current - KEYBOARD_DELTA;
52
+ else if (event.key === "Home") next = MIN_SPLIT_RATIO;
53
+ else if (event.key === "End") next = MAX_SPLIT_RATIO;
54
+ else return;
55
+ event.preventDefault();
56
+ resizeTo(next);
57
+ };
58
+ effect((_p$) => {
59
+ var _v$ = props.rect(), _v$2 = horizontal() ? "horizontal" : "vertical", _v$3 = props.labelForSeparator?.(props.branch()) ?? (horizontal() ? "Resize pane columns" : "Resize pane rows"), _v$4 = horizontal() ? "vertical" : "horizontal", _v$5 = listLeaves(props.branch()).map((leaf) => props.domId(leaf.id)).join(" "), _v$6 = Math.round(props.branch().ratio * 100), _v$7 = horizontal() ? {
60
+ left: `${props.branch().ratio * 100}%`,
61
+ top: 0,
62
+ bottom: 0,
63
+ width: "1px"
64
+ } : {
65
+ top: `${props.branch().ratio * 100}%`,
66
+ left: 0,
67
+ right: 0,
68
+ height: "1px"
69
+ };
70
+ _p$.e = style(_el$, _v$, _p$.e);
71
+ _v$2 !== _p$.t && setAttribute(_el$2, "data-orientation", _p$.t = _v$2);
72
+ _v$3 !== _p$.a && setAttribute(_el$2, "aria-label", _p$.a = _v$3);
73
+ _v$4 !== _p$.o && setAttribute(_el$2, "aria-orientation", _p$.o = _v$4);
74
+ _v$5 !== _p$.i && setAttribute(_el$2, "aria-controls", _p$.i = _v$5);
75
+ _v$6 !== _p$.n && setAttribute(_el$2, "aria-valuenow", _p$.n = _v$6);
76
+ _p$.s = style(_el$2, _v$7, _p$.s);
77
+ return _p$;
78
+ }, {
79
+ e: void 0,
80
+ t: void 0,
81
+ a: void 0,
82
+ o: void 0,
83
+ i: void 0,
84
+ n: void 0,
85
+ s: void 0
86
+ });
87
+ return _el$;
88
+ })();
59
89
  }
90
+ delegateEvents([
91
+ "keydown",
92
+ "pointerdown",
93
+ "pointermove",
94
+ "pointerup"
95
+ ]);
60
96
  //#endregion
61
97
  export { SplitLayoutResizeController as default };
62
98
 
@@ -1 +1 @@
1
- {"version":3,"file":"resize-controller-core.js","names":["Resizable","Accessor","JSX","listLeaves","MIN_SPLIT_RATIO","MAX_SPLIT_RATIO","SplitLayoutBranch","SplitLayoutLeaf","SplitLayoutResizeControllerProps","branch","L","rect","CSSProperties","domId","id","root","HTMLDivElement","labelForSeparator","onResize","splitId","ratio","SplitLayoutResizeController","props","_$createComponent","orientation","direction","sizes","keyboardDelta","onSizesChange","isConnected","getClientRects","length","some","size","Number","isFinite","Math","abs","undefined","style","children","Panel","minSize","maxSize","Handle","aria-label","aria-orientation","aria-controls","map","leaf","join","aria-valuenow","round","_$createComponent"],"sources":["../../../../src/components/layout/split-layout/resize-controller-core.tsx"],"sourcesContent":["import Resizable from '@corvu/resizable'\nimport { type Accessor, type JSX } from 'solid-js'\nimport {\n listLeaves,\n MIN_SPLIT_RATIO,\n MAX_SPLIT_RATIO,\n type SplitLayoutBranch,\n type SplitLayoutLeaf,\n} from './model'\n\nexport type SplitLayoutResizeControllerProps<L extends SplitLayoutLeaf> = {\n branch: Accessor<SplitLayoutBranch<L>>\n rect: Accessor<JSX.CSSProperties>\n domId: (id: string) => string\n root: () => HTMLDivElement | undefined\n labelForSeparator?: (branch: SplitLayoutBranch<L>) => string\n onResize: (splitId: string, ratio: number) => void\n}\n\n/** Corvu stays behind the first real split while the pane owners remain mounted. */\nexport default function SplitLayoutResizeController<L extends SplitLayoutLeaf>(\n props: SplitLayoutResizeControllerProps<L>\n) {\n const id = () => props.branch().id\n return (\n <Resizable\n orientation={props.branch().direction === 'row' ? 'horizontal' : 'vertical'}\n sizes={[props.branch().ratio, 1 - props.branch().ratio]}\n keyboardDelta={0.05}\n onSizesChange={(sizes) => {\n // Corvu also reports panel registration/unregistration while\n // mounting or disposing a controller. Those incomplete or\n // hidden-host sizes are not user resize intent.\n const root = props.root()\n if (!root?.isConnected || root.getClientRects().length === 0) return\n if (\n sizes.length !== 2 ||\n sizes.some((size) => !Number.isFinite(size)) ||\n Math.abs(sizes[0]! + sizes[1]! - 1) > 0.000001\n )\n return\n if (sizes[0] !== undefined && Math.abs(sizes[0] - props.branch().ratio) > 0.000001)\n props.onResize(id(), sizes[0])\n }}\n style={props.rect()}\n class=\"pointer-events-none absolute flex min-h-0 min-w-0 data-[orientation=vertical]:flex-col\"\n >\n <Resizable.Panel minSize={MIN_SPLIT_RATIO} maxSize={MAX_SPLIT_RATIO} aria-hidden=\"true\" />\n <Resizable.Handle\n aria-label={\n props.labelForSeparator?.(props.branch()) ??\n (props.branch().direction === 'row' ? 'Resize pane columns' : 'Resize pane rows')\n }\n aria-orientation={props.branch().direction === 'row' ? 'vertical' : 'horizontal'}\n aria-controls={listLeaves(props.branch())\n .map((leaf) => props.domId(leaf.id))\n .join(' ')}\n aria-valuemin={10}\n aria-valuemax={90}\n aria-valuenow={Math.round(props.branch().ratio * 100)}\n class=\"pointer-events-auto relative w-px shrink-0 bg-border after:absolute after:inset-y-0 after:-inset-x-1 after:w-3 focus-visible:bg-primary focus-visible:outline-none hover:bg-primary data-[orientation=vertical]:h-px data-[orientation=vertical]:w-full data-[orientation=vertical]:after:inset-x-0 data-[orientation=vertical]:after:-inset-y-1 data-[orientation=vertical]:after:h-3 data-[orientation=vertical]:after:w-full\"\n />\n <Resizable.Panel minSize={MIN_SPLIT_RATIO} maxSize={MAX_SPLIT_RATIO} aria-hidden=\"true\" />\n </Resizable>\n )\n}\n"],"mappings":";;;;;;AAoBA,SAAwBqB,4BACtBC,OACA;CACA,MAAMR,WAAWQ,MAAMb,OAAO,CAAC,CAACK;CAChC,OAAAS,gBACGvB,WAAS;EAAA,IACRwB,cAAW;GAAA,OAAEF,MAAMb,OAAO,CAAC,CAACgB,cAAc,QAAQ,eAAe;EAAU;EAAA,IAC3EC,QAAK;GAAA,OAAE,CAACJ,MAAMb,OAAO,CAAC,CAACW,OAAO,IAAIE,MAAMb,OAAO,CAAC,CAACW,KAAK;EAAC;EACvDO,eAAe;EACfC,gBAAgBF,UAAU;GAIxB,MAAMX,OAAOO,MAAMP,KAAK;GACxB,IAAI,CAACA,MAAMc,eAAed,KAAKe,eAAe,CAAC,CAACC,WAAW,GAAG;GAC9D,IACEL,MAAMK,WAAW,KACjBL,MAAMM,MAAMC,SAAS,CAACC,OAAOC,SAASF,IAAI,CAAC,KAC3CG,KAAKC,IAAIX,MAAM,KAAMA,MAAM,KAAM,CAAC,IAAI,MAEtC;GACF,IAAIA,MAAM,OAAOY,KAAAA,KAAaF,KAAKC,IAAIX,MAAM,KAAKJ,MAAMb,OAAO,CAAC,CAACW,KAAK,IAAI,MACxEE,MAAMJ,SAASJ,GAAG,GAAGY,MAAM,EAAE;EACjC;EAAC,IACDa,QAAK;GAAA,OAAEjB,MAAMX,KAAK;EAAC;EAAA,SAAA;EAAA,IAAA6B,WAAA;GAAA,OAAA;IAAAjB,gBAGlBvB,UAAUyC,OAAK;KAACC,SAAStC;KAAiBuC,SAAStC;KAAe,eAAA;IAAA,CAAA;IAAAkB,gBAClEvB,UAAU4C,QAAM;KAAA,KAAA,gBAAA;MAAA,OAEbtB,MAAML,oBAAoBK,MAAMb,OAAO,CAAC,MACvCa,MAAMb,OAAO,CAAC,CAACgB,cAAc,QAAQ,wBAAwB;KAAmB;KAAA,KAAA,sBAAA;MAAA,OAEjEH,MAAMb,OAAO,CAAC,CAACgB,cAAc,QAAQ,aAAa;KAAY;KAAA,KAAA,mBAAA;MAAA,OACjEtB,WAAWmB,MAAMb,OAAO,CAAC,CAAC,CACtCuC,KAAKC,SAAS3B,MAAMT,MAAMoC,KAAKnC,EAAE,CAAC,CAAC,CACnCoC,KAAK,GAAG;KAAC;KAAA,iBACG;KAAE,iBACF;KAAE,KAAA,mBAAA;MAAA,OACFd,KAAKgB,MAAM9B,MAAMb,OAAO,CAAC,CAACW,QAAQ,GAAG;KAAC;KAAA,SAAA;IAAA,CAAA;IAAAG,gBAGtDvB,UAAUyC,OAAK;KAACC,SAAStC;KAAiBuC,SAAStC;KAAe,eAAA;IAAA,CAAA;GAAA;EAAA;CAAA,CAAA;AAGzE"}
1
+ {"version":3,"file":"resize-controller-core.js","names":["createSignal","Accessor","JSX","listLeaves","MIN_SPLIT_RATIO","MAX_SPLIT_RATIO","SplitLayoutBranch","SplitLayoutLeaf","SplitLayoutResizeControllerProps","branch","L","rect","CSSProperties","domId","id","root","HTMLDivElement","labelForSeparator","onResize","splitId","ratio","KEYBOARD_DELTA","SplitLayoutResizeController","props","container","setContainer","activePointer","horizontal","direction","resizeTo","isConnected","getClientRects","length","next","Math","min","max","Number","isFinite","abs","stopDrag","handle","HTMLElement","event","PointerEvent","pointerId","undefined","removeAttribute","hasPointerCapture","releasePointerCapture","_el$","_tmpl$","_el$2","firstChild","_$use","addEventListener","currentTarget","$$pointerup","$$pointermove","element","box","getBoundingClientRect","size","width","height","clientX","left","clientY","top","$$pointerdown","button","setPointerCapture","setAttribute","preventDefault","$$keydown","forward","backward","current","key","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","map","leaf","join","_v$6","round","_v$7","bottom","right","e","_$style","t","_$setAttribute","a","o","i","n","s","_$delegateEvents","_$style","_$setAttribute","_$delegateEvents"],"sources":["../../../../src/components/layout/split-layout/resize-controller-core.tsx"],"sourcesContent":["import { createSignal, type Accessor, type JSX } from 'solid-js'\nimport {\n listLeaves,\n MIN_SPLIT_RATIO,\n MAX_SPLIT_RATIO,\n type SplitLayoutBranch,\n type SplitLayoutLeaf,\n} from './model'\n\nexport type SplitLayoutResizeControllerProps<L extends SplitLayoutLeaf> = {\n branch: Accessor<SplitLayoutBranch<L>>\n rect: Accessor<JSX.CSSProperties>\n domId: (id: string) => string\n root: () => HTMLDivElement | undefined\n labelForSeparator?: (branch: SplitLayoutBranch<L>) => string\n onResize: (splitId: string, ratio: number) => void\n}\n\nconst KEYBOARD_DELTA = 0.05\n\n/** The divider stays behind the first real split while the pane owners remain mounted. */\nexport default function SplitLayoutResizeController<L extends SplitLayoutLeaf>(\n props: SplitLayoutResizeControllerProps<L>\n) {\n const [container, setContainer] = createSignal<HTMLDivElement>()\n let activePointer: number | undefined\n const horizontal = () => props.branch().direction === 'row'\n\n const resizeTo = (ratio: number) => {\n // A hidden or detached host reports no usable geometry; that is not\n // user resize intent.\n const root = props.root()\n if (!root?.isConnected || root.getClientRects().length === 0) return\n const next = Math.min(MAX_SPLIT_RATIO, Math.max(MIN_SPLIT_RATIO, ratio))\n if (Number.isFinite(next) && Math.abs(next - props.branch().ratio) > 0.000001)\n props.onResize(props.branch().id, next)\n }\n const stopDrag = (handle: HTMLElement, event: PointerEvent) => {\n if (activePointer !== event.pointerId) return\n activePointer = undefined\n handle.removeAttribute('data-dragging')\n if (handle.hasPointerCapture(event.pointerId)) handle.releasePointerCapture(event.pointerId)\n }\n\n return (\n <div\n ref={setContainer}\n style={props.rect()}\n class=\"pointer-events-none absolute min-h-0 min-w-0\"\n >\n <div\n role=\"separator\"\n tabIndex={0}\n data-split-layout-handle=\"\"\n data-orientation={horizontal() ? 'horizontal' : 'vertical'}\n aria-label={\n props.labelForSeparator?.(props.branch()) ??\n (horizontal() ? 'Resize pane columns' : 'Resize pane rows')\n }\n aria-orientation={horizontal() ? 'vertical' : 'horizontal'}\n aria-controls={listLeaves(props.branch())\n .map((leaf) => props.domId(leaf.id))\n .join(' ')}\n aria-valuemin={10}\n aria-valuemax={90}\n aria-valuenow={Math.round(props.branch().ratio * 100)}\n style={\n horizontal()\n ? { left: `${props.branch().ratio * 100}%`, top: 0, bottom: 0, width: '1px' }\n : { top: `${props.branch().ratio * 100}%`, left: 0, right: 0, height: '1px' }\n }\n onKeyDown={(event) => {\n const forward = horizontal() ? 'ArrowRight' : 'ArrowDown'\n const backward = horizontal() ? 'ArrowLeft' : 'ArrowUp'\n const current = props.branch().ratio\n let next: number\n if (event.key === forward) next = current + KEYBOARD_DELTA\n else if (event.key === backward) next = current - KEYBOARD_DELTA\n else if (event.key === 'Home') next = MIN_SPLIT_RATIO\n else if (event.key === 'End') next = MAX_SPLIT_RATIO\n else return\n event.preventDefault()\n resizeTo(next)\n }}\n onPointerDown={(event) => {\n if (event.button !== 0 || activePointer !== undefined) return\n activePointer = event.pointerId\n event.currentTarget.setPointerCapture(event.pointerId)\n event.currentTarget.setAttribute('data-dragging', '')\n event.preventDefault()\n }}\n onPointerMove={(event) => {\n const element = container()\n if (activePointer !== event.pointerId || !element) return\n const box = element.getBoundingClientRect()\n const size = horizontal() ? box.width : box.height\n if (size <= 0) return\n resizeTo((horizontal() ? event.clientX - box.left : event.clientY - box.top) / size)\n }}\n onPointerUp={(event) => stopDrag(event.currentTarget, event)}\n onPointerCancel={(event) => stopDrag(event.currentTarget, event)}\n onLostPointerCapture={(event) => stopDrag(event.currentTarget, event)}\n class=\"pointer-events-auto absolute shrink-0 bg-border after:absolute after:inset-y-0 after:-inset-x-1 after:w-3 focus-visible:bg-primary focus-visible:outline-none hover:bg-primary data-[orientation=vertical]:after:inset-x-0 data-[orientation=vertical]:after:-inset-y-1 data-[orientation=vertical]:after:h-3 data-[orientation=vertical]:after:w-full\"\n />\n </div>\n )\n}\n"],"mappings":";;;;;AAkBA,IAAMqB,iBAAiB;;AAGvB,SAAwBC,4BACtBC,OACA;CACA,MAAM,CAACC,WAAWC,gBAAgBzB,aAA6B;CAC/D,IAAI0B;CACJ,MAAMC,mBAAmBJ,MAAMd,OAAO,CAAC,CAACmB,cAAc;CAEtD,MAAMC,YAAYT,UAAkB;EAGlC,MAAML,OAAOQ,MAAMR,KAAK;EACxB,IAAI,CAACA,MAAMe,eAAef,KAAKgB,eAAe,CAAC,CAACC,WAAW,GAAG;EAC9D,MAAMC,OAAOC,KAAKC,IAAI9B,iBAAiB6B,KAAKE,IAAIhC,iBAAiBgB,KAAK,CAAC;EACvE,IAAIiB,OAAOC,SAASL,IAAI,KAAKC,KAAKK,IAAIN,OAAOV,MAAMd,OAAO,CAAC,CAACW,KAAK,IAAI,MACnEG,MAAML,SAASK,MAAMd,OAAO,CAAC,CAACK,IAAImB,IAAI;CAC1C;CACA,MAAMO,YAAYC,QAAqBE,UAAwB;EAC7D,IAAIjB,kBAAkBiB,MAAME,WAAW;EACvCnB,gBAAgBoB,KAAAA;EAChBL,OAAOM,gBAAgB,eAAe;EACtC,IAAIN,OAAOO,kBAAkBL,MAAME,SAAS,GAAGJ,OAAOQ,sBAAsBN,MAAME,SAAS;CAC7F;CAEA,cAAA;EAAA,IAAAK,OAAAC,OAAA,GAAAC,QAAAF,KAAAG;EAAAC,IAES7B,cAAYyB,IAAA;EAAAE,MAAAG,iBAAA,uBAuDQZ,UAAUH,SAASG,MAAMa,eAAeb,KAAK,CAAC;EAAAS,MAAAG,iBAAA,kBADnDZ,UAAUH,SAASG,MAAMa,eAAeb,KAAK,CAAC;EAAAS,MAAAK,eADlDd,UAAUH,SAASG,MAAMa,eAAeb,KAAK;EAACS,MAAAM,iBAR5Cf,UAAU;GACxB,MAAMgB,UAAUnC,UAAU;GAC1B,IAAIE,kBAAkBiB,MAAME,aAAa,CAACc,SAAS;GACnD,MAAMC,MAAMD,QAAQE,sBAAsB;GAC1C,MAAMC,OAAOnC,WAAW,IAAIiC,IAAIG,QAAQH,IAAII;GAC5C,IAAIF,QAAQ,GAAG;GACfjC,UAAUF,WAAW,IAAIgB,MAAMsB,UAAUL,IAAIM,OAAOvB,MAAMwB,UAAUP,IAAIQ,OAAON,IAAI;EACrF;EAACV,MAAAiB,iBAde1B,UAAU;GACxB,IAAIA,MAAM2B,WAAW,KAAK5C,kBAAkBoB,KAAAA,GAAW;GACvDpB,gBAAgBiB,MAAME;GACtBF,MAAMa,cAAce,kBAAkB5B,MAAME,SAAS;GACrDF,MAAMa,cAAcgB,aAAa,iBAAiB,EAAE;GACpD7B,MAAM8B,eAAe;EACvB;EAACrB,MAAAsB,aAnBW/B,UAAU;GACpB,MAAMgC,UAAUhD,WAAW,IAAI,eAAe;GAC9C,MAAMiD,WAAWjD,WAAW,IAAI,cAAc;GAC9C,MAAMkD,UAAUtD,MAAMd,OAAO,CAAC,CAACW;GAC/B,IAAIa;GACJ,IAAIU,MAAMmC,QAAQH,SAAS1C,OAAO4C,UAAUxD;QACvC,IAAIsB,MAAMmC,QAAQF,UAAU3C,OAAO4C,UAAUxD;QAC7C,IAAIsB,MAAMmC,QAAQ,QAAQ7C,OAAO7B;QACjC,IAAIuC,MAAMmC,QAAQ,OAAO7C,OAAO5B;QAChC;GACLsC,MAAM8B,eAAe;GACrB5C,SAASI,IAAI;EACf;EAAC8C,QAAAC,QAAA;GAAA,IAAAC,MApCI1D,MAAMZ,KAAK,GAACuE,OAOCvD,WAAW,IAAI,eAAe,YAAUwD,OAExD5D,MAAMN,oBAAoBM,MAAMd,OAAO,CAAC,MACvCkB,WAAW,IAAI,wBAAwB,qBAAmByD,OAE3CzD,WAAW,IAAI,aAAa,cAAY0D,OAC3ClF,WAAWoB,MAAMd,OAAO,CAAC,CAAC,CACtC6E,KAAKC,SAAShE,MAAMV,MAAM0E,KAAKzE,EAAE,CAAC,CAAC,CACnC0E,KAAK,GAAG,GAACC,OAGGvD,KAAKwD,MAAMnE,MAAMd,OAAO,CAAC,CAACW,QAAQ,GAAG,GAACuE,OAEnDhE,WAAW,IACP;IAAEuC,MAAM,GAAG3C,MAAMd,OAAO,CAAC,CAACW,QAAQ,IAAG;IAAKgD,KAAK;IAAGwB,QAAQ;IAAG7B,OAAO;GAAM,IAC1E;IAAEK,KAAK,GAAG7C,MAAMd,OAAO,CAAC,CAACW,QAAQ,IAAG;IAAK8C,MAAM;IAAG2B,OAAO;IAAG7B,QAAQ;GAAM;GAACgB,IAAAc,IAAAC,MAAA7C,MAAA+B,KAAAD,IAAAc,CAAA;GAAAZ,SAAAF,IAAAgB,KAAAC,aAAA7C,OAAA,oBAAA4B,IAAAgB,IAAAd,IAAA;GAAAC,SAAAH,IAAAkB,KAAAD,aAAA7C,OAAA,cAAA4B,IAAAkB,IAAAf,IAAA;GAAAC,SAAAJ,IAAAmB,KAAAF,aAAA7C,OAAA,oBAAA4B,IAAAmB,IAAAf,IAAA;GAAAC,SAAAL,IAAAoB,KAAAH,aAAA7C,OAAA,iBAAA4B,IAAAoB,IAAAf,IAAA;GAAAI,SAAAT,IAAAqB,KAAAJ,aAAA7C,OAAA,iBAAA4B,IAAAqB,IAAAZ,IAAA;GAAAT,IAAAsB,IAAAP,MAAA3C,OAAAuC,MAAAX,IAAAsB,CAAA;GAAA,OAAAtB;EAAA,GAAA;GAAAc,GAAAhD,KAAAA;GAAAkD,GAAAlD,KAAAA;GAAAoD,GAAApD,KAAAA;GAAAqD,GAAArD,KAAAA;GAAAsD,GAAAtD,KAAAA;GAAAuD,GAAAvD,KAAAA;GAAAwD,GAAAxD,KAAAA;EAAA,CAAA;EAAA,OAAAI;CAAA,EAAA,CAAA;AAqCzF;AAACqD,eAAA;CAAA;CAAA;CAAA;CAAA;AAAA,CAAA"}
@@ -25,6 +25,6 @@ export type SplitLayoutProps<L extends SplitLayoutLeaf> = {
25
25
  renderPaneActions?: (leaf: Accessor<L>) => JSX.Element;
26
26
  class?: string;
27
27
  };
28
- /** Muxy frame geometry keeps leaf owners stable; Corvu owns constrained separator interactions. */
28
+ /** Muxy frame geometry keeps leaf owners stable; the lazy resize controller owns constrained separator interactions. */
29
29
  export declare function SplitLayout<L extends SplitLayoutLeaf>(props: SplitLayoutProps<L>): JSX.Element;
30
30
  //# sourceMappingURL=split-layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"split-layout.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/split-layout/split-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,QAAQ,EACb,KAAK,GAAG,EACT,MAAM,UAAU,CAAA;AAOjB,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAA;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAI5C,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAA;AAQhB,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,eAAe,IAAI;IACxD,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;IACjC,yFAAyF;IACzF,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;IAC9C,yFAAyF;IACzF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;IACpD,+GAA+G;IAC/G,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACrB,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAA;IAC5D,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,sFAAsF;IACtF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IAChD,qGAAqG;IACrG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;IAC3E,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;IACtD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA+HD,mGAAmG;AACnG,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,eAwdhF"}
1
+ {"version":3,"file":"split-layout.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/split-layout/split-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,QAAQ,EACb,KAAK,GAAG,EACT,MAAM,UAAU,CAAA;AAOjB,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAA;AAC5D,YAAY,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAI5C,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAA;AAQhB,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,eAAe,IAAI;IACxD,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;IACjC,yFAAyF;IACzF,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;IAC9C,yFAAyF;IACzF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;IACpD,+GAA+G;IAC/G,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACrB,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAA;IAC5D,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,sFAAsF;IACtF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;IAChD,qGAAqG;IACrG,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;IAC3E,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;IACtD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA+HD,wHAAwH;AACxH,wBAAgB,WAAW,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,eAwdhF"}
@@ -128,7 +128,7 @@ function cloneDragPreviewNode(source) {
128
128
  }
129
129
  return clone;
130
130
  }
131
- /** Muxy frame geometry keeps leaf owners stable; Corvu owns constrained separator interactions. */
131
+ /** Muxy frame geometry keeps leaf owners stable; the lazy resize controller owns constrained separator interactions. */
132
132
  function SplitLayout(props) {
133
133
  let root;
134
134
  let pendingFrame;
@@ -229,7 +229,7 @@ function SplitLayout(props) {
229
229
  if (disposed || generation !== resizeLoadGeneration || branches().length === 0 || focusEpoch !== focusRestoreEpoch) return;
230
230
  const currentFocus = root?.ownerDocument.activeElement;
231
231
  if (currentFocus && currentFocus !== root?.ownerDocument.body && currentFocus !== root) return;
232
- root?.querySelector("[data-corvu-resizable-handle]")?.focus({ preventScroll: true });
232
+ root?.querySelector("[data-split-layout-handle]")?.focus({ preventScroll: true });
233
233
  });
234
234
  }, () => {
235
235
  retryWithAlternateImport = true;