@weasel-js/labkit 1.5.1 → 1.5.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 (92) hide show
  1. package/dist/_dts/{CanvasStackContext-CJNMS6mz.d.ts → CanvasStackContext-CMMo180l.d.ts} +1 -1
  2. package/dist/_dts/{Select.d-Gwr8fLpK.d.ts → Select.d-ZTiwzYyT.d.ts} +27 -1
  3. package/dist/_dts/{frac-B4okC2lX.d.ts → frac-B4hFJMiN.d.ts} +16 -6
  4. package/dist/_dts/{index-BNdz-tNd.d.ts → index-8LiKe3A-.d.ts} +30 -43
  5. package/dist/_dts/{index-CSJoj4LC.d.ts → index-DlKolEIZ.d.ts} +5 -4
  6. package/dist/_dts/{types-DzoNY1pO.d.ts → types-Db-3NNk1.d.ts} +4 -4
  7. package/dist/_dts/{usePanZoom-Pzf9f2jh.d.ts → usePanZoom-SSTZe410.d.ts} +4 -47
  8. package/dist/_dts/{useTrialState-uLlmaccn.d.ts → useTrialState-pnAE-UBD.d.ts} +1 -1
  9. package/dist/canvas/index.d.ts +4 -4
  10. package/dist/canvas/index.js +1 -1
  11. package/dist/chrome/index.d.ts +3 -3
  12. package/dist/chrome/index.js +6 -6
  13. package/dist/{chunk-PJ7WEQBJ.js → chunk-6BUQ77ZV.js} +4 -4
  14. package/dist/{chunk-PJ7WEQBJ.js.map → chunk-6BUQ77ZV.js.map} +1 -1
  15. package/dist/{chunk-UN4U4P63.js → chunk-753Y6HE6.js} +9 -9
  16. package/dist/chunk-753Y6HE6.js.map +1 -0
  17. package/dist/{chunk-ZDHY47EV.js → chunk-A2ACAGW6.js} +6 -7
  18. package/dist/chunk-A2ACAGW6.js.map +1 -0
  19. package/dist/{chunk-IHUVQ3TX.js → chunk-CKUKF72R.js} +10 -10
  20. package/dist/chunk-CKUKF72R.js.map +1 -0
  21. package/dist/{chunk-MDVTK5U3.js → chunk-D35PFTS7.js} +3 -3
  22. package/dist/{chunk-MDVTK5U3.js.map → chunk-D35PFTS7.js.map} +1 -1
  23. package/dist/{chunk-PHK4W562.js → chunk-EMXAIRUJ.js} +3 -3
  24. package/dist/{chunk-PHK4W562.js.map → chunk-EMXAIRUJ.js.map} +1 -1
  25. package/dist/{chunk-EH7UEQV7.js → chunk-FKLT3ITC.js} +69 -69
  26. package/dist/chunk-FKLT3ITC.js.map +1 -0
  27. package/dist/{chunk-EHGVROVV.js → chunk-KJCUERQF.js} +3 -3
  28. package/dist/{chunk-EHGVROVV.js.map → chunk-KJCUERQF.js.map} +1 -1
  29. package/dist/chunk-LASCBWW7.js +13456 -0
  30. package/dist/chunk-LASCBWW7.js.map +1 -0
  31. package/dist/{chunk-IXTQI7JX.js → chunk-LRI3MBGR.js} +4 -4
  32. package/dist/{chunk-IXTQI7JX.js.map → chunk-LRI3MBGR.js.map} +1 -1
  33. package/dist/{chunk-7PFH3CNM.js → chunk-REOBGYMC.js} +4 -4
  34. package/dist/{chunk-7PFH3CNM.js.map → chunk-REOBGYMC.js.map} +1 -1
  35. package/dist/{chunk-CEIUBPPW.js → chunk-TT5C5S6R.js} +3 -86
  36. package/dist/chunk-TT5C5S6R.js.map +1 -0
  37. package/dist/config/index.d.ts +7 -8
  38. package/dist/config/index.js +5 -5
  39. package/dist/controls/index.d.ts +2 -2
  40. package/dist/controls/index.js +4 -4
  41. package/dist/dragdrop/index.d.ts +2 -2
  42. package/dist/index.d.ts +72 -28
  43. package/dist/index.js +142 -123
  44. package/dist/index.js.map +1 -1
  45. package/dist/layers/index.d.ts +3 -3
  46. package/dist/layers/index.js +2 -2
  47. package/dist/loupe/index.d.ts +4 -4
  48. package/dist/passthrough/weasel-ui.d.ts +33 -30
  49. package/dist/passthrough/weasel-ui.js +1 -1
  50. package/dist/primitives/index.js +3 -3
  51. package/dist/state/index.d.ts +4 -4
  52. package/dist/state/index.js +5 -5
  53. package/dist/styles.css +114 -18
  54. package/dist/ui/layers/index.js +1 -1
  55. package/dist/undo/index.d.ts +2 -2
  56. package/package.json +9 -9
  57. package/src/canvas/index.ts +0 -9
  58. package/src/chrome/labTypes.ts +1 -1
  59. package/src/chrome/regions/PaletteRegion.test.tsx +18 -0
  60. package/src/chrome/regions/PaletteRegion.tsx +5 -4
  61. package/src/chrome/regions/TitleBarRegion.tsx +1 -1
  62. package/src/chrome/types.ts +8 -2
  63. package/src/config/builder.ts +3 -4
  64. package/src/config/types.ts +4 -4
  65. package/src/controls/AutoControls.stories.tsx +6 -6
  66. package/src/controls/ControlPanel.less +23 -0
  67. package/src/controls/ControlPanel.stories.tsx +41 -0
  68. package/src/controls/ControlPanel.test.tsx +53 -110
  69. package/src/controls/ControlPanel.tsx +61 -77
  70. package/src/index.test.ts +0 -2
  71. package/src/index.ts +4 -10
  72. package/src/lab/Lab.tsx +21 -5
  73. package/src/layers/LayerList.less +1 -1
  74. package/src/layers/LayerList.stories.tsx +1 -1
  75. package/src/primitives/FpsMeter.less +6 -1
  76. package/src/primitives/FpsMeter.test.tsx +12 -4
  77. package/src/primitives/FpsMeter.tsx +6 -1
  78. package/src/primitives/JobProgress.stories.tsx +1 -1
  79. package/src/primitives/StatusBar.less +6 -0
  80. package/src/state/types.ts +6 -1
  81. package/src/state/view.test.ts +4 -4
  82. package/src/trial/Trial.canvas.test.tsx +8 -4
  83. package/src/trial/Trial.config.test.tsx +1 -1
  84. package/dist/chunk-CEIUBPPW.js.map +0 -1
  85. package/dist/chunk-EH7UEQV7.js.map +0 -1
  86. package/dist/chunk-IHUVQ3TX.js.map +0 -1
  87. package/dist/chunk-T3EC2DXD.js +0 -12628
  88. package/dist/chunk-T3EC2DXD.js.map +0 -1
  89. package/dist/chunk-UN4U4P63.js.map +0 -1
  90. package/dist/chunk-ZDHY47EV.js.map +0 -1
  91. package/src/canvas/useOrbit.test.ts +0 -167
  92. package/src/canvas/useOrbit.ts +0 -156
package/dist/index.js CHANGED
@@ -7,28 +7,28 @@ import { useTiledSurface } from './chunk-IJJUK4FU.js';
7
7
  export { composeRects, rectsEqual, toDeviceRect, useTiledSurface } from './chunk-IJJUK4FU.js';
8
8
  import { useJob } from './chunk-HXXTULDN.js';
9
9
  export { useJob } from './chunk-HXXTULDN.js';
10
- import { suppressContributions, mergeContributions, builtinContributions, TitleBarRegion, ToolbarRegion, PaletteRegion, ViewportRegion, SidebarRegion, StatusRegion, resolveLabTool, AnnotationsContext, useLabChromeContext, labContributions, LabHeaderRegion, LabFooterRegion, LabAsideRegion, LabSidebarRegion } from './chunk-IHUVQ3TX.js';
11
- export { AnnotationsContext, ExportMenu, LabAsideRegion, LabFooterRegion, LabHeaderRegion, LabSidebarRegion, MarkList, PaletteRegion, SidebarRegion, StatusRegion, TitleBarRegion, ToolbarRegion, ViewportRegion, builtinContributions, contributionsIn, labContributions, mergeContributions, suppressContributions, toolContributions, useAnnotations, useAnnotationsOptional, useLabChromeContext } from './chunk-IHUVQ3TX.js';
12
- import { Split, JobProgress, Sidebar, Legend, FloatingPanel } from './chunk-EHGVROVV.js';
13
- export { FloatingPanel, JobProgress, Legend, Sidebar, Split } from './chunk-EHGVROVV.js';
14
- import { Toolbar, StatusBar, ScaleIndicator, ZoomControl } from './chunk-UN4U4P63.js';
15
- export { FpsMeter, ScaleIndicator, StatusBar, Toolbar, ZoomControl } from './chunk-UN4U4P63.js';
16
- import { unruledConfigSchema, createLabStore, openLabStore, panelKey } from './chunk-IXTQI7JX.js';
17
- export { CURRENT_DOCUMENT_VERSION, dockPanel, labDocumentKey, openLabStore, panelKey, quarantineKey, undockPanel, useTrialState } from './chunk-IXTQI7JX.js';
10
+ import { suppressContributions, mergeContributions, builtinContributions, TitleBarRegion, ToolbarRegion, PaletteRegion, ViewportRegion, SidebarRegion, StatusRegion, resolveLabTool, AnnotationsContext, useLabChromeContext, labContributions, LabHeaderRegion, LabFooterRegion, LabAsideRegion, LabSidebarRegion } from './chunk-CKUKF72R.js';
11
+ export { AnnotationsContext, ExportMenu, LabAsideRegion, LabFooterRegion, LabHeaderRegion, LabSidebarRegion, MarkList, PaletteRegion, SidebarRegion, StatusRegion, TitleBarRegion, ToolbarRegion, ViewportRegion, builtinContributions, contributionsIn, labContributions, mergeContributions, suppressContributions, toolContributions, useAnnotations, useAnnotationsOptional, useLabChromeContext } from './chunk-CKUKF72R.js';
12
+ import { Split, JobProgress, Sidebar, Legend, FloatingPanel } from './chunk-KJCUERQF.js';
13
+ export { FloatingPanel, JobProgress, Legend, Sidebar, Split } from './chunk-KJCUERQF.js';
14
+ import { Toolbar, StatusBar, ScaleIndicator, ZoomControl } from './chunk-753Y6HE6.js';
15
+ export { FpsMeter, ScaleIndicator, StatusBar, Toolbar, ZoomControl } from './chunk-753Y6HE6.js';
16
+ import { unruledConfigSchema, createLabStore, openLabStore, panelKey } from './chunk-LRI3MBGR.js';
17
+ export { CURRENT_DOCUMENT_VERSION, dockPanel, labDocumentKey, openLabStore, panelKey, quarantineKey, undockPanel, useTrialState } from './chunk-LRI3MBGR.js';
18
18
  import { newId, useWarnIgnoredChange, useOpenOnce, PersistenceContext, createRecordCache, noneAdapter, defaultStorage, usePersistedState } from './chunk-RWNDDKOH.js';
19
19
  export { Persistence, createIndexedDbAdapter, createMemoryAdapter, indexedDbAdapter, localStorageAdapter, noneAdapter, sessionStorageAdapter, urlHashAdapter, usePersistedState } from './chunk-RWNDDKOH.js';
20
- export { ControlPanel } from './chunk-EH7UEQV7.js';
21
- import { useConfigSchema } from './chunk-PJ7WEQBJ.js';
22
- export { useConfigSchema } from './chunk-PJ7WEQBJ.js';
20
+ export { ControlPanel } from './chunk-FKLT3ITC.js';
21
+ import { useConfigSchema } from './chunk-6BUQ77ZV.js';
22
+ export { useConfigSchema } from './chunk-6BUQ77ZV.js';
23
23
  import { useLabContext, LabContext } from './chunk-Z76KEZAX.js';
24
24
  export { LabContext, useLabContext } from './chunk-Z76KEZAX.js';
25
- import { useResolvedConfig } from './chunk-ZDHY47EV.js';
26
- export { BaseNode, BooleanNode, ColorNode, CustomNode, EnumNode, GroupNode, NumberNode, StringNode, ValueNode, applyRules, builtinRules, f, isConfigBranch, resolveConfigSchema, titleCase, useResolvedConfig } from './chunk-ZDHY47EV.js';
27
- export { fromConfigFields, isLeafVisible } from './chunk-PHK4W562.js';
28
- import { hasConfigPath, schemaNodeAtPath, applyConfigWrite, resolveAutoConfig, isAuto, isRecord, autoPathsOf, fillConfigDefaults } from './chunk-7PFH3CNM.js';
29
- export { auto, autoPathsOf, fillConfigDefaults, hasConfigPath, isAuto, resolveAutoConfig, schemaNodeAtPath, valueAtPath, withValueAtPath } from './chunk-7PFH3CNM.js';
30
- import { CameraWheelContext, as2DView, DEFAULT_VIEW, CanvasStack, Stage, withZoom, fitStage } from './chunk-CEIUBPPW.js';
31
- export { CanvasStack, DEFAULT_VIEW, PITCH_LIMIT, Stage, as2DView, clampPitch, fitStage, orbitAfterDrag, orbitAfterWheel, useOrbit, usePanZoom, wrapYaw } from './chunk-CEIUBPPW.js';
25
+ import { useResolvedConfig } from './chunk-A2ACAGW6.js';
26
+ export { BaseNode, BooleanNode, ColorNode, CustomNode, EnumNode, GroupNode, NumberNode, StringNode, ValueNode, applyRules, builtinRules, f, isConfigBranch, resolveConfigSchema, titleCase, useResolvedConfig } from './chunk-A2ACAGW6.js';
27
+ export { fromConfigFields, isLeafVisible } from './chunk-EMXAIRUJ.js';
28
+ import { hasConfigPath, schemaNodeAtPath, applyConfigWrite, resolveAutoConfig, isAuto, isRecord, autoPathsOf, fillConfigDefaults } from './chunk-REOBGYMC.js';
29
+ export { auto, autoPathsOf, fillConfigDefaults, hasConfigPath, isAuto, resolveAutoConfig, schemaNodeAtPath, valueAtPath, withValueAtPath } from './chunk-REOBGYMC.js';
30
+ import { CameraWheelContext, as2DView, DEFAULT_VIEW, CanvasStack, Stage, withZoom, fitStage } from './chunk-TT5C5S6R.js';
31
+ export { CanvasStack, DEFAULT_VIEW, Stage, as2DView, fitStage, usePanZoom } from './chunk-TT5C5S6R.js';
32
32
  export { centerOn, zoomAt } from './chunk-H6ZAOWNE.js';
33
33
  import { applyCamera } from './chunk-2AYGEN57.js';
34
34
  export { DEFAULT_FRAME, applyCamera, resolveFrame, screenToWorld, worldToScreen } from './chunk-2AYGEN57.js';
@@ -37,11 +37,11 @@ export { SurfaceCanvasContext, SurfaceContext, useSurface, useSurfaceCanvas, use
37
37
  export { CanvasStackContext } from './chunk-CQLQPQ4P.js';
38
38
  import { LabStoreContext, TrialIdProvider } from './chunk-2YILQ7Y5.js';
39
39
  export { LabStoreContext, LabStoreProvider, TrialIdContext, TrialIdProvider, useLabStore, useTrialId } from './chunk-2YILQ7Y5.js';
40
- import { LayerList } from './chunk-MDVTK5U3.js';
41
- export { LayerList } from './chunk-MDVTK5U3.js';
40
+ import { LayerList } from './chunk-D35PFTS7.js';
41
+ export { LayerList } from './chunk-D35PFTS7.js';
42
42
  import './chunk-SBXNQW4G.js';
43
- import { E, w, T, a2, p, u, c, n, f, r, h, serializeSvg, C, l7, r3, a5, Lt, o2, a4, l3, u3, r7, r8, r6, o5, s5, c6, l6, c3, s3, u2, g2, g, y2, l4, b2, c7, r2, l2, C2, S, O, k, F2, L3, V, H, U, B, R2, J, A2, c4, n5, s4, m2, c2, l, g3, l5, S4, r10, n6, r11, i5, i4, s2, n7, o4, r9, c5, w2, L2, n8, k2, $2 } from './chunk-T3EC2DXD.js';
44
- export { a5 as Button, R2 as CheckboxRow, y as CloseIcon, $ as CollapseIcon, L3 as ColorRow, S2 as CurveField, G2 as EffectCard, q as EffectCardList, te as ExpandIcon, o as Icon, u2 as Input, l9 as Jog, c4 as LayerStack, V as NumberRow, I as PauseIcon, F as PlayIcon, J as PropertyGroup, k as PropertyList, O as PropertyPanel, j2 as PropertyRow, A3 as PropertySpan, v as ResetIcon, g as Select, H as SelectRow, F2 as SliderRow, R as StepBackIcon, z as StepForwardIcon, L as StopIcon, W as Subpanel, B as TextRow, r3 as ToggleBar, U as ToggleRow, q2 as TokenPanel, I2 as inferTokenType } from './chunk-T3EC2DXD.js';
43
+ import { E, w, T, a2, p, u, c, n, f, r, h, serializeSvg, C, l7, r5, a5, Lt, o2, a3, l3, u3, r7, r8, r6, o5, s5, c7, l6, c3, s3, u2, g, b2, y2, l4, b3, c8, r3, l2, C2, S, D, O, I2, z2, U, W, G2, H, B, X, A2, c4, n5, s4, m2, c2, l, g2, l5, S4, r9, n6, r10, i5, i4, s2, n7, o4, c5, c6, w2, L2, n8, k3, $2 } from './chunk-LASCBWW7.js';
44
+ export { a5 as Button, B as CheckboxRow, y as CloseIcon, $ as CollapseIcon, z2 as ColorRow, S2 as CurveField, q as EffectCard, Y as EffectCardList, te as ExpandIcon, o as Icon, u2 as Input, l9 as Jog, c4 as LayerStack, U as NumberRow, I as PauseIcon, F as PlayIcon, X as PropertyGroup, O as PropertyList, D as PropertyPanel, j2 as PropertyRow, k2 as PropertySpan, v as ResetIcon, b2 as Select, W as SelectRow, I2 as SliderRow, R as StepBackIcon, z as StepForwardIcon, L as StopIcon, K as Subpanel, H as TextRow, r5 as ToggleBar, G2 as ToggleRow, oe as TokenPanel, H2 as inferTokenType, O2 as refitScale } from './chunk-LASCBWW7.js';
45
45
  import { textCommand, linePath, markerDrawCommands, ellipsePath, rectPath, createScene, asNodeId as asNodeId$1, WeaselProvider, SceneCanvas, sceneFromJSON, PathBuilder, renderSceneToPixels, useActiveToolContext } from '@weasel-js/core';
46
46
  import { createContext, useState, useRef, useEffect, useCallback, useContext, useMemo, useId, Children, useLayoutEffect, useSyncExternalStore } from 'react';
47
47
  import { flushSync, createPortal } from 'react-dom';
@@ -70,12 +70,12 @@ function vertices(m2, content) {
70
70
  ];
71
71
  }
72
72
  function polyline(points) {
73
- const b2 = new PathBuilder();
73
+ const b3 = new PathBuilder();
74
74
  const first = points[0];
75
75
  if (!first) return rectPath(0, 0, 0, 0);
76
- b2.moveTo(first.x, first.y);
77
- for (const p2 of points.slice(1)) b2.lineTo(p2.x, p2.y);
78
- return b2.build();
76
+ b3.moveTo(first.x, first.y);
77
+ for (const p2 of points.slice(1)) b3.lineTo(p2.x, p2.y);
78
+ return b3.build();
79
79
  }
80
80
  function markCommands(m2, content, style = {}) {
81
81
  const color = style.color ?? MARK_COLOR;
@@ -94,13 +94,13 @@ function markCommands(m2, content, style = {}) {
94
94
  case "ellipse":
95
95
  return [{ kind: "path", path: ellipsePath(m2.pose), stroke }];
96
96
  case "line": {
97
- const [a4, b2] = vertices(m2, content);
98
- return [{ kind: "path", path: linePath(a4, b2), stroke }];
97
+ const [a4, b3] = vertices(m2, content);
98
+ return [{ kind: "path", path: linePath(a4, b3), stroke }];
99
99
  }
100
100
  case "arrow": {
101
- const [a4, b2] = vertices(m2, content);
101
+ const [a4, b3] = vertices(m2, content);
102
102
  const marked = { ...stroke, markerEnd: "arrow" };
103
- const path = linePath(a4, b2);
103
+ const path = linePath(a4, b3);
104
104
  return [
105
105
  { kind: "path", path, stroke: marked },
106
106
  ...markerDrawCommands(path, marked, MARK_WIDTH, void 0)
@@ -364,10 +364,10 @@ function fracToWorld(f3, content) {
364
364
  height: f3.h * content.h
365
365
  };
366
366
  }
367
- function worldToFrac(r10, content) {
367
+ function worldToFrac(r9, content) {
368
368
  const sx = content.w === 0 ? 0 : 1 / content.w;
369
369
  const sy = content.h === 0 ? 0 : 1 / content.h;
370
- return { x: r10.x * sx, y: r10.y * sy, w: r10.width * sx, h: r10.height * sy };
370
+ return { x: r9.x * sx, y: r9.y * sy, w: r9.width * sx, h: r9.height * sy };
371
371
  }
372
372
  var DP = 1e4;
373
373
  function roundFrac(f3) {
@@ -524,15 +524,15 @@ function createAnnotationStore(opts) {
524
524
  return out;
525
525
  };
526
526
  const all = () => liveTargets().flatMap(marksOn);
527
- const matches = (a4, q3) => {
528
- if (q3.target !== void 0 && a4.target !== q3.target) return false;
529
- if (q3.kind !== void 0 && a4.kind !== q3.kind) return false;
530
- if (q3.status !== void 0 && a4.status !== q3.status) return false;
531
- if (q3.tags !== void 0) {
527
+ const matches = (a4, q2) => {
528
+ if (q2.target !== void 0 && a4.target !== q2.target) return false;
529
+ if (q2.kind !== void 0 && a4.kind !== q2.kind) return false;
530
+ if (q2.status !== void 0 && a4.status !== q2.status) return false;
531
+ if (q2.tags !== void 0) {
532
532
  const have = a4.tags ?? [];
533
- for (const t of q3.tags) if (!have.includes(t)) return false;
533
+ for (const t of q2.tags) if (!have.includes(t)) return false;
534
534
  }
535
- if (q3.where && !q3.where(a4)) return false;
535
+ if (q2.where && !q2.where(a4)) return false;
536
536
  return true;
537
537
  };
538
538
  const nodeOf = (id) => {
@@ -549,8 +549,8 @@ function createAnnotationStore(opts) {
549
549
  const parts = splitId(id);
550
550
  return parts ? project(parts.target, parts.node) : void 0;
551
551
  },
552
- query(q3) {
553
- return q3 ? all().filter((a4) => matches(a4, q3)) : all();
552
+ query(q2) {
553
+ return q2 ? all().filter((a4) => matches(a4, q2)) : all();
554
554
  },
555
555
  hitTest(target, pt, tol = 0) {
556
556
  return marksOn(target).filter((a4) => fracContains(a4.frac, pt, tol)).reverse();
@@ -722,7 +722,7 @@ function fitView(content, pane) {
722
722
  const zoom = content.w > 0 && content.h > 0 ? Math.min(pane.w / content.w, pane.h / content.h) : 1;
723
723
  return { zoom: Number.isFinite(zoom) && zoom > 0 ? zoom : 1, pan: { x: 0, y: 0 } };
724
724
  }
725
- var sameRect = (a4, b2) => a4 !== null && a4.x === b2.x && a4.y === b2.y && a4.w === b2.w && a4.h === b2.h;
725
+ var sameRect = (a4, b3) => a4 !== null && a4.x === b3.x && a4.y === b3.y && a4.w === b3.w && a4.h === b3.h;
726
726
  function ToolBridge({ toolId }) {
727
727
  const tools = useActiveToolContext();
728
728
  const setActive = tools.setActive;
@@ -1250,7 +1250,7 @@ function Portalled({
1250
1250
  }
1251
1251
  function UndockedSections({ trialId, sections, onDock }) {
1252
1252
  if (sections.length === 0) return null;
1253
- return /* @__PURE__ */ jsx(Fragment, { children: sections.map((c8) => /* @__PURE__ */ jsx(Portalled, { trialId, contribution: c8, onDock }, c8.id)) });
1253
+ return /* @__PURE__ */ jsx(Fragment, { children: sections.map((c9) => /* @__PURE__ */ jsx(Portalled, { trialId, contribution: c9, onDock }, c9.id)) });
1254
1254
  }
1255
1255
  var NO_OP = () => {
1256
1256
  };
@@ -1296,9 +1296,9 @@ function TrialChrome({
1296
1296
  const title = record.title ?? instrument.title ?? instrument.name;
1297
1297
  const collapsedSections = record.collapsedSections ?? NO_SECTIONS;
1298
1298
  const ctx = useMemo(() => {
1299
- const setZoom = (z2) => {
1299
+ const setZoom = (z3) => {
1300
1300
  if (!view2d) return;
1301
- updateTrialView(trialId, withZoom(view2d, z2));
1301
+ updateTrialView(trialId, withZoom(view2d, z3));
1302
1302
  };
1303
1303
  return {
1304
1304
  trialId,
@@ -1384,7 +1384,7 @@ function TrialChrome({
1384
1384
  ),
1385
1385
  [instrument, ctx, trialChrome, chrome, suppress, lab.controls]
1386
1386
  );
1387
- const inRegion = (region) => contributions.filter((c8) => c8.region === region);
1387
+ const inRegion = (region) => contributions.filter((c9) => c9.region === region);
1388
1388
  const handleKeyDown = (e) => {
1389
1389
  const mod = e.metaKey || e.ctrlKey;
1390
1390
  if (!mod) return;
@@ -1430,7 +1430,7 @@ function TrialChrome({
1430
1430
  UndockedSections,
1431
1431
  {
1432
1432
  trialId,
1433
- sections: inRegion("sidebar").filter((c8) => undockedIds.includes(c8.id)),
1433
+ sections: inRegion("sidebar").filter((c9) => undockedIds.includes(c9.id)),
1434
1434
  onDock: ctx.dockPanel
1435
1435
  }
1436
1436
  )
@@ -1654,9 +1654,9 @@ function TrialRuntime({
1654
1654
  view: record.view,
1655
1655
  setView,
1656
1656
  zoom: view2d?.zoom ?? 1,
1657
- setZoom: (z2) => {
1657
+ setZoom: (z3) => {
1658
1658
  if (!view2d) return;
1659
- updateTrialView(record.id, withZoom(view2d, z2));
1659
+ updateTrialView(record.id, withZoom(view2d, z3));
1660
1660
  },
1661
1661
  activeToolId: resolvedToolId,
1662
1662
  visibleLayers
@@ -1700,7 +1700,7 @@ function TrialRuntime({
1700
1700
  const canvasLayers = useMemo(() => {
1701
1701
  if (!instrument.canvas) return [];
1702
1702
  const baseLayers = instrument.canvas.layers;
1703
- const ordered = layerOrder ? [...baseLayers].sort((a4, b2) => layerOrder.indexOf(a4.id) - layerOrder.indexOf(b2.id)) : baseLayers;
1703
+ const ordered = layerOrder ? [...baseLayers].sort((a4, b3) => layerOrder.indexOf(a4.id) - layerOrder.indexOf(b3.id)) : baseLayers;
1704
1704
  return ordered.map((layer) => ({
1705
1705
  id: layer.id,
1706
1706
  visible: layerVisibility[layer.id] !== false,
@@ -1747,12 +1747,12 @@ function TrialRuntime({
1747
1747
  render: (ctx) => {
1748
1748
  const el = canvasContainerRef.current;
1749
1749
  if (!el) return;
1750
- const r10 = el.getBoundingClientRect();
1750
+ const r9 = el.getBoundingClientRect();
1751
1751
  ctx.save();
1752
1752
  ctx.strokeStyle = fb.ok ? "#3a7" : "#c44";
1753
1753
  ctx.lineWidth = 2;
1754
1754
  ctx.beginPath();
1755
- ctx.arc(screen.x - r10.left, screen.y - r10.top, 16, 0, Math.PI * 2);
1755
+ ctx.arc(screen.x - r9.left, screen.y - r9.top, 16, 0, Math.PI * 2);
1756
1756
  ctx.stroke();
1757
1757
  ctx.restore();
1758
1758
  }
@@ -2012,7 +2012,7 @@ function findOvershoot(bound, items, tolerance = 1) {
2012
2012
  return worst;
2013
2013
  }
2014
2014
  function tagAndClasses(el) {
2015
- return el.tagName.toLowerCase() + [...el.classList].map((c8) => `.${c8}`).join("");
2015
+ return el.tagName.toLowerCase() + [...el.classList].map((c9) => `.${c9}`).join("");
2016
2016
  }
2017
2017
  function describeElement(el) {
2018
2018
  if (el.classList.length > 0) return tagAndClasses(el);
@@ -2021,8 +2021,8 @@ function describeElement(el) {
2021
2021
  return up ? `${tagAndClasses(el)} in ${tagAndClasses(up)}` : tagAndClasses(el);
2022
2022
  }
2023
2023
  function edgesOf(el) {
2024
- const r10 = el.getBoundingClientRect();
2025
- return { top: r10.top, left: r10.left, bottom: r10.bottom, right: r10.right };
2024
+ const r9 = el.getBoundingClientRect();
2025
+ return { top: r9.top, left: r9.left, bottom: r9.bottom, right: r9.right };
2026
2026
  }
2027
2027
  function* candidates(root) {
2028
2028
  yield { item: root, edges: edgesOf(root) };
@@ -2033,24 +2033,24 @@ function overflows(el) {
2033
2033
  }
2034
2034
  function explainLabScroll(lab, shellBody) {
2035
2035
  if (overflows(shellBody)) {
2036
- const r11 = shellBody.getBoundingClientRect();
2036
+ const r10 = shellBody.getBoundingClientRect();
2037
2037
  const bound2 = {
2038
- top: r11.top,
2039
- left: r11.left,
2040
- bottom: r11.top + shellBody.clientHeight,
2041
- right: r11.left + shellBody.clientWidth
2038
+ top: r10.top,
2039
+ left: r10.left,
2040
+ bottom: r10.top + shellBody.clientHeight,
2041
+ right: r10.left + shellBody.clientWidth
2042
2042
  };
2043
2043
  const hit2 = findOvershoot(bound2, candidates(shellBody));
2044
2044
  return hit2 ? `.lk-shell-body scrolls: ${describeElement(hit2.item)} reaches ${Math.round(hit2.by)}px past it (${hit2.axis})` : ".lk-shell-body scrolls";
2045
2045
  }
2046
2046
  const doc = document.scrollingElement ?? document.documentElement;
2047
2047
  if (!overflows(doc)) return null;
2048
- const r10 = lab.getBoundingClientRect();
2048
+ const r9 = lab.getBoundingClientRect();
2049
2049
  const bound = {
2050
- top: r10.top,
2051
- left: r10.left,
2052
- bottom: r10.top + Math.min(r10.height, doc.clientHeight),
2053
- right: r10.left + Math.min(r10.width, doc.clientWidth)
2050
+ top: r9.top,
2051
+ left: r9.left,
2052
+ bottom: r9.top + Math.min(r9.height, doc.clientHeight),
2053
+ right: r9.left + Math.min(r9.width, doc.clientWidth)
2054
2054
  };
2055
2055
  const hit = findOvershoot(bound, candidates(lab));
2056
2056
  return hit ? `the page scrolls: ${describeElement(hit.item)} reaches ${Math.round(hit.by)}px past the lab's box (${hit.axis})` : null;
@@ -2115,7 +2115,7 @@ function LabHeader({ addTrial: addTrial2 = true }) {
2115
2115
  }
2116
2116
  ),
2117
2117
  /* @__PURE__ */ jsx(
2118
- r3,
2118
+ r5,
2119
2119
  {
2120
2120
  className: "lk-lab-header__mode",
2121
2121
  ariaLabel: "Color mode",
@@ -2132,7 +2132,7 @@ function LabHeader({ addTrial: addTrial2 = true }) {
2132
2132
  function LabPalette({ tools, contributions }) {
2133
2133
  const ctx = useLabChromeContext();
2134
2134
  const all = labContributions(tools, contributions);
2135
- return /* @__PURE__ */ jsx(PaletteRegion, { contributions: all.filter((c8) => c8.region === "palette"), ctx });
2135
+ return /* @__PURE__ */ jsx(PaletteRegion, { contributions: all.filter((c9) => c9.region === "palette"), ctx });
2136
2136
  }
2137
2137
  function query() {
2138
2138
  if (typeof window === "undefined" || !window.matchMedia) return null;
@@ -2431,20 +2431,29 @@ async function openStoredLab({ instruments, defaultInstrument, mode }, storageKe
2431
2431
  function LabFallback({
2432
2432
  title,
2433
2433
  mode,
2434
+ density,
2434
2435
  pages,
2435
2436
  path
2436
2437
  }) {
2437
2438
  const resolvedMode = useResolvedMode(mode ?? "auto");
2438
- return /* @__PURE__ */ jsx(ThemeProvider, { theme: interstellarTheme, selection: { mode: resolvedMode }, className: "lk-lab", children: /* @__PURE__ */ jsx(
2439
- LabShell,
2439
+ return /* @__PURE__ */ jsx(
2440
+ ThemeProvider,
2440
2441
  {
2441
- title: title ?? "Labkit",
2442
- mode,
2443
- ...pages ? { pages } : {},
2444
- ...path !== void 0 ? { path } : {},
2445
- children: null
2442
+ theme: interstellarTheme,
2443
+ selection: { mode: resolvedMode, density: density ?? "comfortable" },
2444
+ className: "lk-lab",
2445
+ children: /* @__PURE__ */ jsx(
2446
+ LabShell,
2447
+ {
2448
+ title: title ?? "Labkit",
2449
+ mode,
2450
+ ...pages ? { pages } : {},
2451
+ ...path !== void 0 ? { path } : {},
2452
+ children: null
2453
+ }
2454
+ )
2446
2455
  }
2447
- ) });
2456
+ );
2448
2457
  }
2449
2458
  var NEBULA_SLOTS = [
2450
2459
  { cx: "18%", cy: "30%", sx: "60%", sy: "80%", stop: "70%" },
@@ -2454,9 +2463,9 @@ var NEBULA_SLOTS = [
2454
2463
  { cx: "85%", cy: "18%", sx: "55%", sy: "80%", stop: "70%" }
2455
2464
  ];
2456
2465
  function buildNebula(colors) {
2457
- const blobs = colors.map((c8, i3) => {
2466
+ const blobs = colors.map((c9, i3) => {
2458
2467
  const p2 = NEBULA_SLOTS[i3 % NEBULA_SLOTS.length];
2459
- return `radial-gradient(ellipse ${p2.sx} ${p2.sy} at ${p2.cx} ${p2.cy}, color-mix(in srgb, ${c8} 22%, transparent), transparent ${p2.stop})`;
2468
+ return `radial-gradient(ellipse ${p2.sx} ${p2.sy} at ${p2.cx} ${p2.cy}, color-mix(in srgb, ${c9} 22%, transparent), transparent ${p2.stop})`;
2460
2469
  });
2461
2470
  blobs.push("radial-gradient(ellipse at center, #0a0a18 0%, #02020a 100%)");
2462
2471
  return blobs.join(", ");
@@ -2476,7 +2485,7 @@ function LabPanes({
2476
2485
  void 0,
2477
2486
  { scope: "lab" }
2478
2487
  );
2479
- const main = contributions.some((c8) => c8.region === "aside") ? /* @__PURE__ */ jsx(
2488
+ const main = contributions.some((c9) => c9.region === "aside") ? /* @__PURE__ */ jsx(
2480
2489
  Split,
2481
2490
  {
2482
2491
  className: "lk-lab__panes",
@@ -2494,7 +2503,7 @@ function LabPanes({
2494
2503
  children
2495
2504
  }
2496
2505
  ) : children;
2497
- if (!contributions.some((c8) => c8.region === "sidebar")) return main;
2506
+ if (!contributions.some((c9) => c9.region === "sidebar")) return main;
2498
2507
  return /* @__PURE__ */ jsx(
2499
2508
  Split,
2500
2509
  {
@@ -2524,13 +2533,23 @@ function Lab(props) {
2524
2533
  );
2525
2534
  if (!opened) {
2526
2535
  if (props.fallback !== void 0) return props.fallback;
2527
- return /* @__PURE__ */ jsx(LabFallback, { title: props.title, mode: props.mode, pages: props.pages, path: props.path });
2536
+ return /* @__PURE__ */ jsx(
2537
+ LabFallback,
2538
+ {
2539
+ title: props.title,
2540
+ mode: props.mode,
2541
+ density: props.density,
2542
+ pages: props.pages,
2543
+ path: props.path
2544
+ }
2545
+ );
2528
2546
  }
2529
2547
  return /* @__PURE__ */ jsx(LabRuntime, { ...props, opened });
2530
2548
  }
2531
2549
  function LabRuntime({
2532
2550
  instruments,
2533
2551
  mode,
2552
+ density,
2534
2553
  nebula,
2535
2554
  title,
2536
2555
  pages,
@@ -2569,17 +2588,17 @@ function LabRuntime({
2569
2588
  const bufferRef = useRef({ w: 0, h: 0 });
2570
2589
  const surfaceRef = useRef(null);
2571
2590
  const onFrame = useCallback((frame) => {
2572
- const canvases = [ownUnderRef.current, ownOverRef.current].filter((c8) => c8 !== null);
2591
+ const canvases = [ownUnderRef.current, ownOverRef.current].filter((c9) => c9 !== null);
2573
2592
  if (canvases.length === 0) return;
2574
2593
  const w3 = Math.round(frame.size.width * frame.dpr);
2575
2594
  const h2 = Math.round(frame.size.height * frame.dpr);
2576
2595
  if (bufferRef.current.w !== w3 || bufferRef.current.h !== h2) {
2577
2596
  bufferRef.current = { w: w3, h: h2 };
2578
- for (const c8 of canvases) {
2579
- c8.width = w3;
2580
- c8.height = h2;
2581
- c8.style.width = `${frame.size.width}px`;
2582
- c8.style.height = `${frame.size.height}px`;
2597
+ for (const c9 of canvases) {
2598
+ c9.width = w3;
2599
+ c9.height = h2;
2600
+ c9.style.width = `${frame.size.width}px`;
2601
+ c9.style.height = `${frame.size.height}px`;
2583
2602
  }
2584
2603
  surfaceRef.current?.invalidateAll();
2585
2604
  return;
@@ -2643,8 +2662,8 @@ function LabRuntime({
2643
2662
  () => labContributions([...annotates ? ANNOTATION_TOOLS : [], ...tools ?? []], labChrome),
2644
2663
  [annotates, tools, labChrome]
2645
2664
  );
2646
- const hasFooterChrome = labChromeAll.some((c8) => c8.region === "footer");
2647
- const hasPaneChrome = labChromeAll.some((c8) => c8.region === "sidebar" || c8.region === "aside");
2665
+ const hasFooterChrome = labChromeAll.some((c9) => c9.region === "footer");
2666
+ const hasPaneChrome = labChromeAll.some((c9) => c9.region === "sidebar" || c9.region === "aside");
2648
2667
  useEffect(() => {
2649
2668
  if (mode && mode !== store.getState().mode) {
2650
2669
  store.getState().setMode(mode);
@@ -2748,7 +2767,7 @@ function LabRuntime({
2748
2767
  ThemeProvider,
2749
2768
  {
2750
2769
  theme: interstellarTheme,
2751
- selection: { mode: resolvedMode },
2770
+ selection: { mode: resolvedMode, density: density ?? "comfortable" },
2752
2771
  className: "lk-lab",
2753
2772
  style: backdropStyle,
2754
2773
  children: /* @__PURE__ */ jsx(
@@ -2919,7 +2938,7 @@ function ButtonsAndToggles() {
2919
2938
  /* @__PURE__ */ jsx(Cell, { label: "Checkbox, Switch", children: /* @__PURE__ */ jsxs("div", { className: "lk-specimen__row", children: [
2920
2939
  /* @__PURE__ */ jsx(o2, { isSelected: snap, onChange: setSnap, children: "Snap to grid" }),
2921
2940
  /* @__PURE__ */ jsx(o2, { isIndeterminate: true, children: "Mixed" }),
2922
- /* @__PURE__ */ jsx(a4, { isSelected: wifi, onChange: setWifi, children: "Wifi" })
2941
+ /* @__PURE__ */ jsx(a3, { isSelected: wifi, onChange: setWifi, children: "Wifi" })
2923
2942
  ] }) }),
2924
2943
  /* @__PURE__ */ jsx(Cell, { label: "RadioGroup", children: /* @__PURE__ */ jsxs(l3, { label: "Snap mode", orientation: "horizontal", defaultValue: "grid", children: [
2925
2944
  /* @__PURE__ */ jsx(u3, { value: "off", children: "Off" }),
@@ -2928,7 +2947,7 @@ function ButtonsAndToggles() {
2928
2947
  ] }) }),
2929
2948
  /* @__PURE__ */ jsxs(Cell, { label: "ToggleBar", children: [
2930
2949
  /* @__PURE__ */ jsx(
2931
- r3,
2950
+ r5,
2932
2951
  {
2933
2952
  ariaLabel: "Align",
2934
2953
  value: align,
@@ -2941,7 +2960,7 @@ function ButtonsAndToggles() {
2941
2960
  }
2942
2961
  ),
2943
2962
  /* @__PURE__ */ jsx(
2944
- r3,
2963
+ r5,
2945
2964
  {
2946
2965
  ariaLabel: "Align, flat",
2947
2966
  variant: "flat",
@@ -2997,9 +3016,9 @@ function ButtonsAndToggles() {
2997
3016
  ] }) }),
2998
3017
  /* @__PURE__ */ jsx(Cell, { label: "Tabs", children: /* @__PURE__ */ jsxs(o5, { children: [
2999
3018
  /* @__PURE__ */ jsxs(s5, { "aria-label": "Sections", children: [
3000
- /* @__PURE__ */ jsx(c6, { id: "props", children: "Props" }),
3001
- /* @__PURE__ */ jsx(c6, { id: "events", children: "Events" }),
3002
- /* @__PURE__ */ jsx(c6, { id: "snapshot", children: "Snapshot" })
3019
+ /* @__PURE__ */ jsx(c7, { id: "props", children: "Props" }),
3020
+ /* @__PURE__ */ jsx(c7, { id: "events", children: "Events" }),
3021
+ /* @__PURE__ */ jsx(c7, { id: "snapshot", children: "Snapshot" })
3003
3022
  ] }),
3004
3023
  /* @__PURE__ */ jsx(l6, { id: "props", children: "Props panel." }),
3005
3024
  /* @__PURE__ */ jsx(l6, { id: "events", children: "Events panel." }),
@@ -3042,9 +3061,9 @@ function FieldsAndPickers() {
3042
3061
  /* @__PURE__ */ jsx(u2, { label: "Required", isInvalid: true, errorMessage: "Name is required." })
3043
3062
  ] }),
3044
3063
  /* @__PURE__ */ jsxs(Cell, { label: "NumberField, Select, ComboBox", children: [
3045
- /* @__PURE__ */ jsx(g2, { label: "Opacity", minValue: 0, maxValue: 100, step: 5, defaultValue: 80 }),
3064
+ /* @__PURE__ */ jsx(g, { label: "Opacity", minValue: 0, maxValue: 100, step: 5, defaultValue: 80 }),
3046
3065
  /* @__PURE__ */ jsx(
3047
- g,
3066
+ b2,
3048
3067
  {
3049
3068
  label: "Color",
3050
3069
  defaultSelectedKey: "g",
@@ -3080,7 +3099,7 @@ function FieldsAndPickers() {
3080
3099
  }
3081
3100
  ),
3082
3101
  /* @__PURE__ */ jsx(
3083
- b2,
3102
+ b3,
3084
3103
  {
3085
3104
  ariaLabel: "Pair",
3086
3105
  min: 0,
@@ -3095,18 +3114,18 @@ function FieldsAndPickers() {
3095
3114
  ] }),
3096
3115
  /* @__PURE__ */ jsxs(Cell, { label: "DetentSlider, InlineRange", children: [
3097
3116
  /* @__PURE__ */ jsx(
3098
- c7,
3117
+ c8,
3099
3118
  {
3100
3119
  items: [0.25, 0.5, 1, 2, 4],
3101
3120
  value: rate,
3102
3121
  onChange: setRate,
3103
- formatLabel: (r10) => `${r10}\xD7`,
3122
+ formatLabel: (r9) => `${r9}\xD7`,
3104
3123
  labels: "all",
3105
3124
  ariaLabel: "Playback rate"
3106
3125
  }
3107
3126
  ),
3108
3127
  /* @__PURE__ */ jsx(
3109
- r2,
3128
+ r3,
3110
3129
  {
3111
3130
  "aria-label": "Width",
3112
3131
  min: 0,
@@ -3150,9 +3169,9 @@ function PanelsAndRows() {
3150
3169
  ]);
3151
3170
  const [panelCollapsed, setPanelCollapsed] = useState(false);
3152
3171
  return /* @__PURE__ */ jsxs(Section, { title: "Panels & property rows", children: [
3153
- /* @__PURE__ */ jsx(Cell, { label: "PropertyPanel", children: /* @__PURE__ */ jsx(O, { title: "Shape", children: /* @__PURE__ */ jsxs(k, { children: [
3172
+ /* @__PURE__ */ jsx(Cell, { label: "PropertyPanel", children: /* @__PURE__ */ jsx(D, { title: "Shape", children: /* @__PURE__ */ jsxs(O, { children: [
3154
3173
  /* @__PURE__ */ jsx(
3155
- F2,
3174
+ I2,
3156
3175
  {
3157
3176
  label: "Opacity",
3158
3177
  value: opacity,
@@ -3163,7 +3182,7 @@ function PanelsAndRows() {
3163
3182
  }
3164
3183
  ),
3165
3184
  /* @__PURE__ */ jsx(
3166
- F2,
3185
+ I2,
3167
3186
  {
3168
3187
  label: "Radius",
3169
3188
  value: radius,
@@ -3174,7 +3193,7 @@ function PanelsAndRows() {
3174
3193
  }
3175
3194
  ),
3176
3195
  /* @__PURE__ */ jsx(
3177
- L3,
3196
+ z2,
3178
3197
  {
3179
3198
  label: "Fill",
3180
3199
  value: fill,
@@ -3183,10 +3202,10 @@ function PanelsAndRows() {
3183
3202
  onAlphaChange: setAlpha
3184
3203
  }
3185
3204
  ),
3186
- /* @__PURE__ */ jsx(L3, { label: "Stroke", value: stroke, onChange: setStroke }),
3187
- /* @__PURE__ */ jsx(V, { label: "Count", value: count, min: 0, max: 100, step: 1, onChange: setCount }),
3205
+ /* @__PURE__ */ jsx(z2, { label: "Stroke", value: stroke, onChange: setStroke }),
3206
+ /* @__PURE__ */ jsx(U, { label: "Count", value: count, min: 0, max: 100, step: 1, onChange: setCount }),
3188
3207
  /* @__PURE__ */ jsx(
3189
- H,
3208
+ W,
3190
3209
  {
3191
3210
  label: "Line cap",
3192
3211
  value: cap,
@@ -3198,7 +3217,7 @@ function PanelsAndRows() {
3198
3217
  }
3199
3218
  ),
3200
3219
  /* @__PURE__ */ jsx(
3201
- U,
3220
+ G2,
3202
3221
  {
3203
3222
  label: "Align",
3204
3223
  value: side,
@@ -3210,9 +3229,9 @@ function PanelsAndRows() {
3210
3229
  ]
3211
3230
  }
3212
3231
  ),
3213
- /* @__PURE__ */ jsx(B, { label: "Label", value: label, onChange: setLabel }),
3214
- /* @__PURE__ */ jsx(R2, { label: "Visible", value: visible, onChange: setVisible }),
3215
- /* @__PURE__ */ jsx(J, { title: "Bevel", defaultCollapsed: true, children: /* @__PURE__ */ jsx(F2, { label: "Rings", value: 32, min: 4, max: 96, step: 1, onChange: () => {
3232
+ /* @__PURE__ */ jsx(H, { label: "Label", value: label, onChange: setLabel }),
3233
+ /* @__PURE__ */ jsx(B, { label: "Visible", value: visible, onChange: setVisible }),
3234
+ /* @__PURE__ */ jsx(X, { title: "Bevel", defaultCollapsed: true, children: /* @__PURE__ */ jsx(I2, { label: "Rings", value: 32, min: 4, max: 96, step: 1, onChange: () => {
3216
3235
  } }) })
3217
3236
  ] }) }) }),
3218
3237
  /* @__PURE__ */ jsx(Cell, { label: "PrefsForm", children: /* @__PURE__ */ jsx(
@@ -3260,7 +3279,7 @@ function OverlaysAndFeedback() {
3260
3279
  ] }),
3261
3280
  /* @__PURE__ */ jsx("button", { type: "button", ref: calloutAnchor, onClick: () => setCalloutOpen(true), children: "Callout" }),
3262
3281
  /* @__PURE__ */ jsx(
3263
- g3,
3282
+ g2,
3264
3283
  {
3265
3284
  triggerRef: calloutAnchor,
3266
3285
  isOpen: calloutOpen,
@@ -3291,7 +3310,7 @@ function OverlaysAndFeedback() {
3291
3310
  /* @__PURE__ */ jsx(S4, { queue: toasts, placement: "bottom-right" })
3292
3311
  ] }) }),
3293
3312
  /* @__PURE__ */ jsx(Cell, { label: "Powerline", children: /* @__PURE__ */ jsx(
3294
- r10,
3313
+ r9,
3295
3314
  {
3296
3315
  variant: "solid",
3297
3316
  size: "sm",
@@ -3303,10 +3322,10 @@ function OverlaysAndFeedback() {
3303
3322
  }
3304
3323
  ) }),
3305
3324
  /* @__PURE__ */ jsx(Cell, { label: "StatusBar", children: /* @__PURE__ */ jsxs(n6, { ariaLabel: "Editor status", children: [
3306
- /* @__PURE__ */ jsx(r11, { children: "tool: select" }),
3307
- /* @__PURE__ */ jsx(r11, { children: "sel: 3" }),
3325
+ /* @__PURE__ */ jsx(r10, { children: "tool: select" }),
3326
+ /* @__PURE__ */ jsx(r10, { children: "sel: 3" }),
3308
3327
  /* @__PURE__ */ jsx(i5, {}),
3309
- /* @__PURE__ */ jsx(r11, { muted: true, children: "0.7.0" })
3328
+ /* @__PURE__ */ jsx(r10, { muted: true, children: "0.7.0" })
3310
3329
  ] }) })
3311
3330
  ] });
3312
3331
  }
@@ -3332,8 +3351,8 @@ function ListsAndData() {
3332
3351
  { id: "3", name: "danger", count: 2 }
3333
3352
  ],
3334
3353
  columns: [
3335
- { id: "name", header: "name", accessor: (r10) => r10.name, sortable: true },
3336
- { id: "count", header: "count", accessor: (r10) => r10.count, sortable: true }
3354
+ { id: "name", header: "name", accessor: (r9) => r9.name, sortable: true },
3355
+ { id: "count", header: "count", accessor: (r9) => r9.count, sortable: true }
3337
3356
  ],
3338
3357
  defaultSort: { columnId: "name", direction: "asc" }
3339
3358
  }
@@ -3356,14 +3375,14 @@ function ToolChrome() {
3356
3375
  },
3357
3376
  id
3358
3377
  )) }) }),
3359
- /* @__PURE__ */ jsx(Cell, { label: "ToolOptionsBar", children: /* @__PURE__ */ jsxs(r9, { label: "Text", children: [
3378
+ /* @__PURE__ */ jsx(Cell, { label: "ToolOptionsBar", children: /* @__PURE__ */ jsxs(c5, { label: "Text", children: [
3360
3379
  /* @__PURE__ */ jsx(a5, { size: "sm", variant: "ghost", iconOnly: true, ariaLabel: "Bold", children: "B" }),
3361
3380
  /* @__PURE__ */ jsx(a5, { size: "sm", variant: "ghost", iconOnly: true, ariaLabel: "Italic", children: "I" })
3362
3381
  ] }) }),
3363
3382
  /* @__PURE__ */ jsx(Cell, { label: "ResizeHandle", children: /* @__PURE__ */ jsxs("div", { className: "lk-specimen__box", children: [
3364
3383
  /* @__PURE__ */ jsx("div", { className: "lk-specimen__box-main", children: "content" }),
3365
3384
  /* @__PURE__ */ jsx(
3366
- c5,
3385
+ c6,
3367
3386
  {
3368
3387
  value: paneWidth,
3369
3388
  min: 100,
@@ -3472,7 +3491,7 @@ function EditorsAndPlots() {
3472
3491
  }
3473
3492
  ) }),
3474
3493
  /* @__PURE__ */ jsx(Cell, { label: "BandEditor", wide: true, children: /* @__PURE__ */ jsx(
3475
- k2,
3494
+ k3,
3476
3495
  {
3477
3496
  min: 1 / 64,
3478
3497
  max: 1 / 2,
@@ -3482,7 +3501,7 @@ function EditorsAndPlots() {
3482
3501
  onChange: setBands,
3483
3502
  selectedIndex: band,
3484
3503
  onSelect: setBand,
3485
- renderBand: (b2) => b2.data.name,
3504
+ renderBand: (b3) => b3.data.name,
3486
3505
  ticks: [1 / 24, 1 / 12, 1 / 6].map((at) => ({ at, label: `1/${Math.round(1 / at)}` }))
3487
3506
  }
3488
3507
  ) }),