@weasel-js/labkit 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_dts/{CanvasStackContext-Wo6OwIVM.d.ts → CanvasStackContext-D2jnIwfk.d.ts} +1 -1
- package/dist/_dts/{LayerList.d-BoELAMsM.d.ts → LayerList.d-DiuEArKq.d.ts} +2 -2
- package/dist/_dts/PrefsRow.d-TOZ7BgD9.d.ts +79 -0
- package/dist/_dts/PropertyPanel.d-D-1paCbE.d.ts +141 -0
- package/dist/_dts/{Select.d-Cr8-zoup.d.ts → Select.d-Bensr_MT.d.ts} +11 -1
- package/dist/_dts/{Stage-DWBBi8IU.d.ts → Stage-CCWfQQWM.d.ts} +58 -18
- package/dist/_dts/index-B2Yj5aA0.d.ts +274 -0
- package/dist/_dts/{index-CKyX0ME_.d.ts → index-CsYqUHD3.d.ts} +2 -2
- package/dist/_dts/{types-DTuViBvc.d.ts → types-CRPSGFAp.d.ts} +13 -4
- package/dist/_dts/{types-B7yBTTF9.d.ts → types-CSm9jgol.d.ts} +2 -2
- package/dist/_dts/{useTrialState-CMaV6UD4.d.ts → useTrialState-CTZPgeZ7.d.ts} +1 -1
- package/dist/canvas/index.d.ts +6 -6
- package/dist/canvas/index.js +2 -2
- package/dist/chrome/index.d.ts +5 -5
- package/dist/chrome/index.js +8 -8
- package/dist/{chunk-QGMOA2YE.js → chunk-275JRRVD.js} +67 -70
- package/dist/chunk-275JRRVD.js.map +1 -0
- package/dist/{chunk-KHK5FGER.js → chunk-4LJSC7MB.js} +8 -10
- package/dist/chunk-4LJSC7MB.js.map +1 -0
- package/dist/{chunk-SLAQPUI4.js → chunk-7BO7HNGF.js} +5 -5
- package/dist/{chunk-SLAQPUI4.js.map → chunk-7BO7HNGF.js.map} +1 -1
- package/dist/chunk-CZZPXUOU.js +3 -0
- package/dist/{chunk-SBXNQW4G.js.map → chunk-CZZPXUOU.js.map} +1 -1
- package/dist/{chunk-6FLXL3I7.js → chunk-FMK7UQ6V.js} +19 -4
- package/dist/chunk-FMK7UQ6V.js.map +1 -0
- package/dist/{chunk-O6FFFOHS.js → chunk-FZ7YFQN7.js} +16 -8
- package/dist/chunk-FZ7YFQN7.js.map +1 -0
- package/dist/{chunk-GHGO52SO.js → chunk-GOZLNM4L.js} +5 -5
- package/dist/{chunk-GHGO52SO.js.map → chunk-GOZLNM4L.js.map} +1 -1
- package/dist/{chunk-4TT3PNPR.js → chunk-I5DUQ5HM.js} +33 -36
- package/dist/chunk-I5DUQ5HM.js.map +1 -0
- package/dist/{chunk-NEXR37YJ.js → chunk-J7OWWTCW.js} +4 -5
- package/dist/chunk-J7OWWTCW.js.map +1 -0
- package/dist/{chunk-IRTGUQ5O.js → chunk-KMJ7RWD3.js} +16 -6
- package/dist/chunk-KMJ7RWD3.js.map +1 -0
- package/dist/{chunk-S4NCI32V.js → chunk-M7HP3FTK.js} +4 -4
- package/dist/{chunk-S4NCI32V.js.map → chunk-M7HP3FTK.js.map} +1 -1
- package/dist/chunk-MIM5R4ZT.js +14972 -0
- package/dist/chunk-MIM5R4ZT.js.map +1 -0
- package/dist/{chunk-ASOK76ZH.js → chunk-T5IBSPAM.js} +59 -26
- package/dist/chunk-T5IBSPAM.js.map +1 -0
- package/dist/{chunk-DWMSB4CA.js → chunk-UNAZSLWE.js} +82 -16
- package/dist/chunk-UNAZSLWE.js.map +1 -0
- package/dist/{chunk-TJ77A4A3.js → chunk-Y23G2VZL.js} +5 -9
- package/dist/chunk-Y23G2VZL.js.map +1 -0
- package/dist/{chunk-HKV7LRHY.js → chunk-YT75VYRD.js} +4 -4
- package/dist/{chunk-HKV7LRHY.js.map → chunk-YT75VYRD.js.map} +1 -1
- package/dist/{chunk-CGHF6RZV.js → chunk-ZIFPHIWZ.js} +9 -7
- package/dist/chunk-ZIFPHIWZ.js.map +1 -0
- package/dist/config/index.d.ts +16 -9
- package/dist/config/index.js +4 -4
- package/dist/controls/index.d.ts +2 -2
- package/dist/controls/index.js +5 -5
- package/dist/dragdrop/index.d.ts +3 -3
- package/dist/index.d.ts +263 -24
- package/dist/index.js +376 -237
- package/dist/index.js.map +1 -1
- package/dist/layers/index.d.ts +4 -4
- package/dist/layers/index.js +2 -2
- package/dist/loupe/index.d.ts +4 -4
- package/dist/loupe/index.js +2 -2
- package/dist/overview/index.d.ts +2 -2
- package/dist/overview/index.js +9 -8
- package/dist/overview/index.js.map +1 -1
- package/dist/passthrough/weasel-ui.d.ts +208 -38
- package/dist/passthrough/weasel-ui.js +3 -3
- package/dist/primitives/index.d.ts +3 -178
- package/dist/primitives/index.js +6 -6
- package/dist/state/index.d.ts +5 -5
- package/dist/state/index.js +4 -4
- package/dist/styles.css +91 -83
- package/dist/undo/index.d.ts +3 -3
- package/package.json +13 -12
- package/src/annotations/AnnotationOverlay.tsx +2 -2
- package/src/annotations/Annotations.less +0 -10
- package/src/annotations/MarkList.tsx +4 -8
- package/src/annotations/paint.test.ts +3 -14
- package/src/annotations/paint.ts +3 -19
- package/src/annotations/svgNodes.test.ts +6 -9
- package/src/annotations/svgNodes.ts +3 -3
- package/src/canvas/AGENTS.md +1 -0
- package/src/canvas/CameraInput.tsx +44 -33
- package/src/canvas/CanvasStack.tsx +6 -1
- package/src/canvas/LinkedCursor.less +1 -1
- package/src/canvas/Stage.test.tsx +33 -4
- package/src/canvas/Stage.tsx +6 -1
- package/src/canvas/cameraRegistry.test.ts +55 -0
- package/src/canvas/cameraRegistry.ts +86 -0
- package/src/canvas/cameraZoom.test.ts +46 -0
- package/src/canvas/cameraZoom.ts +24 -0
- package/src/canvas/index.ts +14 -2
- package/src/canvas/sharedScope.test.tsx +94 -0
- package/src/chrome/ChromeRegions.stories.tsx +1 -0
- package/src/chrome/regions/PaletteRegion.less +0 -7
- package/src/chrome/regions/SidebarRegion.less +12 -2
- package/src/config/builder.test.ts +2 -1
- package/src/config/builder.ts +12 -5
- package/src/config/fromConfigField.test.ts +14 -0
- package/src/config/fromConfigField.ts +18 -4
- package/src/config/path.ts +2 -5
- package/src/config/resolve.ts +4 -0
- package/src/config/types.ts +13 -9
- package/src/controls/ControlPanel.less +1 -1
- package/src/controls/ControlPanel.stories.tsx +3 -2
- package/src/controls/ControlPanel.test.tsx +64 -11
- package/src/controls/ControlPanel.tsx +52 -2
- package/src/index.ts +15 -1
- package/src/lab/Lab.tsx +83 -72
- package/src/lab/{LabFit.stories.less → LabFit.browser.test.less} +1 -1
- package/src/lab/{LabFit.stories.tsx → LabFit.browser.test.tsx} +41 -63
- package/src/lab/LabFullChrome.stories.tsx +1 -0
- package/src/lab/LabHeader.test.tsx +24 -14
- package/src/lab/LabHeader.tsx +11 -12
- package/src/lab/LabShell.less +8 -17
- package/src/lab/LabSwitcher.less +6 -6
- package/src/lab/LabZoom.test.tsx +223 -0
- package/src/lab/LabZoom.tsx +170 -0
- package/src/lab/index.ts +1 -0
- package/src/loupe/LoupeGestures.tsx +1 -1
- package/src/overview/TrialOverview.tsx +7 -5
- package/src/passthrough/weasel-ui.test.ts +2 -0
- package/src/passthrough/weasel-ui.ts +16 -4
- package/src/primitives/FloatingPanel.test.tsx +11 -0
- package/src/primitives/FloatingPanel.tsx +2 -5
- package/src/primitives/JobProgress.less +1 -1
- package/src/primitives/Legend.stories.tsx +1 -0
- package/src/primitives/Readout.browser.test.tsx +137 -0
- package/src/primitives/Readout.less +12 -0
- package/src/primitives/Readout.stories.tsx +58 -0
- package/src/primitives/Readout.test.tsx +93 -0
- package/src/primitives/Readout.tsx +56 -0
- package/src/primitives/index.ts +2 -0
- package/src/specimen/Specimen.stories.tsx +1 -0
- package/src/specimen/Specimen.tsx +2 -2
- package/src/state/Persistence.browser.test.tsx +47 -0
- package/src/state/store.test.ts +5 -1
- package/src/state/usePersistedState.test.tsx +1 -1
- package/src/styles.less +1 -0
- package/src/theme/Interstellar.stories.tsx +3 -1
- package/src/theme/base.less +21 -47
- package/src/theme/interstellar.test.ts +1 -1
- package/src/theme/interstellar.theme.json +10 -3
- package/src/trial/Trial.less +0 -13
- package/src/trial/Trial.tsx +12 -6
- package/src/trial/TrialChrome.tsx +21 -3
- package/dist/_dts/PrefsRow.d-DFpPIeIC.d.ts +0 -39
- package/dist/_dts/PropertyField.d-D0ndfIIt.d.ts +0 -404
- package/dist/chunk-4TT3PNPR.js.map +0 -1
- package/dist/chunk-6FLXL3I7.js.map +0 -1
- package/dist/chunk-ASOK76ZH.js.map +0 -1
- package/dist/chunk-CGHF6RZV.js.map +0 -1
- package/dist/chunk-DWMSB4CA.js.map +0 -1
- package/dist/chunk-IRTGUQ5O.js.map +0 -1
- package/dist/chunk-KHK5FGER.js.map +0 -1
- package/dist/chunk-NEXR37YJ.js.map +0 -1
- package/dist/chunk-O6FFFOHS.js.map +0 -1
- package/dist/chunk-QGMOA2YE.js.map +0 -1
- package/dist/chunk-SBXNQW4G.js +0 -3
- package/dist/chunk-TJ77A4A3.js.map +0 -1
- package/dist/chunk-TYN6MLXX.js +0 -13864
- package/dist/chunk-TYN6MLXX.js.map +0 -1
- package/src/state/Persistence.stories.tsx +0 -75
package/dist/index.d.ts
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { I as IconProps } from './_dts/Select.d-
|
|
4
|
-
export { B as Button, a as ButtonProps, b as ButtonSize, c as ButtonVariant, d as Icon, e as Input, f as InputProps, S as Select, g as SelectProps, T as ToggleBar, h as ToggleBarItem, i as ToggleBarProps, j as ToggleBarSize, k as ToggleBarVariant } from './_dts/Select.d-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
import { I as IconProps } from './_dts/Select.d-Bensr_MT.js';
|
|
4
|
+
export { B as Button, a as ButtonProps, b as ButtonSize, c as ButtonVariant, d as Icon, e as Input, f as InputProps, S as Select, g as SelectProps, T as ToggleBar, h as ToggleBarItem, i as ToggleBarProps, j as ToggleBarSize, k as ToggleBarVariant } from './_dts/Select.d-Bensr_MT.js';
|
|
5
|
+
import { S as SplitProps } from './_dts/index-B2Yj5aA0.js';
|
|
6
|
+
export { D as DetailList, a as DetailListLayout, b as DetailListProps, c as DetailListValues, d as DetailRow, e as DetailRowProps, f as DetailRowStatus, F as FpsMeter, J as JobProgress, g as JobProgressProps, L as Legend, h as LegendEntry, i as LegendMark, j as LegendProps, R as Readout, k as ReadoutProps, l as ReadoutRow, m as ScaleIndicator, n as ScaleIndicatorProps, o as Split, p as StatusBar, q as StatusBarProps, r as StatusBarSectionProps, T as Toolbar, s as ToolbarButtonProps, t as ToolbarGroupProps, u as ToolbarProps, Z as ZoomControl, v as ZoomControlProps } from './_dts/index-B2Yj5aA0.js';
|
|
7
|
+
export { L as LayerList, a as LayerListItem, b as LayerListProps, c as LayerMove, m as moveLayers } from './_dts/LayerList.d-DiuEArKq.js';
|
|
8
|
+
import { FillStyle, PaintKind, SceneNode, View, DrawCommand, Path, ScreenLength, StrokeAlign, MarkerRef, StyledRun, TextStyle, TextVerticalAlign, Stroke, BuiltinToolId } from '@weasel-js/core';
|
|
9
|
+
import { U as UnitTable, D as Display } from './_dts/PrefsRow.d-TOZ7BgD9.js';
|
|
9
10
|
import { StanceProps } from './passthrough/weasel-ui.js';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
export {
|
|
13
|
-
|
|
14
|
-
export { C as
|
|
15
|
-
|
|
16
|
-
export {
|
|
11
|
+
import { a as PropertyRowLayout, b as PropertyListPack } from './_dts/PropertyPanel.d-D-1paCbE.js';
|
|
12
|
+
import { PropertyMetricProps } from './passthrough/weasel-ui.js';
|
|
13
|
+
export { c as PropertyList, d as PropertyListProps, e as PropertyPanel, f as PropertyPanelProps, g as PropertyRow, h as PropertyRowProps, i as PropertyRowVariant, j as PropertySpan, k as PropertySpanProps } from './_dts/PropertyPanel.d-D-1paCbE.js';
|
|
14
|
+
import { A as AnnotationMeaning, w as AnnotationData, x as WorldRect, y as MarkStyle, z as MarkScene, B as CaptureSource, E as CaptureOptions, F as CaptureResult, G as PaintableMark, H as AnnotationTarget, J as AnnotationsApi, K as AnnotationsCapability, N as TrialInfo, O as TrialTool, Q as AnnotationKind, b as ViewTransform, R as Instrument, t as InstrumentList, s as LabMode, X as LabDensity, Y as TrialContribution, c as StorageAdapter, T as TrialRecord } from './_dts/types-CSm9jgol.js';
|
|
15
|
+
export { Z as Annotation, _ as AnnotationInit, $ as AnnotationPatch, a0 as AnnotationQuery, a1 as AnnotationStatus, a2 as AnnotationStoreOptions, a3 as AnnotationTargetInfo, a4 as AnnotationToolId, a5 as Auto, a6 as CanvasCapability, a7 as CanvasLayer, a8 as CaptureDeps, a9 as ContributionBase, C as CreateLabStoreOptions, D as DEFAULT_FRAME, q as DragDropCapability, o as DragFeedback, aa as FracPoint, ab as FracRect, ac as HitResult, ad as IconComponent, ae as LOUPE_DEFAULTS, d as LabDocument, e as LabStoreState, L as LayerCapability, a as LayerDescriptor, af as LoupeCapability, ag as LoupeDeclaration, ah as LoupeMode, ai as LoupePoint, aj as LoupeRenderArgs, n as PaletteItem, P as Point, ak as RegionContribution, al as RenderContext, am as ResolvedLoupe, f as SavedSnapshot, an as SerializedAnnotations, S as SerializedTrial, ao as SidebarSection, ap as SidebarSlotContext, aq as StageCapability, ar as StatusReadout, g as StorageChange, as as SystemEvent, at as ToolCapability, au as ToolItem, av as ToolSlotContext, aw as ToolbarItem, ax as TrialChromeContext, ay as TrialRegion, h as TrialStateHandle, az as UndoCapability, U as UndoStack, i as UndockedPanel, j as UndockedPanels, aA as ViewportControl, V as ViewportSize, W as WorldFrame, l as WorldSpec, aB as annotationsFromJSON, m as applyCamera, aC as auto, aD as createAnnotationScene, aE as createAnnotationStore, k as dockPanel, aF as fracContains, aG as fracEncloses, aH as fracToWorld, aI as isAuto, aJ as markCommands, p as panelKey, r as resolveFrame, aK as resolveLoupe, aL as roundFrac, u as undockPanel, aM as worldToFrac } from './_dts/types-CSm9jgol.js';
|
|
16
|
+
export { C as CameraContext, a as CameraContextValue, b as CameraInput, d as CameraPublishContext, e as CameraRegistry, f as CameraRegistryContext, g as CameraScope, h as CameraView, j as CanvasStack, k as CanvasStackProps, l as Stage, m as StageProps, Z as ZoomAtOptions, n as ZoomRange, o as centerOn, p as createCameraRegistry, q as fitStage, s as screenToWorld, r as usePublishCamera, w as worldToScreen, z as zoomAt } from './_dts/Stage-CCWfQQWM.js';
|
|
17
|
+
export { C as CanvasLayerDescriptor, a as CanvasStackContext, b as CanvasStackContextValue, c as CanvasStackSurface } from './_dts/CanvasStackContext-D2jnIwfk.js';
|
|
18
|
+
import { L as LabContribution } from './_dts/index-CsYqUHD3.js';
|
|
19
|
+
export { A as AddTrialOptions, a as LabAsideRegion, b as LabChromeContext, c as LabContext, d as LabContextValue, e as LabFooterRegion, f as LabHeaderRegion, g as LabRegion, h as LabRegionProps, i as LabSidebarRegion, P as PaletteRegion, j as PaletteRegionProps, S as SidebarRegion, k as SidebarRegionProps, l as StatusRegion, m as StatusRegionProps, T as TitleBarPlacement, n as TitleBarRegion, o as TitleBarRegionProps, p as ToolbarRegion, q as ToolbarRegionProps, V as ViewportRegion, r as ViewportRegionProps, s as addTrial, t as builtinContributions, u as cloneTrial, v as closeTrial, w as contributionsIn, x as labContributions, y as mergeContributions, z as reorderTrials, B as resetTrial, C as suppressContributions, D as toolContributions, E as useLabChromeContext, F as useLabContext } from './_dts/index-CsYqUHD3.js';
|
|
17
20
|
export { BaseNode, BooleanNode, ColorNode, CustomNode, EnumNode, GroupNode, ListNode, NumberNode, SectionTree, StringNode, ValueNode, applyRules, autoPathsOf, builtinRules, f, fillConfigDefaults, fromConfigFields, hasConfigPath, isConfigBranch, isLeafVisible, resolveAutoConfig, resolveConfigSchema, schemaNodeAtPath, sectionTree, titleCase, useConfigSchema, useResolvedConfig, valueAtPath, withValueAtPath } from './config/index.js';
|
|
18
|
-
import { b as ConfigSchema, a as ConfigField, c as ConfigRule, d as ControlRenderer } from './_dts/types-
|
|
19
|
-
export { A as Annotations, B as BranchAnnotations, e as BranchOptions, f as CheckboxField, g as ColorField, h as ConfigBranch, i as ConfigEntry, j as ConfigFieldBase, k as ConfigFieldType, l as ConfigNode, m as ConfigOf, n as ConfigOption, C as ConfigPath, o as ConfigRuleContext, p as ConfigShape, D as DialogSpec, E as EntryValue, I as InDialogOptions, q as InferConfig, L as LeafPatch, N as NodeOptions, r as NodeValue, s as NumberField, R as ResolvedConfig, S as SectionOption, t as SectionSpec, u as SelectField, v as SelectOption, w as SliderField, T as TextField, V as ValueAtPath } from './_dts/types-
|
|
21
|
+
import { b as ConfigSchema, a as ConfigField, c as ConfigRule, d as ControlRenderer } from './_dts/types-CRPSGFAp.js';
|
|
22
|
+
export { A as Annotations, B as BranchAnnotations, e as BranchOptions, f as CheckboxField, g as ColorField, h as ConfigBranch, i as ConfigEntry, j as ConfigFieldBase, k as ConfigFieldType, l as ConfigNode, m as ConfigOf, n as ConfigOption, C as ConfigPath, o as ConfigRuleContext, p as ConfigShape, D as DialogSpec, E as EntryValue, I as InDialogOptions, q as InferConfig, L as LeafPatch, N as NodeOptions, r as NodeValue, s as NumberField, R as ResolvedConfig, S as SectionOption, t as SectionSpec, u as SelectField, v as SelectOption, w as SliderField, T as TextField, V as ValueAtPath } from './_dts/types-CRPSGFAp.js';
|
|
20
23
|
export { ControlPanel, inDialog, summarizeValue } from './controls/index.js';
|
|
21
24
|
import { J as JobHandle } from './_dts/types-DJ79Tg5J.js';
|
|
22
25
|
export { a as JobCapability, b as JobEvent, c as JobFailure, d as JobStatus } from './_dts/types-DJ79Tg5J.js';
|
|
@@ -24,9 +27,7 @@ export { UseJobOptions, useJob } from './job/index.js';
|
|
|
24
27
|
import { Theme, ColorList } from '@weasel-js/theme';
|
|
25
28
|
export { CanvasLoupe, CanvasLoupeProps, DomLoupe, DomLoupeProps, LOUPE_MAGNIFY_ID, LOUPE_PEEK_ID, LensCamera, LoupeBubble, LoupeBubbleProps, LoupeGestures, LoupeGesturesProps, LoupeInputApi, LoupeState, SourceRect, TrialLoupe, TrialLoupeProps, UseLoupeOptions, createLoupeActions, drawCanvasLens, lensCamera, lensSourceRect, sampleStack, useLoupe } from './loupe/index.js';
|
|
26
29
|
export { a as FloatingPanel, F as FloatingPanelProps } from './_dts/FloatingPanel-7j0IcXwz.js';
|
|
27
|
-
|
|
28
|
-
export { FpsMeter, JobProgress, JobProgressProps, Legend, LegendEntry, LegendMark, LegendProps, ScaleIndicator, ScaleIndicatorProps, Split, StatusBar, StatusBarProps, StatusBarSectionProps, Toolbar, ToolbarButtonProps, ToolbarGroupProps, ToolbarProps, ZoomControl, ZoomControlProps } from './primitives/index.js';
|
|
29
|
-
export { C as CURRENT_DOCUMENT_VERSION, I as IndexedDbAdapterOptions, b as LabStoreContext, c as LabStoreProvider, O as OpenLabStoreOptions, d as OpenedLabStore, P as PersistedStateOptions, e as Persistence, f as PersistenceProps, R as RecordCache, g as RecordChange, T as TrialIdContext, h as TrialIdProvider, i as createIndexedDbAdapter, k as createMemoryAdapter, l as indexedDbAdapter, m as labDocumentKey, n as localStorageAdapter, o as noneAdapter, p as openLabStore, q as quarantineKey, s as sessionStorageAdapter, u as urlHashAdapter, r as useLabStore, t as usePersistedState, v as useTrialId, w as useTrialState } from './_dts/useTrialState-CMaV6UD4.js';
|
|
30
|
+
export { C as CURRENT_DOCUMENT_VERSION, I as IndexedDbAdapterOptions, b as LabStoreContext, c as LabStoreProvider, O as OpenLabStoreOptions, d as OpenedLabStore, P as PersistedStateOptions, e as Persistence, f as PersistenceProps, R as RecordCache, g as RecordChange, T as TrialIdContext, h as TrialIdProvider, i as createIndexedDbAdapter, k as createMemoryAdapter, l as indexedDbAdapter, m as labDocumentKey, n as localStorageAdapter, o as noneAdapter, p as openLabStore, q as quarantineKey, s as sessionStorageAdapter, u as urlHashAdapter, r as useLabStore, t as usePersistedState, v as useTrialId, w as useTrialState } from './_dts/useTrialState-CTZPgeZ7.js';
|
|
30
31
|
export { Box, Rect, SurfaceCanvasContext, SurfaceCanvases, SurfaceClear, SurfaceContext, SurfaceFrame, SurfaceHandle, SurfaceLayer, TilePainter, UseTiledSurfaceOptions, composeRects, rectsEqual, toDeviceRect, useSurface, useSurfaceCanvas, useSurfaceOptional, useSurfaceTile, useTileId, useTiledSurface } from './surface/index.js';
|
|
31
32
|
export { EventBus, EventListener, clearUndo, createEventBus, emptyStack, pushSnapshot, redo, undo } from './undo/index.js';
|
|
32
33
|
import 'react-aria-components';
|
|
@@ -43,6 +44,229 @@ declare const StepForwardIcon: (p: IconProps) => react.JSX.Element;
|
|
|
43
44
|
declare const CollapseIcon: (p: IconProps) => react.JSX.Element;
|
|
44
45
|
declare const ExpandIcon: (p: IconProps) => react.JSX.Element;
|
|
45
46
|
|
|
47
|
+
/** One choice of an enum field. */
|
|
48
|
+
interface PropertyOption<T extends string> {
|
|
49
|
+
value: T;
|
|
50
|
+
/** The option's name. A string also names its segment for a screen reader. */
|
|
51
|
+
label: ReactNode;
|
|
52
|
+
/** What a segment shows in place of `label` when the full one would not fit
|
|
53
|
+
* — a glyph or a letter. `label` stays the accessible name. */
|
|
54
|
+
glyph?: ReactNode;
|
|
55
|
+
/** Shown but not choosable: a value the control reports and cannot author. */
|
|
56
|
+
disabled?: boolean;
|
|
57
|
+
}
|
|
58
|
+
/** Props every kind of field shares. */
|
|
59
|
+
interface FieldBase {
|
|
60
|
+
/** The control's accessible name. A `<PropertyField>` takes it from a string
|
|
61
|
+
* `label` when this is omitted. */
|
|
62
|
+
name?: string;
|
|
63
|
+
/** The sources the field reads disagree — a multi-selection whose nodes
|
|
64
|
+
* differ. The control shows no value, in whatever form it has for that. */
|
|
65
|
+
mixed?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* The sources agree on holding nothing: whatever is in effect comes from a
|
|
68
|
+
* fallback further down. The control shows no chosen value rather than
|
|
69
|
+
* inventing one, since the next edit would write the invention back.
|
|
70
|
+
*/
|
|
71
|
+
unset?: boolean;
|
|
72
|
+
/** Class on the control element itself. */
|
|
73
|
+
className?: string;
|
|
74
|
+
/** Id for the control element, for a `<label htmlFor>` outside it. */
|
|
75
|
+
id?: string;
|
|
76
|
+
}
|
|
77
|
+
/** A boolean field. */
|
|
78
|
+
interface PropertyBooleanFieldProps extends FieldBase {
|
|
79
|
+
kind: 'boolean';
|
|
80
|
+
/** `checkbox` (default), `switch`, or `toggle` — a one-segment pressable bar. */
|
|
81
|
+
control?: 'checkbox' | 'switch' | 'toggle';
|
|
82
|
+
/** Absent reads as off. */
|
|
83
|
+
value: boolean | undefined;
|
|
84
|
+
onChange: (next: boolean) => void;
|
|
85
|
+
/** A `toggle`'s segment content. Defaults to the first letter of `name`. */
|
|
86
|
+
glyph?: ReactNode;
|
|
87
|
+
}
|
|
88
|
+
/** A number field. */
|
|
89
|
+
interface PropertyNumberFieldProps extends FieldBase {
|
|
90
|
+
kind: 'number';
|
|
91
|
+
/** `input` (default) for a typed number; `slider` for a track with an
|
|
92
|
+
* editable readout, where the range matters more than the exact value. */
|
|
93
|
+
control?: 'input' | 'slider';
|
|
94
|
+
/** Absent reads as an empty field. */
|
|
95
|
+
value: number | null | undefined;
|
|
96
|
+
/**
|
|
97
|
+
* The committed value. Given `onInput` as well, it fires once a drag ends,
|
|
98
|
+
* or on blur, Enter or a step in a typed field; on its own it fires on every
|
|
99
|
+
* move, keystroke and step. A caller wanting settled values only passes a
|
|
100
|
+
* no-op `onInput`.
|
|
101
|
+
*/
|
|
102
|
+
onChange: (next: number) => void;
|
|
103
|
+
/** The live value, fired continuously. Pass it alongside `onChange` when the
|
|
104
|
+
* write is expensive — cheap state here, the costly work there. */
|
|
105
|
+
onInput?: (next: number) => void;
|
|
106
|
+
/** A slider's track runs 0..100 where these are omitted. */
|
|
107
|
+
min?: number;
|
|
108
|
+
max?: number;
|
|
109
|
+
step?: number;
|
|
110
|
+
/**
|
|
111
|
+
* Suffix after the value. A string becomes a dim word unit (`px`); pass JSX
|
|
112
|
+
* like `<sup>°</sup>` for a symbol. Display only — the value stays a number.
|
|
113
|
+
*/
|
|
114
|
+
unit?: ReactNode;
|
|
115
|
+
/** Units a person may type into a typed field, each mapped to the factor
|
|
116
|
+
* that turns it into the unit shown: `{ mm: 0.1, cm: 1 }`. */
|
|
117
|
+
accepts?: Readonly<UnitTable>;
|
|
118
|
+
/** How the value shows, is spoken, and reads back when typed —
|
|
119
|
+
* `compact()` reads `2.00M`. A slider readout defaults to the value at
|
|
120
|
+
* `step`'s precision. */
|
|
121
|
+
display?: Display;
|
|
122
|
+
/** A slider readout's text, for what no display expresses — a derived
|
|
123
|
+
* value, a word at one end. Wins over `display`, and is spoken as shown. */
|
|
124
|
+
format?: (value: number) => ReactNode;
|
|
125
|
+
placeholder?: string;
|
|
126
|
+
/** A typed field's up and down buttons. Default `false`: a dense panel
|
|
127
|
+
* drives its numbers by typing, the arrow keys and the wheel. */
|
|
128
|
+
steppers?: boolean;
|
|
129
|
+
}
|
|
130
|
+
/** A text field. */
|
|
131
|
+
interface PropertyStringFieldProps extends FieldBase {
|
|
132
|
+
kind: 'string';
|
|
133
|
+
control?: 'input' | 'textarea';
|
|
134
|
+
/** Absent reads as an empty field. */
|
|
135
|
+
value: string | null | undefined;
|
|
136
|
+
/**
|
|
137
|
+
* The committed text. On its own it fires on every keystroke. Given
|
|
138
|
+
* `onInput` as well, the field drafts: `onInput` gets each keystroke and
|
|
139
|
+
* this fires once, on blur or Enter, and only if the text changed.
|
|
140
|
+
*/
|
|
141
|
+
onChange: (next: string) => void;
|
|
142
|
+
onInput?: (next: string) => void;
|
|
143
|
+
placeholder?: string;
|
|
144
|
+
maxLength?: number;
|
|
145
|
+
}
|
|
146
|
+
/** A choice among fixed options. */
|
|
147
|
+
interface PropertyEnumFieldProps<T extends string = string> extends FieldBase {
|
|
148
|
+
kind: 'enum';
|
|
149
|
+
/**
|
|
150
|
+
* `select` (default) is a dropdown. `radio` and `toggle` show every option
|
|
151
|
+
* at once — a radio group lists them, and a toggle is a row of segments.
|
|
152
|
+
*/
|
|
153
|
+
control?: 'select' | 'radio' | 'toggle';
|
|
154
|
+
/** Absent, or not one of `options`, chooses nothing. */
|
|
155
|
+
value: T | undefined;
|
|
156
|
+
options: ReadonlyArray<PropertyOption<T>>;
|
|
157
|
+
onChange: (next: T) => void;
|
|
158
|
+
/**
|
|
159
|
+
* Given, choosing nothing is a value of its own: a `toggle` lets the chosen
|
|
160
|
+
* segment be clicked off, and calls this. Absent, a toggle always holds one.
|
|
161
|
+
*/
|
|
162
|
+
onClear?: () => void;
|
|
163
|
+
/** Shown while no option is chosen. Defaults to "Choose option…". */
|
|
164
|
+
placeholder?: string;
|
|
165
|
+
}
|
|
166
|
+
/** A single color. */
|
|
167
|
+
interface PropertyColorFieldProps extends FieldBase {
|
|
168
|
+
kind: 'color';
|
|
169
|
+
/** `#rrggbb`, or `#rrggbbaa` when `alpha` is `true`. */
|
|
170
|
+
value: string | undefined;
|
|
171
|
+
/**
|
|
172
|
+
* The committed color. Given `onInput` as well, it fires once per gesture —
|
|
173
|
+
* the picker closing, or the opacity track let go; on its own it fires on
|
|
174
|
+
* every move. A caller wanting settled values only passes a no-op `onInput`.
|
|
175
|
+
*/
|
|
176
|
+
onChange: (next: string) => void;
|
|
177
|
+
onInput?: (next: string) => void;
|
|
178
|
+
/**
|
|
179
|
+
* Offer an opacity track. `true` keeps the alpha in `value` as `#rrggbbaa`;
|
|
180
|
+
* a number is the 0..1 alpha held apart from it, reported through
|
|
181
|
+
* `onAlphaChange` / `onAlphaInput`.
|
|
182
|
+
*/
|
|
183
|
+
alpha?: boolean | number;
|
|
184
|
+
onAlphaChange?: (next: number) => void;
|
|
185
|
+
onAlphaInput?: (next: number) => void;
|
|
186
|
+
/** Draw the opacity track inert, for a consumer that drops alpha. */
|
|
187
|
+
alphaDisabled?: boolean;
|
|
188
|
+
}
|
|
189
|
+
/** A whole paint: a solid, a gradient, a pattern, or none. */
|
|
190
|
+
interface PropertyPaintFieldProps extends FieldBase {
|
|
191
|
+
kind: 'paint';
|
|
192
|
+
/** `swatch` (default) opens the editor in a popover, for a narrow slot;
|
|
193
|
+
* `inline` draws the kind bar and its editor in place. */
|
|
194
|
+
control?: 'swatch' | 'inline';
|
|
195
|
+
/** `null` is an explicit "no paint"; `undefined` is nothing to show. */
|
|
196
|
+
value: FillStyle | null | undefined;
|
|
197
|
+
onChange: (next: FillStyle | null) => void;
|
|
198
|
+
onInput?: (next: FillStyle | null) => void;
|
|
199
|
+
/** Offer "None". Default `true`. */
|
|
200
|
+
allowNone?: boolean;
|
|
201
|
+
/** Restrict the kinds offered. Default: every registered kind. */
|
|
202
|
+
kinds?: readonly PaintKind[];
|
|
203
|
+
}
|
|
204
|
+
/** A font family, picked from the live font registry. */
|
|
205
|
+
interface PropertyFontFamilyFieldProps extends FieldBase {
|
|
206
|
+
kind: 'font-family';
|
|
207
|
+
value: string | undefined;
|
|
208
|
+
onChange: (next: string) => void;
|
|
209
|
+
/** The weight and slant the family is drawn at, so the picker names the
|
|
210
|
+
* variant that will actually paint. */
|
|
211
|
+
weight?: number;
|
|
212
|
+
fontStyle?: 'normal' | 'italic';
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* One field for {@link PropertyControl} and {@link PropertyField}, keyed by
|
|
216
|
+
* `kind`.
|
|
217
|
+
*/
|
|
218
|
+
type PropertyControlProps<T extends string = string> = PropertyBooleanFieldProps | PropertyNumberFieldProps | PropertyStringFieldProps | PropertyEnumFieldProps<T> | PropertyColorFieldProps | PropertyPaintFieldProps | PropertyFontFamilyFieldProps;
|
|
219
|
+
/** Row props {@link PropertyField} adds to the field it draws. */
|
|
220
|
+
interface PropertyFieldRowProps extends PropertyMetricProps {
|
|
221
|
+
label: ReactNode;
|
|
222
|
+
/**
|
|
223
|
+
* Text beside the label. On a slider it replaces the editable readout —
|
|
224
|
+
* use it when the row is not showing a number a caller could type back,
|
|
225
|
+
* such as an auto row's `auto`.
|
|
226
|
+
*/
|
|
227
|
+
readout?: ReactNode;
|
|
228
|
+
description?: string;
|
|
229
|
+
layout?: PropertyRowLayout;
|
|
230
|
+
/** Take the full width of the enclosing grid — see `<PropertyRow span>`. */
|
|
231
|
+
span?: boolean;
|
|
232
|
+
/** The row is auto — see `<PropertyRow auto>`. */
|
|
233
|
+
auto?: boolean;
|
|
234
|
+
/** Toggles `auto` from the row's label — see `<PropertyRow onAutoChange>`. */
|
|
235
|
+
onAutoChange?: (next: boolean) => void;
|
|
236
|
+
/** Class on the row. `controlClassName` reaches the control. */
|
|
237
|
+
rowClassName?: string;
|
|
238
|
+
controlClassName?: string;
|
|
239
|
+
}
|
|
240
|
+
/** Props for {@link PropertyField}: one field, and the row around it. */
|
|
241
|
+
type PropertyFieldProps<T extends string = string> = PropertyFieldRowProps & DistributiveOmit<PropertyControlProps<T>, 'className' | 'id'>;
|
|
242
|
+
type DistributiveOmit<U, K extends PropertyKey> = U extends unknown ? Omit<U, K> : never;
|
|
243
|
+
/**
|
|
244
|
+
* A labeled settings row for one field, its control chosen by `kind` (and
|
|
245
|
+
* `control`): `<PropertyField kind="number" control="slider" label="Blur" …>`.
|
|
246
|
+
*
|
|
247
|
+
* The row is a {@link PropertyRow}; the control is the one
|
|
248
|
+
* {@link PropertyControl} draws for the same props. Every schema-driven
|
|
249
|
+
* settings surface in the kit — `ControlPanel`, `PrefsForm`, `SelectionPanel`
|
|
250
|
+
* — draws its built-in kinds through that one mapping, so a kind's control
|
|
251
|
+
* is decided once.
|
|
252
|
+
*
|
|
253
|
+
* Callbacks follow the field's shape: a discrete control (a box, a choice)
|
|
254
|
+
* reports each pick; a continuous or typed one reports every change through
|
|
255
|
+
* `onChange` alone, or splits them into live `onInput` and settled
|
|
256
|
+
* `onChange` when given both. `mixed` and `unset` show a field whose sources
|
|
257
|
+
* disagree, or agree on holding nothing.
|
|
258
|
+
*/
|
|
259
|
+
declare function PropertyField<T extends string = string>(props: PropertyFieldProps<T>): react.JSX.Element;
|
|
260
|
+
/**
|
|
261
|
+
* The control for one field, with no row around it — for a cell that shares
|
|
262
|
+
* a row with others, or a surface that draws its own row. Keyed by `kind`
|
|
263
|
+
* (and `control`), the same mapping {@link PropertyField} draws.
|
|
264
|
+
*
|
|
265
|
+
* A slider brings its readout beside the track. Several elements come back
|
|
266
|
+
* as siblings rather than wrapped, so the surrounding row lays them out.
|
|
267
|
+
*/
|
|
268
|
+
declare function PropertyControl<T extends string = string>(typed: PropertyControlProps<T>): react.JSX.Element;
|
|
269
|
+
|
|
46
270
|
/** An annotation drawn over a curve plot: a shaded band across a range of x,
|
|
47
271
|
* or a vertical line at one x. */
|
|
48
272
|
type CurveMark = {
|
|
@@ -454,10 +678,12 @@ interface SvgStroke {
|
|
|
454
678
|
* writes the stroke centered and says so through `onWarn`; the parser
|
|
455
679
|
* never sets it. */
|
|
456
680
|
align?: StrokeAlign;
|
|
457
|
-
/** `marker-start` / `marker-mid` / `marker-end
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
681
|
+
/** `marker-start` / `marker-mid` / `marker-end` as the kit's `MarkerRef`: the
|
|
682
|
+
* bare `url(#id)` key, or a key with the `size` the serializer writes into a
|
|
683
|
+
* def of its own. */
|
|
684
|
+
markerStart?: MarkerRef;
|
|
685
|
+
markerMid?: MarkerRef;
|
|
686
|
+
markerEnd?: MarkerRef;
|
|
461
687
|
}
|
|
462
688
|
/**
|
|
463
689
|
* Leaf node: a path geometry plus fill/stroke. All other v1 shapes
|
|
@@ -826,6 +1052,9 @@ interface LabBaseProps {
|
|
|
826
1052
|
/** Offer the header's add-trial control. Default `true`; a lab that opens
|
|
827
1053
|
* trials some other way passes `false`. */
|
|
828
1054
|
addTrial?: boolean;
|
|
1055
|
+
/** Offer the header's zoom controls, which act on the focused trial's camera
|
|
1056
|
+
* and answer Mod+=, Mod+- and Mod+0. Default `true`. */
|
|
1057
|
+
zoom?: boolean;
|
|
829
1058
|
/** Tools offered lab-wide. A trial whose instrument declares none of its own
|
|
830
1059
|
* reflects and writes this slot. */
|
|
831
1060
|
tools?: readonly TrialTool[];
|
|
@@ -924,6 +1153,16 @@ interface LabShellProps {
|
|
|
924
1153
|
* the trial runtime is wanted too. */
|
|
925
1154
|
declare function LabShell({ title, children, header, footer, mode, pages, path, documentTitle, }: LabShellProps): react.JSX.Element;
|
|
926
1155
|
|
|
1156
|
+
/**
|
|
1157
|
+
* Zoom out, the zoom as a percentage, and zoom in, for whichever trial has the
|
|
1158
|
+
* focus. The percentage resets to actual size. They route through core's
|
|
1159
|
+
* `viewport.zoom` action, on a dispatcher of their own that listens for its
|
|
1160
|
+
* keys — Mod+=, Mod+- and Mod+0 — so the buttons and the keys are one path.
|
|
1161
|
+
* Over a trial with no camera the group stays, disabled, so the header does not
|
|
1162
|
+
* reflow as the focus moves.
|
|
1163
|
+
*/
|
|
1164
|
+
declare function LabZoom(): react.JSX.Element;
|
|
1165
|
+
|
|
927
1166
|
/** A tile's persisted extent, keyed by the id its caller gave it. Grid resizes
|
|
928
1167
|
* write `span`; `size` is here because a strategy swap would write that. */
|
|
929
1168
|
type TrialLayout = Record<string, {
|
|
@@ -1080,5 +1319,5 @@ interface TrialChromeProps {
|
|
|
1080
1319
|
* each region its slice. */
|
|
1081
1320
|
declare function TrialChrome({ trialId, record, instrument, isLastTrial, undoBindings, job, loupe, trialChrome, chrome, suppress, activeToolId, setActiveTool, children, }: TrialChromeProps): react.JSX.Element;
|
|
1082
1321
|
|
|
1083
|
-
export { ANNOTATION_TOOLS, ANNOTATION_WEASEL_TOOLS, AnnotationData, AnnotationKind, AnnotationMeaning, AnnotationOverlay, AnnotationTarget, AnnotationTargets, AnnotationsApi, AnnotationsCapability, AnnotationsContext, CaptureOptions, CaptureResult, CaptureSource, CloseIcon, CollapseIcon, ConfigField, ConfigRule, ConfigSchema, ControlRenderer, CurveField, DEFAULT_VIEW, ExpandIcon, ExportMenu, IconProps, Instrument, InstrumentList, JobHandle, Jog, Lab, LabBoundary, LabContribution, LabDensity, LabMode, LabPalette, LabRoot, LabShell, LabSwitcher, MarkList, MarkScene, MarkStyle, PaintableMark, PauseIcon, PlayIcon, PropertyGroup, PropertyListPack, ResetIcon, SPECIMEN_SECTIONS, Specimen, SplitProps, StepBackIcon, StepForwardIcon, StopIcon, StorageAdapter, Subpanel, TokenPanel, Trial, TrialBody, TrialChrome, TrialContribution, TrialInfo, TrialRecord, TrialTool, ViewTransform, Workspace, WorldRect, annotationToolInfo, as2DView, capturePlan, captureTarget, composeCaptureSvg, createMarkDrawOne, currentPage, defineInstrument, fitView, fromWeaselView, inferTokenType, interstellarTheme, isStale, markSvgNodes, refitScale, resolveMarkStyle, seenFrom, toWeaselView, useAnnotations, useAnnotationsOptional, validateConfigSchema };
|
|
1084
|
-
export type { AnnotationOverlayProps, AnnotationTargetsProps, AnnotationToolInfo, CaptureArgs, CapturePlan, ComposeSvgArgs, ContentSize, CurveFieldProps, CurveMark, InstrumentSpec, JogProps, LabBoundaryProps, LabPage, LabPaletteProps, LabProps, LabRootProps, LabShellProps, LabSwitcherProps, MarkDrawOptions, MarkListProps, PaneSize, PanelDescriptor, PropertyGroupProps, SubpanelProps, TokenCategory, TokenEntry, TokenPanelProps, TokenScale, TokenScaleRule, TrialBodyProps, TrialChromeProps, TrialLayout, TrialProps, UndoBindings, ValidationResult, ViewTransform2D, WorkspaceProps };
|
|
1322
|
+
export { ANNOTATION_TOOLS, ANNOTATION_WEASEL_TOOLS, AnnotationData, AnnotationKind, AnnotationMeaning, AnnotationOverlay, AnnotationTarget, AnnotationTargets, AnnotationsApi, AnnotationsCapability, AnnotationsContext, CaptureOptions, CaptureResult, CaptureSource, CloseIcon, CollapseIcon, ConfigField, ConfigRule, ConfigSchema, ControlRenderer, CurveField, DEFAULT_VIEW, ExpandIcon, ExportMenu, IconProps, Instrument, InstrumentList, JobHandle, Jog, Lab, LabBoundary, LabContribution, LabDensity, LabMode, LabPalette, LabRoot, LabShell, LabSwitcher, LabZoom, MarkList, MarkScene, MarkStyle, PaintableMark, PauseIcon, PlayIcon, PropertyControl, PropertyField, PropertyGroup, PropertyListPack, PropertyRowLayout, ResetIcon, SPECIMEN_SECTIONS, Specimen, SplitProps, StepBackIcon, StepForwardIcon, StopIcon, StorageAdapter, Subpanel, TokenPanel, Trial, TrialBody, TrialChrome, TrialContribution, TrialInfo, TrialRecord, TrialTool, ViewTransform, Workspace, WorldRect, annotationToolInfo, as2DView, capturePlan, captureTarget, composeCaptureSvg, createMarkDrawOne, currentPage, defineInstrument, fitView, fromWeaselView, inferTokenType, interstellarTheme, isStale, markSvgNodes, refitScale, resolveMarkStyle, seenFrom, toWeaselView, useAnnotations, useAnnotationsOptional, validateConfigSchema };
|
|
1323
|
+
export type { AnnotationOverlayProps, AnnotationTargetsProps, AnnotationToolInfo, CaptureArgs, CapturePlan, ComposeSvgArgs, ContentSize, CurveFieldProps, CurveMark, InstrumentSpec, JogProps, LabBoundaryProps, LabPage, LabPaletteProps, LabProps, LabRootProps, LabShellProps, LabSwitcherProps, MarkDrawOptions, MarkListProps, PaneSize, PanelDescriptor, PropertyControlProps, PropertyFieldProps, PropertyGroupProps, PropertyOption, SubpanelProps, TokenCategory, TokenEntry, TokenPanelProps, TokenScale, TokenScaleRule, TrialBodyProps, TrialChromeProps, TrialLayout, TrialProps, UndoBindings, ValidationResult, ViewTransform2D, WorkspaceProps };
|