@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
@@ -66,7 +66,7 @@ function SettingsSection(props) {
66
66
  }
67
67
  }), null);
68
68
  insert(_el$6, () => local.children);
69
- effect(() => className(_el$6, cn(local.bodyLayout === "content" ? "flex flex-col gap-4" : "divide-y divide-border rounded-xl border border-border")));
69
+ effect(() => className(_el$6, cn(local.bodyLayout === "content" ? "flex flex-col gap-4" : "divide-y divide-border rounded-xl border border-border [&>[data-slot=empty-description]]:p-4")));
70
70
  return _el$;
71
71
  })();
72
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","names":["ComponentProps","JSX","createUniqueId","Show","splitProps","createFormFieldContext","FormFieldContext","cn","Heading","SettingsSection","props","title","description","action","Element","bodyLayout","local","rest","_el$","_tmpl$3","_el$2","firstChild","_el$3","_el$6","nextSibling","_$spread","_$mergeProps","class","_$insert","_$createComponent","as","size","children","when","_el$4","_tmpl$","_el$5","_tmpl$2","_$effect","_$className","SettingsRow","label","orientation","bare","rowId","labelId","descriptionId","field","defaultControlId","hint","error","undefined","group","Provider","value","_el$7","_tmpl$4","_el$8","_el$9","_el$1","_$setAttribute","_el$0","SettingsField","htmlFor","_el$10","_tmpl$5","_el$11","_el$12","_el$14","_el$13","SettingsPage","_el$15","_tmpl$6","_$mergeProps","_$createComponent","_$className","_$setAttribute"],"sources":["../../../../src/components/composites/settings/settings.tsx"],"sourcesContent":["import type { ComponentProps, JSX } from 'solid-js'\nimport { createUniqueId, Show, splitProps } from 'solid-js'\nimport { createFormFieldContext, FormFieldContext } from '#lib/form-field'\nimport { cn } from '#lib/utils'\nimport { Heading } from '../../ui/typography'\n\n/**\n * SettingsSection and SettingsRow.\n *\n * A settings page is the most repetitive surface in any application, and the\n * one where drift is most visible: label sizes, control widths and description\n * placement all wander unless something fixes them.\n *\n * The row puts the label and description at the start and the control at the\n * end (stacked on a narrow window), so controls line up down the page's end\n * edge regardless of how long the labels are. `SettingsRow` also\n * exposes its label and description through the shared form-field context to\n * the first control inside it. `SettingsField` is the visual stacked layout;\n * use `FormField` when the control needs label, help, or validation wiring.\n */\nexport function SettingsSection(\n props: ComponentProps<'section'> & {\n title: string\n description?: string\n /** A control for the section as a whole, e.g. a master toggle. */\n action?: JSX.Element\n /** Use a spaced content stack for fields, alerts, and cards instead of divided rows. */\n bodyLayout?: 'rows' | 'content'\n }\n) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'title',\n 'description',\n 'action',\n 'bodyLayout',\n 'children',\n ])\n\n return (\n <section\n data-slot=\"settings-section\"\n class={cn('flex flex-col gap-4 px-5 py-5', local.class)}\n {...rest}\n >\n <div class=\"flex items-start justify-between gap-4\">\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <Heading as=\"h2\" size=\"card\">\n {local.title}\n </Heading>\n <Show when={local.description}>\n <p class=\"max-w-prose text-sm text-muted-foreground text-pretty\">{local.description}</p>\n </Show>\n </div>\n <Show when={local.action}>\n <div class=\"flex shrink-0 items-center gap-2\">{local.action}</div>\n </Show>\n </div>\n <div\n data-slot=\"settings-section-body\"\n class={cn(\n local.bodyLayout === 'content'\n ? 'flex flex-col gap-4'\n : 'divide-y divide-border rounded-xl border border-border'\n )}\n >\n {local.children}\n </div>\n </section>\n )\n}\n\n/**\n * One setting: a label and description on the leading side, a control on the\n * trailing side.\n *\n * The label and description are linked to a shared control through field\n * context. An explicit `aria-label` or `aria-labelledby` on the control keeps\n * precedence; otherwise the visible row label names it.\n */\nexport function SettingsRow(\n props: ComponentProps<'div'> & {\n label: string\n description?: string\n /** Render a vertical stack when the control needs the full width. */\n orientation?: 'horizontal' | 'vertical'\n /** Hide the divider this row would otherwise contribute. */\n bare?: boolean\n }\n) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'label',\n 'description',\n 'orientation',\n 'bare',\n 'children',\n ])\n const rowId = createUniqueId()\n const labelId = `${rowId}-label`\n const descriptionId = `${rowId}-description`\n const field = createFormFieldContext({\n defaultControlId: rowId,\n labelId,\n descriptionId,\n hint: () => local.description,\n error: () => undefined,\n group: () => false,\n })\n\n return (\n <FormFieldContext.Provider value={field}>\n <div\n data-slot=\"settings-row\"\n class={cn(\n 'flex gap-4 p-4',\n local.orientation === 'vertical'\n ? 'flex-col'\n : 'flex-col sm:flex-row sm:items-center sm:justify-between',\n local.class\n )}\n {...rest}\n >\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <div id={labelId} data-slot=\"settings-row-label\" class=\"text-sm font-medium\">\n {local.label}\n </div>\n <Show when={local.description}>\n <p id={descriptionId} class=\"max-w-prose text-sm text-muted-foreground text-pretty\">\n {local.description}\n </p>\n </Show>\n </div>\n <div\n data-slot=\"settings-row-control\"\n class={cn('shrink-0', local.orientation === 'vertical' && 'w-full')}\n >\n {local.children}\n </div>\n </div>\n </FormFieldContext.Provider>\n )\n}\n\n/** A stacked label-and-control pair, for a control too wide for a row. */\nexport function SettingsField(\n props: ComponentProps<'div'> & { label: string; description?: string; htmlFor?: string }\n) {\n const [local, rest] = splitProps(props, ['class', 'label', 'description', 'htmlFor', 'children'])\n\n return (\n <div data-slot=\"settings-field\" class={cn('flex flex-col gap-2 p-4', local.class)} {...rest}>\n <div class=\"flex flex-col gap-0.5\">\n <label for={local.htmlFor} class=\"text-sm font-medium\">\n {local.label}\n </label>\n <Show when={local.description}>\n <p class=\"max-w-prose text-sm text-muted-foreground text-pretty\">{local.description}</p>\n </Show>\n </div>\n <div>{local.children}</div>\n </div>\n )\n}\n\n/** A settings page's scrolling body, with the header sticky at the top. */\nexport function SettingsPage(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class'])\n return (\n <div\n data-slot=\"settings-page\"\n class={cn('flex min-h-0 flex-1 flex-col overflow-y-auto', local.class)}\n {...rest}\n />\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","names":["ComponentProps","JSX","createUniqueId","Show","splitProps","createFormFieldContext","FormFieldContext","cn","Heading","SettingsSection","props","title","description","action","Element","bodyLayout","local","rest","_el$","_tmpl$3","_el$2","firstChild","_el$3","_el$6","nextSibling","_$spread","_$mergeProps","class","_$insert","_$createComponent","as","size","children","when","_el$4","_tmpl$","_el$5","_tmpl$2","_$effect","_$className","SettingsRow","label","orientation","bare","rowId","labelId","descriptionId","field","defaultControlId","hint","error","undefined","group","Provider","value","_el$7","_tmpl$4","_el$8","_el$9","_el$1","_$setAttribute","_el$0","SettingsField","htmlFor","_el$10","_tmpl$5","_el$11","_el$12","_el$14","_el$13","SettingsPage","_el$15","_tmpl$6","_$mergeProps","_$createComponent","_$className","_$setAttribute"],"sources":["../../../../src/components/composites/settings/settings.tsx"],"sourcesContent":["import type { ComponentProps, JSX } from 'solid-js'\nimport { createUniqueId, Show, splitProps } from 'solid-js'\nimport { createFormFieldContext, FormFieldContext } from '#lib/form-field'\nimport { cn } from '#lib/utils'\nimport { Heading } from '../../ui/typography'\n\n/**\n * SettingsSection and SettingsRow.\n *\n * A settings page is the most repetitive surface in any application, and the\n * one where drift is most visible: label sizes, control widths and description\n * placement all wander unless something fixes them.\n *\n * The row puts the label and description at the start and the control at the\n * end (stacked on a narrow window), so controls line up down the page's end\n * edge regardless of how long the labels are. `SettingsRow` also\n * exposes its label and description through the shared form-field context to\n * the first control inside it. `SettingsField` is the visual stacked layout;\n * use `FormField` when the control needs label, help, or validation wiring.\n */\nexport function SettingsSection(\n props: ComponentProps<'section'> & {\n title: string\n description?: string\n /** A control for the section as a whole, e.g. a master toggle. */\n action?: JSX.Element\n /** Use a spaced content stack for fields, alerts, and cards instead of divided rows. */\n bodyLayout?: 'rows' | 'content'\n }\n) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'title',\n 'description',\n 'action',\n 'bodyLayout',\n 'children',\n ])\n\n return (\n <section\n data-slot=\"settings-section\"\n class={cn('flex flex-col gap-4 px-5 py-5', local.class)}\n {...rest}\n >\n <div class=\"flex items-start justify-between gap-4\">\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <Heading as=\"h2\" size=\"card\">\n {local.title}\n </Heading>\n <Show when={local.description}>\n <p class=\"max-w-prose text-sm text-muted-foreground text-pretty\">{local.description}</p>\n </Show>\n </div>\n <Show when={local.action}>\n <div class=\"flex shrink-0 items-center gap-2\">{local.action}</div>\n </Show>\n </div>\n <div\n data-slot=\"settings-section-body\"\n class={cn(\n local.bodyLayout === 'content'\n ? 'flex flex-col gap-4'\n : 'divide-y divide-border rounded-xl border border-border [&>[data-slot=empty-description]]:p-4'\n )}\n >\n {local.children}\n </div>\n </section>\n )\n}\n\n/**\n * One setting: a label and description on the leading side, a control on the\n * trailing side.\n *\n * The label and description are linked to a shared control through field\n * context. An explicit `aria-label` or `aria-labelledby` on the control keeps\n * precedence; otherwise the visible row label names it.\n */\nexport function SettingsRow(\n props: ComponentProps<'div'> & {\n label: string\n description?: string\n /** Render a vertical stack when the control needs the full width. */\n orientation?: 'horizontal' | 'vertical'\n /** Hide the divider this row would otherwise contribute. */\n bare?: boolean\n }\n) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'label',\n 'description',\n 'orientation',\n 'bare',\n 'children',\n ])\n const rowId = createUniqueId()\n const labelId = `${rowId}-label`\n const descriptionId = `${rowId}-description`\n const field = createFormFieldContext({\n defaultControlId: rowId,\n labelId,\n descriptionId,\n hint: () => local.description,\n error: () => undefined,\n group: () => false,\n })\n\n return (\n <FormFieldContext.Provider value={field}>\n <div\n data-slot=\"settings-row\"\n class={cn(\n 'flex gap-4 p-4',\n local.orientation === 'vertical'\n ? 'flex-col'\n : 'flex-col sm:flex-row sm:items-center sm:justify-between',\n local.class\n )}\n {...rest}\n >\n <div class=\"flex min-w-0 flex-col gap-0.5\">\n <div id={labelId} data-slot=\"settings-row-label\" class=\"text-sm font-medium\">\n {local.label}\n </div>\n <Show when={local.description}>\n <p id={descriptionId} class=\"max-w-prose text-sm text-muted-foreground text-pretty\">\n {local.description}\n </p>\n </Show>\n </div>\n <div\n data-slot=\"settings-row-control\"\n class={cn('shrink-0', local.orientation === 'vertical' && 'w-full')}\n >\n {local.children}\n </div>\n </div>\n </FormFieldContext.Provider>\n )\n}\n\n/** A stacked label-and-control pair, for a control too wide for a row. */\nexport function SettingsField(\n props: ComponentProps<'div'> & { label: string; description?: string; htmlFor?: string }\n) {\n const [local, rest] = splitProps(props, ['class', 'label', 'description', 'htmlFor', 'children'])\n\n return (\n <div data-slot=\"settings-field\" class={cn('flex flex-col gap-2 p-4', local.class)} {...rest}>\n <div class=\"flex flex-col gap-0.5\">\n <label for={local.htmlFor} class=\"text-sm font-medium\">\n {local.label}\n </label>\n <Show when={local.description}>\n <p class=\"max-w-prose text-sm text-muted-foreground text-pretty\">{local.description}</p>\n </Show>\n </div>\n <div>{local.children}</div>\n </div>\n )\n}\n\n/** A settings page's scrolling body, with the header sticky at the top. */\nexport function SettingsPage(props: ComponentProps<'div'>) {\n const [local, rest] = splitProps(props, ['class'])\n return (\n <div\n data-slot=\"settings-page\"\n class={cn('flex min-h-0 flex-1 flex-col overflow-y-auto', local.class)}\n {...rest}\n />\n )\n}\n"],"mappings":"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"}
@@ -22,13 +22,14 @@ export type PixelResizeHandleProps = {
22
22
  *
23
23
  * A keyboard- and pointer-operable edge ruler for a host-owned pane. Keep the
24
24
  * pane's actual width and any persistence in its layout owner; this component
25
- * reports a bounded pixel value and places the shared resizable grip at the
26
- * matching left or right edge.
25
+ * reports a bounded pixel value and draws the grip at the matching left or
26
+ * right edge.
27
27
  *
28
- * Corvu 0.2.5 supplies geometry, keyboard resizing, ARIA and the shared grip,
29
- * but its global drag handler does not end on pointer cancellation. Prevent
30
- * that handler through its public start hook and use local pointer capture
31
- * for bounded pixel gestures, including cancellation and lost capture.
28
+ * The ruler is a single separator positioned inside a box as wide as the
29
+ * maximum, so it needs no panel-group geometry (and none of the split-layout
30
+ * code that comes with one): arrow keys move it by `step` along its visual
31
+ * edge, Home and End jump to the bounds, and a pointer drag is captured on the
32
+ * handle so cancellation and lost capture end the gesture.
32
33
  */
33
34
  export declare function PixelResizeHandle(props: PixelResizeHandleProps): import("solid-js").JSX.Element;
34
35
  //# sourceMappingURL=pixel-resize-handle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pixel-resize-handle.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/pixel-resize-handle/pixel-resize-handle.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,sBAAsB,GAAG;IACnC,6EAA6E;IAC7E,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,kCAgJ9D"}
1
+ {"version":3,"file":"pixel-resize-handle.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/pixel-resize-handle/pixel-resize-handle.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,sBAAsB,GAAG;IACnC,6EAA6E;IAC7E,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,kCA8I9D"}
@@ -1,28 +1,31 @@
1
1
  import { cn } from "../../../lib/utils.js";
2
- import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "../../ui/resizable/resizable.js";
3
- import { createComponent, memo } from "solid-js/web";
2
+ import { className, createComponent, delegateEvents, effect, insert, memo, setAttribute, setStyleProperty, template } from "solid-js/web";
3
+ import { GripVertical } from "lucide-solid";
4
4
  import { createSignal, onCleanup } from "solid-js";
5
5
  //#region src/components/layout/pixel-resize-handle/pixel-resize-handle.tsx
6
+ var _tmpl$ = /*#__PURE__*/ template(`<div><div role=separator tabindex=0 aria-orientation=vertical>`);
7
+ var _tmpl$2 = /*#__PURE__*/ template(`<div class="bg-border z-(--z-docked) flex h-4 w-2.5 items-center justify-center rounded-sm border border-border">`);
8
+ var _tmpl$3 = /*#__PURE__*/ template(`<div data-slot=resizable-grip class="z-(--z-docked) h-11 w-1.5 flex-none rounded-full bg-border/55">`);
6
9
  /**
7
10
  * PixelResizeHandle.
8
11
  *
9
12
  * A keyboard- and pointer-operable edge ruler for a host-owned pane. Keep the
10
13
  * pane's actual width and any persistence in its layout owner; this component
11
- * reports a bounded pixel value and places the shared resizable grip at the
12
- * matching left or right edge.
14
+ * reports a bounded pixel value and draws the grip at the matching left or
15
+ * right edge.
13
16
  *
14
- * Corvu 0.2.5 supplies geometry, keyboard resizing, ARIA and the shared grip,
15
- * but its global drag handler does not end on pointer cancellation. Prevent
16
- * that handler through its public start hook and use local pointer capture
17
- * for bounded pixel gestures, including cancellation and lost capture.
17
+ * The ruler is a single separator positioned inside a box as wide as the
18
+ * maximum, so it needs no panel-group geometry (and none of the split-layout
19
+ * code that comes with one): arrow keys move it by `step` along its visual
20
+ * edge, Home and End jump to the bounds, and a pointer drag is captured on the
21
+ * handle so cancellation and lost capture end the gesture.
18
22
  */
19
23
  function PixelResizeHandle(props) {
20
24
  const maximum = () => Math.max(1, props.maximum);
21
25
  const minimum = () => Math.min(maximum(), Math.max(0, props.minimum));
22
26
  const value = () => Math.min(maximum(), Math.max(minimum(), Math.round(props.value)));
23
- const ratio = () => value() / maximum();
24
27
  const isRight = () => props.side === "right";
25
- const rulerSizes = () => isRight() ? [1 - ratio(), ratio()] : [ratio(), 1 - ratio()];
28
+ const bounded = (next) => Math.min(maximum(), Math.max(minimum(), Math.round(next)));
26
29
  const commit = () => props.onCommit?.(value());
27
30
  let interacting = false;
28
31
  const [drag, setDrag] = createSignal();
@@ -42,143 +45,126 @@ function PixelResizeHandle(props) {
42
45
  endKeyboard();
43
46
  endPointer(false);
44
47
  });
45
- return createComponent(ResizablePanelGroup, {
46
- orientation: "horizontal",
47
- dir: "ltr",
48
- get sizes() {
49
- return rulerSizes();
50
- },
51
- get keyboardDelta() {
52
- return `${props.step ?? 16}px`;
53
- },
54
- get style() {
55
- return { width: `${maximum()}px` };
56
- },
57
- get ["class"]() {
58
- return cn("pointer-events-none absolute inset-y-0 flex", {
48
+ const move = (next) => {
49
+ if (next !== value()) props.onChange(next);
50
+ };
51
+ const KEY_DIRECTION = {
52
+ ArrowLeft: -1,
53
+ ArrowRight: 1
54
+ };
55
+ return (() => {
56
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild;
57
+ _el$2.$$keyup = (event) => {
58
+ if ([
59
+ "ArrowLeft",
60
+ "ArrowRight",
61
+ "Home",
62
+ "End"
63
+ ].includes(event.key)) endKeyboard();
64
+ };
65
+ _el$2.$$keydown = (event) => {
66
+ const current = drag();
67
+ if (current && !current.handle.hasPointerCapture(current.pointerId)) endPointer(false);
68
+ if (drag()) {
69
+ event.preventDefault();
70
+ return;
71
+ }
72
+ const direction = KEY_DIRECTION[event.key];
73
+ if (direction !== void 0) {
74
+ event.preventDefault();
75
+ interacting = true;
76
+ move(bounded(value() + direction * (isRight() ? -1 : 1) * (props.step ?? 16)));
77
+ } else if (event.key === "Home" || event.key === "End") {
78
+ event.preventDefault();
79
+ interacting = true;
80
+ move(event.key === "Home" ? minimum() : maximum());
81
+ }
82
+ };
83
+ _el$2.addEventListener("blur", () => {
84
+ endKeyboard();
85
+ endPointer(false);
86
+ });
87
+ _el$2.addEventListener("lostpointercapture", (event) => {
88
+ if (event.pointerId === drag()?.pointerId) endPointer(false);
89
+ });
90
+ _el$2.addEventListener("pointercancel", (event) => {
91
+ if (event.pointerId === drag()?.pointerId) endPointer(false);
92
+ });
93
+ _el$2.$$pointerup = (event) => {
94
+ if (event.pointerId === drag()?.pointerId) endPointer(true);
95
+ };
96
+ _el$2.$$pointermove = (event) => {
97
+ const current = drag();
98
+ if (!current || event.pointerId !== current.pointerId) return;
99
+ if (!current.handle.hasPointerCapture(current.pointerId)) {
100
+ endPointer(false);
101
+ return;
102
+ }
103
+ const delta = (event.clientX - current.startX) * (isRight() ? -1 : 1);
104
+ move(bounded(current.startValue + delta));
105
+ };
106
+ _el$2.$$pointerdown = (event) => {
107
+ if (event.button !== 0 || !event.isPrimary) return;
108
+ const handle = event.currentTarget;
109
+ endPointer(false);
110
+ interacting = false;
111
+ handle.focus();
112
+ handle.setPointerCapture(event.pointerId);
113
+ setDrag({
114
+ pointerId: event.pointerId,
115
+ startX: event.clientX,
116
+ startValue: value(),
117
+ handle
118
+ });
119
+ };
120
+ insert(_el$2, (() => {
121
+ var _c$ = memo(() => props.grip === "chip");
122
+ return () => _c$() ? (() => {
123
+ var _el$3 = _tmpl$2();
124
+ insert(_el$3, createComponent(GripVertical, { "class": "size-2.5 text-muted-foreground" }));
125
+ return _el$3;
126
+ })() : _tmpl$3();
127
+ })());
128
+ effect((_p$) => {
129
+ var _v$ = cn("pointer-events-none absolute inset-y-0", {
59
130
  "left-0": props.side === "left",
60
131
  "right-0": props.side === "right"
61
- }, props.class);
62
- },
63
- onSizesChange: (sizes) => {
64
- if (!interacting || sizes.length !== 2) return;
65
- const next = Math.round((sizes[isRight() ? 1 : 0] ?? ratio()) * maximum());
66
- const bounded = Math.min(maximum(), Math.max(minimum(), next));
67
- if (bounded !== value()) props.onChange(bounded);
68
- },
69
- get children() {
70
- return [
71
- createComponent(ResizablePanel, {
72
- get minSize() {
73
- return memo(() => !!isRight())() ? 0 : minimum() / maximum();
74
- },
75
- maxSize: 1,
76
- "aria-hidden": "true"
77
- }),
78
- createComponent(ResizableHandle, {
79
- get withHandle() {
80
- return props.grip === "chip" ? true : "rung";
81
- },
82
- get label() {
83
- return props.label ?? `Resize ${props.side} pane`;
84
- },
85
- get ["aria-controls"]() {
86
- return props.controls;
87
- },
88
- get ["aria-valuemin"]() {
89
- return minimum();
90
- },
91
- get ["aria-valuemax"]() {
92
- return maximum();
93
- },
94
- get ["aria-valuenow"]() {
95
- return value();
96
- },
97
- get ["aria-valuetext"]() {
98
- return `${value()} pixels`;
99
- },
100
- get ["data-dragging"]() {
101
- return drag() ? "" : void 0;
102
- },
103
- onHandleDragStart: (event) => {
104
- event.preventDefault();
105
- if (event.button !== 0 || !event.isPrimary) return;
106
- const handle = event.currentTarget;
107
- if (!(handle instanceof HTMLElement)) return;
108
- endPointer(false);
109
- interacting = false;
110
- handle.focus();
111
- handle.setPointerCapture(event.pointerId);
112
- setDrag({
113
- pointerId: event.pointerId,
114
- startX: event.clientX,
115
- startValue: value(),
116
- handle
117
- });
118
- },
119
- onPointerMove: (event) => {
120
- const current = drag();
121
- if (!current || event.pointerId !== current.pointerId) return;
122
- if (!current.handle.hasPointerCapture(current.pointerId)) {
123
- endPointer(false);
124
- return;
125
- }
126
- const delta = (event.clientX - current.startX) * (isRight() ? -1 : 1);
127
- const next = Math.min(maximum(), Math.max(minimum(), Math.round(current.startValue + delta)));
128
- if (next !== value()) props.onChange(next);
129
- },
130
- onPointerUp: (event) => {
131
- if (event.pointerId === drag()?.pointerId) endPointer(true);
132
- },
133
- onPointerCancel: (event) => {
134
- if (event.pointerId === drag()?.pointerId) endPointer(false);
135
- },
136
- onLostPointerCapture: (event) => {
137
- if (event.pointerId === drag()?.pointerId) endPointer(false);
138
- },
139
- onBlur: () => {
140
- endKeyboard();
141
- endPointer(false);
142
- },
143
- onKeyDown: (event) => {
144
- const current = drag();
145
- if (current && !current.handle.hasPointerCapture(current.pointerId)) endPointer(false);
146
- if (drag()) {
147
- event.preventDefault();
148
- return;
149
- }
150
- if ([
151
- "ArrowLeft",
152
- "ArrowRight",
153
- "Home",
154
- "End"
155
- ].includes(event.key)) interacting = true;
156
- if (event.key === "Home" || event.key === "End") {
157
- event.preventDefault();
158
- props.onChange(event.key === "Home" ? minimum() : maximum());
159
- }
160
- },
161
- onKeyUp: (event) => {
162
- if ([
163
- "ArrowLeft",
164
- "ArrowRight",
165
- "Home",
166
- "End"
167
- ].includes(event.key)) endKeyboard();
168
- },
169
- "class": "pointer-events-auto"
170
- }),
171
- createComponent(ResizablePanel, {
172
- get minSize() {
173
- return memo(() => !!isRight())() ? minimum() / maximum() : 0;
174
- },
175
- maxSize: 1,
176
- "aria-hidden": "true"
177
- })
178
- ];
179
- }
180
- });
132
+ }, props.class), _v$2 = `${maximum()}px`, _v$3 = props.label ?? `Resize ${props.side} pane`, _v$4 = props.controls, _v$5 = minimum(), _v$6 = maximum(), _v$7 = value(), _v$8 = `${value()} pixels`, _v$9 = drag() ? "" : void 0, _v$0 = `${isRight() ? maximum() - value() : value()}px`, _v$1 = cn("group/resize bg-border pointer-events-auto absolute inset-y-0 flex w-px items-center justify-center", "after:absolute after:inset-y-0 after:-inset-x-3 after:w-6", "transition-colors ease-out focus-visible:bg-primary focus-visible:outline-none", props.grip === "chip" ? "hover:bg-primary" : "hover:bg-primary/45");
133
+ _v$ !== _p$.e && className(_el$, _p$.e = _v$);
134
+ _v$2 !== _p$.t && setStyleProperty(_el$, "width", _p$.t = _v$2);
135
+ _v$3 !== _p$.a && setAttribute(_el$2, "aria-label", _p$.a = _v$3);
136
+ _v$4 !== _p$.o && setAttribute(_el$2, "aria-controls", _p$.o = _v$4);
137
+ _v$5 !== _p$.i && setAttribute(_el$2, "aria-valuemin", _p$.i = _v$5);
138
+ _v$6 !== _p$.n && setAttribute(_el$2, "aria-valuemax", _p$.n = _v$6);
139
+ _v$7 !== _p$.s && setAttribute(_el$2, "aria-valuenow", _p$.s = _v$7);
140
+ _v$8 !== _p$.h && setAttribute(_el$2, "aria-valuetext", _p$.h = _v$8);
141
+ _v$9 !== _p$.r && setAttribute(_el$2, "data-dragging", _p$.r = _v$9);
142
+ _v$0 !== _p$.d && setStyleProperty(_el$2, "left", _p$.d = _v$0);
143
+ _v$1 !== _p$.l && className(_el$2, _p$.l = _v$1);
144
+ return _p$;
145
+ }, {
146
+ e: void 0,
147
+ t: void 0,
148
+ a: void 0,
149
+ o: void 0,
150
+ i: void 0,
151
+ n: void 0,
152
+ s: void 0,
153
+ h: void 0,
154
+ r: void 0,
155
+ d: void 0,
156
+ l: void 0
157
+ });
158
+ return _el$;
159
+ })();
181
160
  }
161
+ delegateEvents([
162
+ "pointerdown",
163
+ "pointermove",
164
+ "pointerup",
165
+ "keydown",
166
+ "keyup"
167
+ ]);
182
168
  //#endregion
183
169
  export { PixelResizeHandle };
184
170
 
@@ -1 +1 @@
1
- {"version":3,"file":"pixel-resize-handle.js","names":["ResizableHandle","ResizablePanel","ResizablePanelGroup","createSignal","onCleanup","cn","PixelResizeHandleProps","side","value","minimum","maximum","step","label","controls","class","grip","onChange","onCommit","PixelResizeHandle","props","Math","max","min","round","ratio","isRight","rulerSizes","commit","interacting","drag","setDrag","pointerId","startX","startValue","handle","HTMLElement","endPointer","shouldCommit","current","undefined","hasPointerCapture","releasePointerCapture","endKeyboard","wasInteracting","_$createComponent","orientation","dir","sizes","keyboardDelta","style","width","onSizesChange","length","next","bounded","children","minSize","_$memo","maxSize","withHandle","aria-controls","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext","data-dragging","onHandleDragStart","event","preventDefault","button","isPrimary","currentTarget","focus","setPointerCapture","clientX","onPointerMove","PointerEvent","delta","onPointerUp","onPointerCancel","onLostPointerCapture","onBlur","onKeyDown","includes","key","onKeyUp","_$createComponent","_$memo"],"sources":["../../../../src/components/layout/pixel-resize-handle/pixel-resize-handle.tsx"],"sourcesContent":["import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '../../ui/resizable'\nimport { createSignal, onCleanup } from 'solid-js'\nimport { cn } from '#lib/utils'\n\nexport type PixelResizeHandleProps = {\n /** Which physical edge of the ruler the resizable surface is attached to. */\n side: 'left' | 'right'\n /** Current width in CSS pixels. */\n value: number\n minimum: number\n maximum: number\n step?: number\n label?: string\n controls?: string\n class?: string\n /**\n * The grip drawn on the edge: the quieter rung by default, or the bordered\n * chip for hosts that want the heavier affordance.\n */\n grip?: 'chip' | 'rung'\n onChange(value: number): void\n onCommit?(value: number): void\n}\n\n/**\n * PixelResizeHandle.\n *\n * A keyboard- and pointer-operable edge ruler for a host-owned pane. Keep the\n * pane's actual width and any persistence in its layout owner; this component\n * reports a bounded pixel value and places the shared resizable grip at the\n * matching left or right edge.\n *\n * Corvu 0.2.5 supplies geometry, keyboard resizing, ARIA and the shared grip,\n * but its global drag handler does not end on pointer cancellation. Prevent\n * that handler through its public start hook and use local pointer capture\n * for bounded pixel gestures, including cancellation and lost capture.\n */\nexport function PixelResizeHandle(props: PixelResizeHandleProps) {\n const maximum = () => Math.max(1, props.maximum)\n const minimum = () => Math.min(maximum(), Math.max(0, props.minimum))\n const value = () => Math.min(maximum(), Math.max(minimum(), Math.round(props.value)))\n const ratio = () => value() / maximum()\n const isRight = () => props.side === 'right'\n const rulerSizes = () => (isRight() ? [1 - ratio(), ratio()] : [ratio(), 1 - ratio()])\n const commit = () => props.onCommit?.(value())\n let interacting = false\n const [drag, setDrag] = createSignal<{\n pointerId: number\n startX: number\n startValue: number\n handle: HTMLElement\n }>()\n const endPointer = (shouldCommit: boolean) => {\n const current = drag()\n if (!current) return\n setDrag(undefined)\n if (current.handle.hasPointerCapture(current.pointerId))\n current.handle.releasePointerCapture(current.pointerId)\n if (shouldCommit) commit()\n }\n const endKeyboard = () => {\n const wasInteracting = interacting\n interacting = false\n if (wasInteracting) commit()\n }\n onCleanup(() => {\n endKeyboard()\n endPointer(false)\n })\n\n return (\n <ResizablePanelGroup\n orientation=\"horizontal\"\n dir=\"ltr\"\n sizes={rulerSizes()}\n keyboardDelta={`${props.step ?? 16}px`}\n style={{ width: `${maximum()}px` }}\n class={cn(\n 'pointer-events-none absolute inset-y-0 flex',\n {\n 'left-0': props.side === 'left',\n 'right-0': props.side === 'right',\n },\n props.class\n )}\n onSizesChange={(sizes) => {\n // Panel registration and teardown also emit sizes. Only user resizing\n // may update the host preference; collapsing must preserve its width.\n if (!interacting || sizes.length !== 2) return\n const next = Math.round((sizes[isRight() ? 1 : 0] ?? ratio()) * maximum())\n const bounded = Math.min(maximum(), Math.max(minimum(), next))\n if (bounded !== value()) props.onChange(bounded)\n }}\n >\n <ResizablePanel\n minSize={isRight() ? 0 : minimum() / maximum()}\n maxSize={1}\n aria-hidden=\"true\"\n />\n <ResizableHandle\n withHandle={props.grip === 'chip' ? true : 'rung'}\n label={props.label ?? `Resize ${props.side} pane`}\n aria-controls={props.controls}\n aria-valuemin={minimum()}\n aria-valuemax={maximum()}\n aria-valuenow={value()}\n aria-valuetext={`${value()} pixels`}\n data-dragging={drag() ? '' : undefined}\n onHandleDragStart={(event) => {\n // Corvu checks defaultPrevented before starting its global handler.\n event.preventDefault()\n if (event.button !== 0 || !event.isPrimary) return\n const handle = event.currentTarget\n if (!(handle instanceof HTMLElement)) return\n endPointer(false)\n interacting = false\n handle.focus()\n handle.setPointerCapture(event.pointerId)\n setDrag({\n pointerId: event.pointerId,\n startX: event.clientX,\n startValue: value(),\n handle,\n })\n }}\n onPointerMove={(event: PointerEvent) => {\n const current = drag()\n if (!current || event.pointerId !== current.pointerId) return\n if (!current.handle.hasPointerCapture(current.pointerId)) {\n endPointer(false)\n return\n }\n const delta = (event.clientX - current.startX) * (isRight() ? -1 : 1)\n const next = Math.min(\n maximum(),\n Math.max(minimum(), Math.round(current.startValue + delta))\n )\n if (next !== value()) props.onChange(next)\n }}\n onPointerUp={(event: PointerEvent) => {\n if (event.pointerId === drag()?.pointerId) endPointer(true)\n }}\n onPointerCancel={(event: PointerEvent) => {\n if (event.pointerId === drag()?.pointerId) endPointer(false)\n }}\n onLostPointerCapture={(event: PointerEvent) => {\n if (event.pointerId === drag()?.pointerId) endPointer(false)\n }}\n onBlur={() => {\n endKeyboard()\n endPointer(false)\n }}\n onKeyDown={(event) => {\n const current = drag()\n if (current && !current.handle.hasPointerCapture(current.pointerId)) endPointer(false)\n if (drag()) {\n event.preventDefault()\n return\n }\n if (['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) interacting = true\n // Corvu operates on physical panel order. Home/End here describe\n // the controlled pane width, including a pane after the separator.\n if (event.key === 'Home' || event.key === 'End') {\n event.preventDefault()\n props.onChange(event.key === 'Home' ? minimum() : maximum())\n }\n }}\n onKeyUp={(event) => {\n if (['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) {\n endKeyboard()\n }\n }}\n class=\"pointer-events-auto\"\n />\n <ResizablePanel\n minSize={isRight() ? minimum() / maximum() : 0}\n maxSize={1}\n aria-hidden=\"true\"\n />\n </ResizablePanelGroup>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pixel-resize-handle.js","names":["GripVertical","createSignal","onCleanup","cn","PixelResizeHandleProps","side","value","minimum","maximum","step","label","controls","class","grip","onChange","onCommit","PixelResizeHandle","props","Math","max","min","round","isRight","bounded","next","commit","interacting","drag","setDrag","pointerId","startX","startValue","handle","HTMLElement","endPointer","shouldCommit","current","undefined","hasPointerCapture","releasePointerCapture","endKeyboard","wasInteracting","move","KEY_DIRECTION","Record","ArrowLeft","ArrowRight","_el$","_tmpl$","_el$2","firstChild","$$keyup","event","includes","key","$$keydown","preventDefault","direction","addEventListener","$$pointerup","$$pointermove","delta","clientX","$$pointerdown","button","isPrimary","currentTarget","focus","setPointerCapture","_$insert","_c$","_$memo","_el$3","_tmpl$2","_$createComponent","_tmpl$3","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","e","_$className","t","_$setStyleProperty","a","_$setAttribute","o","i","n","s","h","r","d","l","_$delegateEvents","_$memo","_$createComponent","_$className","_$setStyleProperty","_$setAttribute","_$delegateEvents"],"sources":["../../../../src/components/layout/pixel-resize-handle/pixel-resize-handle.tsx"],"sourcesContent":["import { GripVertical } from 'lucide-solid'\nimport { createSignal, onCleanup } from 'solid-js'\nimport { cn } from '#lib/utils'\n\nexport type PixelResizeHandleProps = {\n /** Which physical edge of the ruler the resizable surface is attached to. */\n side: 'left' | 'right'\n /** Current width in CSS pixels. */\n value: number\n minimum: number\n maximum: number\n step?: number\n label?: string\n controls?: string\n class?: string\n /**\n * The grip drawn on the edge: the quieter rung by default, or the bordered\n * chip for hosts that want the heavier affordance.\n */\n grip?: 'chip' | 'rung'\n onChange(value: number): void\n onCommit?(value: number): void\n}\n\n/**\n * PixelResizeHandle.\n *\n * A keyboard- and pointer-operable edge ruler for a host-owned pane. Keep the\n * pane's actual width and any persistence in its layout owner; this component\n * reports a bounded pixel value and draws the grip at the matching left or\n * right edge.\n *\n * The ruler is a single separator positioned inside a box as wide as the\n * maximum, so it needs no panel-group geometry (and none of the split-layout\n * code that comes with one): arrow keys move it by `step` along its visual\n * edge, Home and End jump to the bounds, and a pointer drag is captured on the\n * handle so cancellation and lost capture end the gesture.\n */\nexport function PixelResizeHandle(props: PixelResizeHandleProps) {\n const maximum = () => Math.max(1, props.maximum)\n const minimum = () => Math.min(maximum(), Math.max(0, props.minimum))\n const value = () => Math.min(maximum(), Math.max(minimum(), Math.round(props.value)))\n const isRight = () => props.side === 'right'\n const bounded = (next: number) => Math.min(maximum(), Math.max(minimum(), Math.round(next)))\n const commit = () => props.onCommit?.(value())\n let interacting = false\n const [drag, setDrag] = createSignal<{\n pointerId: number\n startX: number\n startValue: number\n handle: HTMLElement\n }>()\n const endPointer = (shouldCommit: boolean) => {\n const current = drag()\n if (!current) return\n setDrag(undefined)\n if (current.handle.hasPointerCapture(current.pointerId))\n current.handle.releasePointerCapture(current.pointerId)\n if (shouldCommit) commit()\n }\n const endKeyboard = () => {\n const wasInteracting = interacting\n interacting = false\n if (wasInteracting) commit()\n }\n onCleanup(() => {\n endKeyboard()\n endPointer(false)\n })\n const move = (next: number) => {\n if (next !== value()) props.onChange(next)\n }\n // Arrow keys describe physical movement of the handle: on a right-edge pane\n // moving the handle left widens the pane.\n const KEY_DIRECTION: Record<string, number> = { ArrowLeft: -1, ArrowRight: 1 }\n\n return (\n <div\n class={cn(\n 'pointer-events-none absolute inset-y-0',\n {\n 'left-0': props.side === 'left',\n 'right-0': props.side === 'right',\n },\n props.class\n )}\n style={{ width: `${maximum()}px` }}\n >\n <div\n role=\"separator\"\n tabIndex={0}\n aria-orientation=\"vertical\"\n aria-label={props.label ?? `Resize ${props.side} pane`}\n aria-controls={props.controls}\n aria-valuemin={minimum()}\n aria-valuemax={maximum()}\n aria-valuenow={value()}\n aria-valuetext={`${value()} pixels`}\n data-dragging={drag() ? '' : undefined}\n style={{ left: `${isRight() ? maximum() - value() : value()}px` }}\n class={cn(\n 'group/resize bg-border pointer-events-auto absolute inset-y-0 flex w-px items-center justify-center',\n /* Widen the hit target without moving the visual line: 24px on the\n drag axis meets WCAG 2.5.8's minimum target. */\n 'after:absolute after:inset-y-0 after:-inset-x-3 after:w-6',\n 'transition-colors ease-out focus-visible:bg-primary focus-visible:outline-none',\n props.grip === 'chip' ? 'hover:bg-primary' : 'hover:bg-primary/45'\n )}\n onPointerDown={(event) => {\n if (event.button !== 0 || !event.isPrimary) return\n const handle = event.currentTarget\n endPointer(false)\n interacting = false\n handle.focus()\n handle.setPointerCapture(event.pointerId)\n setDrag({\n pointerId: event.pointerId,\n startX: event.clientX,\n startValue: value(),\n handle,\n })\n }}\n onPointerMove={(event) => {\n const current = drag()\n if (!current || event.pointerId !== current.pointerId) return\n if (!current.handle.hasPointerCapture(current.pointerId)) {\n endPointer(false)\n return\n }\n const delta = (event.clientX - current.startX) * (isRight() ? -1 : 1)\n move(bounded(current.startValue + delta))\n }}\n onPointerUp={(event) => {\n if (event.pointerId === drag()?.pointerId) endPointer(true)\n }}\n onPointerCancel={(event) => {\n if (event.pointerId === drag()?.pointerId) endPointer(false)\n }}\n onLostPointerCapture={(event) => {\n if (event.pointerId === drag()?.pointerId) endPointer(false)\n }}\n onBlur={() => {\n endKeyboard()\n endPointer(false)\n }}\n onKeyDown={(event) => {\n const current = drag()\n if (current && !current.handle.hasPointerCapture(current.pointerId)) endPointer(false)\n if (drag()) {\n event.preventDefault()\n return\n }\n const direction = KEY_DIRECTION[event.key]\n if (direction !== undefined) {\n event.preventDefault()\n interacting = true\n move(bounded(value() + direction * (isRight() ? -1 : 1) * (props.step ?? 16)))\n } else if (event.key === 'Home' || event.key === 'End') {\n event.preventDefault()\n interacting = true\n move(event.key === 'Home' ? minimum() : maximum())\n }\n }}\n onKeyUp={(event) => {\n if (['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) endKeyboard()\n }}\n >\n {props.grip === 'chip' ? (\n <div class=\"bg-border z-(--z-docked) flex h-4 w-2.5 items-center justify-center rounded-sm border border-border\">\n <GripVertical class=\"size-2.5 text-muted-foreground\" />\n </div>\n ) : (\n <div\n data-slot=\"resizable-grip\"\n class=\"z-(--z-docked) h-11 w-1.5 flex-none rounded-full bg-border/55\"\n />\n )}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgBgB,kBAAkBC,OAA+B;CAC/D,MAAMT,gBAAgBU,KAAKC,IAAI,GAAGF,MAAMT,OAAO;CAC/C,MAAMD,gBAAgBW,KAAKE,IAAIZ,QAAQ,GAAGU,KAAKC,IAAI,GAAGF,MAAMV,OAAO,CAAC;CACpE,MAAMD,cAAcY,KAAKE,IAAIZ,QAAQ,GAAGU,KAAKC,IAAIZ,QAAQ,GAAGW,KAAKG,MAAMJ,MAAMX,KAAK,CAAC,CAAC;CACpF,MAAMgB,gBAAgBL,MAAMZ,SAAS;CACrC,MAAMkB,WAAWC,SAAiBN,KAAKE,IAAIZ,QAAQ,GAAGU,KAAKC,IAAIZ,QAAQ,GAAGW,KAAKG,MAAMG,IAAI,CAAC,CAAC;CAC3F,MAAMC,eAAeR,MAAMF,WAAWT,MAAM,CAAC;CAC7C,IAAIoB,cAAc;CAClB,MAAM,CAACC,MAAMC,WAAW3B,aAKrB;CACH,MAAMiC,cAAcC,iBAA0B;EAC5C,MAAMC,UAAUT,KAAK;EACrB,IAAI,CAACS,SAAS;EACdR,QAAQS,KAAAA,CAAS;EACjB,IAAID,QAAQJ,OAAOM,kBAAkBF,QAAQP,SAAS,GACpDO,QAAQJ,OAAOO,sBAAsBH,QAAQP,SAAS;EACxD,IAAIM,cAAcV,OAAO;CAC3B;CACA,MAAMe,oBAAoB;EACxB,MAAMC,iBAAiBf;EACvBA,cAAc;EACd,IAAIe,gBAAgBhB,OAAO;CAC7B;CACAvB,gBAAgB;EACdsC,YAAY;EACZN,WAAW,KAAK;CAClB,CAAC;CACD,MAAMQ,QAAQlB,SAAiB;EAC7B,IAAIA,SAASlB,MAAM,GAAGW,MAAMH,SAASU,IAAI;CAC3C;CAGA,MAAMmB,gBAAwC;EAAEE,WAAW;EAAIC,YAAY;CAAE;CAE7E,cAAA;EAAA,IAAAC,OAAAC,OAAA,GAAAC,QAAAF,KAAAG;EAAAD,MAAAE,WAuFgBC,UAAU;GAClB,IAAI;IAAC;IAAa;IAAc;IAAQ;GAAK,CAAC,CAACC,SAASD,MAAME,GAAG,GAAGd,YAAY;EAClF;EAACS,MAAAM,aApBWH,UAAU;GACpB,MAAMhB,UAAUT,KAAK;GACrB,IAAIS,WAAW,CAACA,QAAQJ,OAAOM,kBAAkBF,QAAQP,SAAS,GAAGK,WAAW,KAAK;GACrF,IAAIP,KAAK,GAAG;IACVyB,MAAMI,eAAe;IACrB;GACF;GACA,MAAMC,YAAYd,cAAcS,MAAME;GACtC,IAAIG,cAAcpB,KAAAA,GAAW;IAC3Be,MAAMI,eAAe;IACrB9B,cAAc;IACdgB,KAAKnB,QAAQjB,MAAM,IAAImD,aAAanC,QAAQ,IAAI,KAAK,MAAML,MAAMR,QAAQ,GAAG,CAAC;GAC/E,OAAO,IAAI2C,MAAME,QAAQ,UAAUF,MAAME,QAAQ,OAAO;IACtDF,MAAMI,eAAe;IACrB9B,cAAc;IACdgB,KAAKU,MAAME,QAAQ,SAAS/C,QAAQ,IAAIC,QAAQ,CAAC;GACnD;EACF;EAACyC,MAAAS,iBAAA,cArBa;GACZlB,YAAY;GACZN,WAAW,KAAK;EAClB,CAAC;EAAAe,MAAAS,iBAAA,uBANsBN,UAAU;GAC/B,IAAIA,MAAMvB,cAAcF,KAAK,CAAC,EAAEE,WAAWK,WAAW,KAAK;EAC7D,CAAC;EAAAe,MAAAS,iBAAA,kBALiBN,UAAU;GAC1B,IAAIA,MAAMvB,cAAcF,KAAK,CAAC,EAAEE,WAAWK,WAAW,KAAK;EAC7D,CAAC;EAAAe,MAAAU,eALaP,UAAU;GACtB,IAAIA,MAAMvB,cAAcF,KAAK,CAAC,EAAEE,WAAWK,WAAW,IAAI;EAC5D;EAACe,MAAAW,iBAZeR,UAAU;GACxB,MAAMhB,UAAUT,KAAK;GACrB,IAAI,CAACS,WAAWgB,MAAMvB,cAAcO,QAAQP,WAAW;GACvD,IAAI,CAACO,QAAQJ,OAAOM,kBAAkBF,QAAQP,SAAS,GAAG;IACxDK,WAAW,KAAK;IAChB;GACF;GACA,MAAM2B,SAAST,MAAMU,UAAU1B,QAAQN,WAAWR,QAAQ,IAAI,KAAK;GACnEoB,KAAKnB,QAAQa,QAAQL,aAAa8B,KAAK,CAAC;EAC1C;EAACZ,MAAAc,iBAvBeX,UAAU;GACxB,IAAIA,MAAMY,WAAW,KAAK,CAACZ,MAAMa,WAAW;GAC5C,MAAMjC,SAASoB,MAAMc;GACrBhC,WAAW,KAAK;GAChBR,cAAc;GACdM,OAAOmC,MAAM;GACbnC,OAAOoC,kBAAkBhB,MAAMvB,SAAS;GACxCD,QAAQ;IACNC,WAAWuB,MAAMvB;IACjBC,QAAQsB,MAAMU;IACd/B,YAAYzB,MAAM;IAClB0B;GACF,CAAC;EACH;EAACqC,OAAApB,cAAA;GAAA,IAAAqB,MAAAC,WA8CAtD,MAAMJ,SAAS,MAAM;GAAA,aAArByD,IAAA,WAAA;IAAA,IAAAE,QAAAC,QAAA;IAAAJ,OAAAG,OAAAE,gBAEI1E,cAAY,EAAA,SAAA,iCAAA,CAAA,CAAA;IAAA,OAAAwE;GAAA,EAAA,CAAA,IAAAG,QAAA;EAOhB,EAAA,CAAA,CAAA;EAAAC,QAAAC,QAAA;GAAA,IAAAC,MAlGI3E,GACL,0CACA;IACE,UAAUc,MAAMZ,SAAS;IACzB,WAAWY,MAAMZ,SAAS;GAC5B,GACAY,MAAML,KACR,GAACmE,OACe,GAAGvE,QAAQ,EAAC,KAAIwE,OAMlB/D,MAAMP,SAAS,UAAUO,MAAMZ,KAAI,QAAO4E,OACvChE,MAAMN,UAAQuE,OACd3E,QAAQ,GAAC4E,OACT3E,QAAQ,GAAC4E,OACT9E,MAAM,GAAC+E,OACN,GAAG/E,MAAM,EAAC,UAASgF,OACpB3D,KAAK,IAAI,KAAKU,KAAAA,GAASkD,OACvB,GAAGjE,QAAQ,IAAId,QAAQ,IAAIF,MAAM,IAAIA,MAAM,EAAC,KAAIkF,OACxDrF,GACL,uGAGA,6DACA,kFACAc,MAAMJ,SAAS,SAAS,qBAAqB,qBAC/C;GAACiE,QAAAD,IAAAY,KAAAC,UAAA3C,MAAA8B,IAAAY,IAAAX,GAAA;GAAAC,SAAAF,IAAAc,KAAAC,iBAAA7C,MAAA,SAAA8B,IAAAc,IAAAZ,IAAA;GAAAC,SAAAH,IAAAgB,KAAAC,aAAA7C,OAAA,cAAA4B,IAAAgB,IAAAb,IAAA;GAAAC,SAAAJ,IAAAkB,KAAAD,aAAA7C,OAAA,iBAAA4B,IAAAkB,IAAAd,IAAA;GAAAC,SAAAL,IAAAmB,KAAAF,aAAA7C,OAAA,iBAAA4B,IAAAmB,IAAAd,IAAA;GAAAC,SAAAN,IAAAoB,KAAAH,aAAA7C,OAAA,iBAAA4B,IAAAoB,IAAAd,IAAA;GAAAC,SAAAP,IAAAqB,KAAAJ,aAAA7C,OAAA,iBAAA4B,IAAAqB,IAAAd,IAAA;GAAAC,SAAAR,IAAAsB,KAAAL,aAAA7C,OAAA,kBAAA4B,IAAAsB,IAAAd,IAAA;GAAAC,SAAAT,IAAAuB,KAAAN,aAAA7C,OAAA,iBAAA4B,IAAAuB,IAAAd,IAAA;GAAAC,SAAAV,IAAAwB,KAAAT,iBAAA3C,OAAA,QAAA4B,IAAAwB,IAAAd,IAAA;GAAAC,SAAAX,IAAAyB,KAAAZ,UAAAzC,OAAA4B,IAAAyB,IAAAd,IAAA;GAAA,OAAAX;EAAA,GAAA;GAAAY,GAAApD,KAAAA;GAAAsD,GAAAtD,KAAAA;GAAAwD,GAAAxD,KAAAA;GAAA0D,GAAA1D,KAAAA;GAAA2D,GAAA3D,KAAAA;GAAA4D,GAAA5D,KAAAA;GAAA6D,GAAA7D,KAAAA;GAAA8D,GAAA9D,KAAAA;GAAA+D,GAAA/D,KAAAA;GAAAgE,GAAAhE,KAAAA;GAAAiE,GAAAjE,KAAAA;EAAA,CAAA;EAAA,OAAAU;CAAA,EAAA,CAAA;AAyET;AAACwD,eAAA;CAAA;CAAA;CAAA;CAAA;CAAA;AAAA,CAAA"}
@@ -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-retry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resize-controller-core-retry.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/split-layout/resize-controller-core-retry.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-retry.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/split-layout/resize-controller-core-retry.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"}