@weasel-js/core 1.5.2 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,44 +1,224 @@
1
- import * as React$1 from 'react';
2
- import React__default, { RefObject, ReactNode, Ref, MutableRefObject, MouseEvent, ComponentType } from 'react';
3
- import { a as UnitValue, b as UnitSystem, c as UnitEntry, d as Unit, U as UseMoveOptions, O as OriginProjection } from './grid-CuxXjaQV.js';
4
- export { A as ANGLE_RADIANS, I as IMPERIAL_INCHES, M as METRIC_MM, P as PIXELS, R as RECT_ORIGIN_PROJECTION, e as UnitScale, f as formatUnit, g as gridSnapStrategy, p as pointToGridCell, r as resolveUnit, u as unitScale } from './grid-CuxXjaQV.js';
5
- import { View, NodeId, Bounds, ModifierState, PointerSessionCancelReason, DeviceProfile, Action, SelectionMode, SelectionExtendKey, SelectionApi, DepSchema, AnyToolOf, Contribution as Contribution$1, ContributionChrome as ContributionChrome$1, Tool as Tool$1, ToolDef as ToolDef$1, ViewportToolDef as ViewportToolDef$1, HitShape, HandleKind, DebugSink, ToolKeybinding, HotkeyTrigger, RuleCtx, Rule, IngestItem, OngoingOverlay, ActionsProp, OverlayRole, ResizeAnchor, Point2 } from '@weasel-js/routing';
6
- export { ALWAYS, Action, ActionDeps, ActionDisabledReason, ActionDispatch, ActionEnabledResult, ActionEntry, ActionPresentation, ActionsProp, ActionsRegistry, AffordanceHit, BindingOpts, BindingScope, BindingSource, BoundGesture, Bounds, BuildRuleCtxArgs, COARSE_TARGET_SCALE, ContributionRouting, DEFAULT_ALLOWED_CAPABILITIES, DEFAULT_DEVICE_PROFILE, DebugSink, DepName, DepSchema, DetectedDeviceFacts, DeviceProfile, Dispatcher, DispatcherContext, DragSample, Eligibility, EligibilityState, GestureBinding, HandleKind, HitShape, HotkeyTrigger, ImmediateInvoker, IngestItem, InputEvent, InvocationCtx, Invoker, MatchResult, ModifierState, NEVER, NodeId, OngoingHandle, OngoingInvoker, OngoingOverlay, OverlayPosition, OverlayRole, Point2, PointerSession, PointerSessionCallbacks, PointerSessionCancelReason, PointerSessionOptions, ResizeAnchor, ResolveAllOptions, ResolveOnlyResult, ResolvedCandidate, Rule, RuleCtx, ScopedBinding, ScratchKey, ScratchStore, SelectionApi, SelectionExtendKey, SelectionMode, Selector, ToolCtx, ToolKeybinding, ToolModifiers, ToolPresentation, ToolSlot, UiOngoingControl, Point2 as Vec2, View, actionBindings, buildRuleCtx, clientToCanvas, createDispatcher, deleteScratch, describeRule, evaluate, evaluateEnabled, getScratch, isEditableTarget, liveScope, matchesKeyBinding, mergeContributions, openPointerSession, resolveDeviceProfile, resolveParams, scopeBindings, scratchKey, setScratch, specificity } from '@weasel-js/routing';
7
- import { FillStyle, Stroke, TextureHandle, GradientUnits, ColorSpace, TilePatternSpec, GradientKind, GradStop, GradientFill, MarkerKey, MarkerRef } from '@weasel-js/paint';
8
- export { ColorSpace, FillStyle, GradStop, GradientFill, GradientKind, GradientUnits, KitMarkerKey, MarkerKey, MarkerRef, OklchDeg, Region, STROKE_DASH_RATIOS, ScreenLength, Stroke, StrokeAlign, StrokeDashStyle, TextureHandle, TilePatternSpec, alignedStrokeRect, dashForStrokeStyle, hexToOklchDeg, lerpColorArray, lerpOklab, lerpOklch, oklabToOklch, oklabToSrgbU8, oklchDegToHex, oklchToOklab, resolveScreenLength, srgbFloatToOklab, srgbU8ToOklab, strokeDashStyleOf } from '@weasel-js/paint';
9
- import { D as DrawCommand, E as Effect, w as Scene, x as RectPose, y as InertiaConfig, V as ViewAnimationOptions, N as Node$1, z as PoseComposition, A as SliceDep, B as VertexColorChannel, f as ShaderProgramHandle, F as InsertExtras, H as SerializedScene, J as GeometryProjection, K as ContentHandlerEntry, L as SvgIngestOptions, O as PanBounds, Q as Animator, U as ColorOverrideRegistry, X as UseSceneOptions, Y as SceneRegistry, Z as RegisteredOp, _ as PoseOverrides, $ as DerivedDep, a0 as ViewportDims, P as PathDrawCommand, T as TextDrawCommand, a1 as ShaderProgram, G as GlMat3, a2 as BooleansAdapter, a3 as UseAnimatorOptions, a4 as SpringPresetName, a5 as EasingSpec, a6 as AnimationHandle, a7 as SampledTrack } from './depSchema-FKQBEfg7.js';
10
- export { a8 as AddLayerSpec, a9 as AddNodeSpec, aa as AnimateToBoundsOptions, ab as AreaSelectDep, ac as BezierEasing, ad as BooleanOp, ae as BooleanOpResult, af as ClipboardDep, ag as ClipboardIngestCtx, ah as ColorOverride, ai as ColorOverrideFn, aj as ContainerNode, C as CullRect, ak as DecayLoopConfig, al as DecayOptions, am as EASINGS, an as EasingFn, ao as EasingName, ap as EditAnchorsDep, aq as EventBooking, ar as EventBookingHandle, as as EventTrack, at as FitViewToBoundsOptions, a as GroupDrawCommand, au as IDENTITY_POSE_COMPOSITION, b as ImageDrawCommand, c as ImageMinification, av as IngestCtx, aw as IngestionDep, ax as InsertDep, ay as Interpolate, az as InterpolatorFactory, aA as Keyframe, aB as LassoSelectDep, aC as LayerRecord, aD as LayoutDep, aE as LeafNode, aF as LoopFactory, aG as LoopOptions, aH as NestedTimeline, aI as NodeAtPointDep, aJ as PhysicsHandle, aK as PhysicsOptions, aL as PoseAdapter, aM as PoseClosure, aN as PoseOverride, aO as RECT_POSE_COMPOSITION, aP as RIGID_POSE_COMPOSITION, R as RenderTarget, aQ as ResizePolicy, aR as SPRING_PRESETS, S as SPRITE_STRIDE, aS as SerializedNode, e as ShaderDrawCommand, g as ShaderUniform, aT as SnapDep, aU as SpringOptions, aV as SpringPreset, i as SpriteSheet, j as SpritesDrawCommand, aW as StaggerBuilder, aX as StaggerDelay, aY as StaggerFactory, aZ as StaggerOptions, a_ as StaggerPerItem, a$ as StaggerSpringPoseOptions, b0 as StaggerTweenOptions, b1 as SvgUnpacker, b2 as SystemLayerRecord, b3 as SystemLayerSpec, b4 as TextEditDep, b5 as TimelineClock, b6 as TimelineEvent, b7 as TimelineHandle, b8 as TimelineOptions, b9 as TimelineTrack, ba as Track, bb as TweenLoopOptions, bc as TweenOptions, bd as UserLayerRecord, be as VIEW_ANIMATION_KEY, bf as ViewAnimationApi, bg as ViewApi, bh as ViewChannel, bi as applyBooleanOp, bj as asNodeId, m as blur, bk as composeRectPose, bl as composeRigidPose, bm as composeWorldPose, bn as cubicBezierEasing, o as cullDrawCommands, bo as decomposeRectPose, bp as decomposeRigidPose, bq as easeIn, br as easeInBack, bs as easeInBounce, bt as easeInCirc, bu as easeInCubic, bv as easeInElastic, bw as easeInExpo, bx as easeInOut, by as easeInOutBack, bz as easeInOutBounce, bA as easeInOutCirc, bB as easeInOutCubic, bC as easeInOutElastic, bD as easeInOutExpo, bE as easeInOutQuad, bF as easeInOutQuart, bG as easeInOutQuint, bH as easeInOutSine, bI as easeInQuad, bJ as easeInQuart, bK as easeInQuint, bL as easeInSine, bM as easeOut, bN as easeOutBack, bO as easeOutBounce, bP as easeOutCirc, bQ as easeOutCubic, bR as easeOutElastic, bS as easeOutExpo, bT as easeOutQuad, bU as easeOutQuart, bV as easeOutQuint, bW as easeOutSine, bX as fitViewToBounds, p as frameRect, bY as linear, q as mat3, bZ as rebaseLocalPose, b_ as registerContentHandler, r as registerEffect, b$ as resolveEasing, c0 as resolveStrokeWidth, c1 as translateRectPose, c2 as useDecayLoop, c3 as useViewAnimation, c4 as useViewAnimationOn, v as viewToMat3, u as vignette, c5 as worldPoseLookup } from './depSchema-FKQBEfg7.js';
1
+ import * as react from 'react';
2
+ import react__default, { RefObject, ReactNode, Ref, MouseEvent, ComponentType, MutableRefObject } from 'react';
3
+ import { a as UnitValue, b as UnitSystem, c as UnitEntry, d as Unit, U as UseMoveOptions, O as OriginProjection } from './grid-BXdz8GF2.js';
4
+ export { A as ANGLE_RADIANS, I as IMPERIAL_INCHES, M as METRIC_MM, P as PIXELS, R as RECT_ORIGIN_PROJECTION, e as UnitScale, f as formatUnit, g as gridSnapStrategy, p as pointToGridCell, r as resolveUnit, u as unitScale } from './grid-BXdz8GF2.js';
5
+ import { View, HitShape, HandleKind, NodeId, Bounds, ModifierState, PointerSessionCancelReason, DeviceProfile, Action, SelectionMode, SelectionExtendKey, SelectionApi, DepSchema, AnyToolOf, Contribution as Contribution$1, ContributionChrome as ContributionChrome$1, Tool as Tool$1, ToolDef as ToolDef$1, ViewportToolDef as ViewportToolDef$1, DebugSink, ToolKeybinding, HotkeyTrigger, RuleCtx, Rule, IngestItem, OngoingOverlay, DepName, ActionsProp, OverlayRole, ResizeAnchor, Point2 } from '@weasel-js/routing';
6
+ export { ALWAYS, Action, ActionDeps, ActionDisabledReason, ActionDispatch, ActionEnabledResult, ActionEntry, ActionItem, ActionPresentation, ActionVariant, ActionsProp, ActionsRegistry, AffordanceHit, BindingOpts, BindingScope, BindingSource, BoundGesture, Bounds, BuildRuleCtxArgs, COARSE_TARGET_SCALE, ContributionDeps, ContributionRouting, DEFAULT_ALLOWED_CAPABILITIES, DEFAULT_DEVICE_PROFILE, DebugSink, DepName, DepSchema, DetectedDeviceFacts, DeviceProfile, Dispatcher, DispatcherContext, DragSample, Eligibility, EligibilityState, GestureBinding, HandleKind, HitShape, HotkeyTrigger, ImmediateInvoker, IngestItem, InputEvent, InvocationCtx, Invoker, MatchResult, ModifierState, NEVER, NodeId, OngoingHandle, OngoingInvoker, OngoingOverlay, OverlayPosition, OverlayRole, Point2, PointerSession, PointerSessionCallbacks, PointerSessionCancelReason, PointerSessionOptions, ResizeAnchor, ResolveAllOptions, ResolveOnlyResult, ResolvedCandidate, Rule, RuleCtx, ScopedBinding, ScratchKey, ScratchStore, SelectionApi, SelectionExtendKey, SelectionMode, Selector, ToolCtx, ToolKeybinding, ToolModifiers, ToolPresentation, ToolSlot, UiOngoingControl, Point2 as Vec2, View, actionBindings, actionItems, buildDepsFromRequires, buildRuleCtx, clientToCanvas, createDispatcher, deleteScratch, describeRule, evaluate, evaluateEnabled, getScratch, isEditableTarget, liveScope, matchesKeyBinding, openPointerSession, resolveDeviceProfile, resolveParams, scopeBindings, scratchKey, setScratch, specificity } from '@weasel-js/routing';
7
+ import { FillStyle, Stroke, TextureHandle, GradientUnits, ColorSpace, TilePatternSpec, GradientKind, GradStop, GradientFill, MarkerKey, MarkerRef, Palette } from '@weasel-js/paint';
8
+ export { ColorInterpolationSpace, ColorSpace, FillStyle, GradStop, GradientFill, GradientKind, GradientUnits, HueInterpolation, KitMarkerKey, MarkerKey, MarkerRef, OklchDeg, Region, STROKE_DASH_RATIOS, ScreenLength, Stroke, StrokeAlign, StrokeDashStyle, TextureHandle, TilePatternSpec, alignedStrokeRect, contrastLineColor, dashForStrokeStyle, hexToOklchDeg, hslToSrgb, interpolateSrgb, lerpColorArray, lerpOklab, lerpOklch, linearSrgbToOklab, linearToSrgb, oklabToLinearSrgb, oklabToOklch, oklabToSrgbU8, oklchDegToHex, oklchToOklab, resolveScreenLength, srgbFloatToOklab, srgbToHsl, srgbToLinear, srgbU8ToOklab, strokeDashStyleOf } from '@weasel-js/paint';
9
+ import { D as DrawCommand, E as Effect, w as Scene, x as RectPose, y as InertiaConfig, V as ViewAnimationOptions, N as Node$1, z as PoseComposition, A as SliceDep, B as VertexColorChannel, f as ShaderProgramHandle, F as InsertExtras, H as SerializedScene, J as GeometryProjection, K as ContentHandlerEntry, L as SvgIngestOptions, O as PanBounds, Q as Animator, U as ColorOverrideRegistry, X as UseSceneOptions, Y as SceneRegistry, Z as RegisteredOp, _ as PoseOverrides, $ as DerivedDep, a0 as ViewportDims, P as PathDrawCommand, a1 as ViewApi, T as TextDrawCommand, a2 as ShaderProgram, G as GlMat3, a3 as BooleansAdapter, a4 as UseAnimatorOptions, a5 as SpringPresetName, a6 as EasingSpec, a7 as AnimationHandle, a8 as SampledTrack } from './builtins-HWyuLzE-.js';
10
+ export { a9 as AddLayerSpec, aa as AddNodeSpec, ab as AnimateToBoundsOptions, ac as AreaSelectDep, ad as BezierEasing, ae as BooleanOp, af as BooleanOpResult, ag as ClipboardDep, ah as ClipboardIngestCtx, ai as ColorOverride, aj as ColorOverrideFn, ak as ContainerNode, C as CullRect, al as DecayLoopConfig, am as DecayOptions, an as EASINGS, ao as EasingFn, ap as EasingName, aq as EditAnchorsDep, ar as EventBooking, as as EventBookingHandle, at as EventTrack, au as FitViewToBoundsOptions, a as GroupDrawCommand, av as IDENTITY_POSE_COMPOSITION, b as ImageDrawCommand, c as ImageMinification, aw as IngestCtx, ax as IngestionDep, ay as InsertDep, az as Interpolate, aA as InterpolatorFactory, aB as Keyframe, aC as LassoSelectDep, aD as LayerRecord, aE as LayoutDep, aF as LeafNode, aG as LoopFactory, aH as LoopOptions, aI as NestedTimeline, aJ as NodeAtPointDep, aK as PhysicsHandle, aL as PhysicsOptions, aM as PointerContextProvider, aN as PointerContextValue, aO as PointerWorldPos, aP as PoseAdapter, aQ as PoseClosure, aR as PoseOverride, aS as RECT_POSE_COMPOSITION, aT as RIGID_POSE_COMPOSITION, R as RenderTarget, aU as ResizePolicy, aV as SPRING_PRESETS, S as SPRITE_STRIDE, aW as SerializedNode, e as ShaderDrawCommand, g as ShaderUniform, aX as SnapDep, aY as SpringOptions, aZ as SpringPreset, i as SpriteSheet, j as SpritesDrawCommand, a_ as StaggerBuilder, a$ as StaggerDelay, b0 as StaggerFactory, b1 as StaggerOptions, b2 as StaggerPerItem, b3 as StaggerSpringPoseOptions, b4 as StaggerTweenOptions, b5 as SvgUnpacker, b6 as SystemLayerRecord, b7 as SystemLayerSpec, b8 as TextEditDep, b9 as TimelineClock, ba as TimelineEvent, bb as TimelineHandle, bc as TimelineOptions, bd as TimelineTrack, be as Track, bf as TweenLoopOptions, bg as TweenOptions, bh as UserLayerRecord, bi as VIEW_ANIMATION_KEY, bj as ViewAnimationApi, bk as ViewChannel, bl as applyBooleanOp, bm as asNodeId, m as blur, bn as composeRectPose, bo as composeRigidPose, bp as composeWorldPose, bq as createPointerStore, br as cubicBezierEasing, o as cullDrawCommands, bs as decomposeRectPose, bt as decomposeRigidPose, bu as easeIn, bv as easeInBack, bw as easeInBounce, bx as easeInCirc, by as easeInCubic, bz as easeInElastic, bA as easeInExpo, bB as easeInOut, bC as easeInOutBack, bD as easeInOutBounce, bE as easeInOutCirc, bF as easeInOutCubic, bG as easeInOutElastic, bH as easeInOutExpo, bI as easeInOutQuad, bJ as easeInOutQuart, bK as easeInOutQuint, bL as easeInOutSine, bM as easeInQuad, bN as easeInQuart, bO as easeInQuint, bP as easeInSine, bQ as easeOut, bR as easeOutBack, bS as easeOutBounce, bT as easeOutCirc, bU as easeOutCubic, bV as easeOutElastic, bW as easeOutExpo, bX as easeOutQuad, bY as easeOutQuart, bZ as easeOutQuint, b_ as easeOutSine, b$ as fitViewToBounds, p as frameRect, c0 as linear, q as mat3, c1 as rebaseLocalPose, c2 as registerContentHandler, r as registerEffect, c3 as resolveEasing, c4 as resolveStrokeWidth, c5 as translateRectPose, c6 as useDecayLoop, c7 as usePointerContext, c8 as usePointerPosition, c9 as useViewAnimation, ca as useViewAnimationOn, v as viewToMat3, u as vignette, cb as worldPoseLookup } from './builtins-HWyuLzE-.js';
11
11
  import { CursorSpec, PaintedCursorState } from '@weasel-js/cursor';
12
12
  export { BakeOptions, CursorGlyph, CursorGlyphName, CursorGlyphSpec, CursorSpec, PaintedCursor, PaintedCursorFrame, PaintedCursorState, ResolvedCursor, bakeCursor, createPaintedCursorState, cursorFor, resolveCursor, resolveCursorTier } from '@weasel-js/cursor';
13
13
  import { ClaimableGesture, GestureSpec } from '@weasel-js/gestures';
14
- export { ClaimableGesture, ClickSpec, DragSpec, DropSpec, GestureSpec, KeyHeldSpec, KeySpec, ModSpec, MultiTouchSpec, PasteSpec, TargetSpec, WheelSpec } from '@weasel-js/gestures';
15
- import { S as SimulationNode, U as UseSimulationOptions, a as Simulation, P as PathBuilder } from './math-CeGmGPy8.js';
16
- export { D as DEFAULT_ALPHA_DECAY, b as DEFAULT_ALPHA_MIN, c as DEFAULT_VELOCITY_DECAY, d as PathStation, e as PointAlongPathOptions, f as SimulationCore, g as SimulationForce, h as SimulationOptions, i as aabbCenter, j as createSimulation, k as ellipsePath, l as linePath, p as pointAlongPath, m as pointInRotatedRect, n as polygonFromPoints, o as polylineFromPoints, r as rectCorners, q as rectPath, s as regularPolygonPath, t as rotatePoint, u as rotatedRectCorners, v as starPath } from './math-CeGmGPy8.js';
14
+ export { ClaimableGesture, ClickSpec, DragSpec, DropSpec, GestureSpec, KeyHeldSpec, KeySpec, ModSpec, MultiTouchSpec, PasteSpec, PinchSpec, TargetSpec, WheelSpec } from '@weasel-js/gestures';
15
+ import { S as SimulationNode, U as UseSimulationOptions, a as Simulation, P as PathBuilder } from './math-MCQcf_gc.js';
16
+ export { D as DEFAULT_ALPHA_DECAY, b as DEFAULT_ALPHA_MIN, c as DEFAULT_VELOCITY_DECAY, d as PathStation, e as PointAlongPathOptions, f as SimulationCore, g as SimulationForce, h as SimulationOptions, i as aabbCenter, j as createSimulation, k as ellipsePath, l as linePath, p as pointAlongPath, m as pointInRotatedRect, n as polygonFromPoints, o as polylineFromPoints, r as rectCorners, q as rectPath, s as regularPolygonPath, t as rotatePoint, u as rotatedRectCorners, v as starPath } from './math-MCQcf_gc.js';
17
17
  import { ToolsApi as ToolsApi$1, UseToolsOptions as UseToolsOptions$1 } from '@weasel-js/routing/react';
18
- export { ActionsProvider, ActionsScope, ActiveToolContextProvider, ActiveToolContextProviderIfRoot, ActiveToolContextProviderProps, ActiveToolContextValue, DepRegistry, DepRegistryProvider, DispatcherChannels, UseGestureDispatcherOptions, useAction, useActionsRegistry, useActiveToolContext, useDepRegistry, useDepSource, useGestureDispatcher, useOptionalActiveToolContext, useOptionalDepRegistry } from '@weasel-js/routing/react';
19
- import { B as BoundsConstraint, P as PointSnapBehavior, L as LassoSelectBehavior, R as RotateBehavior, S as SnapStrategy, M as MoveBehavior, I as InsertBehavior } from './types-BHGdrOcu.js';
20
- export { A as ActionBehavior, b as AreaSelectOverlay, c as BehaviorMoveResult, d as BehaviorResult, C as CloneBehavior, e as CloneLayer, f as ClonePose, G as GestureContext, g as GroupTransform, h as InsertMoveResult, i as InsertOverlay, j as InsertPoint, k as InsertProposed, l as LassoSelectMoveResult, m as LassoSelectOverlay, n as LassoSelectPose, o as LassoSelectProposed, p as PointSnapContext, a as PointSnapFrame, q as PointSnapResult, r as PointerState, s as ResizeMoveResult, t as ResizeOverlay, u as ResizeProposed, v as RotateMoveResult, w as RotateOverlay, x as RotateProposed } from './types-BHGdrOcu.js';
21
- import { P as PoseDescriptor, c as PolygonPath, a as Path, d as RotatedPose, e as RectPath } from './poseDescriptor-PgfVKfa0.js';
22
- export { f as PathFillRule, R as RECT_POSE_DESCRIPTOR, b as ROTATED_POSE_DESCRIPTOR, p as poseDescriptorForNode, t as translatePoseViaDescriptor, v as visualBoundsViaDescriptor } from './poseDescriptor-PgfVKfa0.js';
23
- import { U as UseResizeOptions } from './pointSnapToGrid-CgcK2R_I.js';
24
- export { C as CORNER_ANCHORS, a as CornerAnchor, e as CornerEdge, b as CornerHandle, c as cornerPoint, d as cornerResizeHandles, h as hitCornerHandle, p as pointSnapToGrid } from './pointSnapToGrid-CgcK2R_I.js';
25
- import { M as MoveAdapter, A as AreaSelectAdapter, b as LassoHitMode, c as LassoSelectAdapter, R as ResizeAdapter, d as RotateAdapter, L as LayoutStrategy, e as LayerEnumerableAdapter, I as InsertAdapter, C as ClipboardSnapshot, O as OrderedAdapter, a as SceneAdapter, f as LayoutSnap } from './types-BdaK9PcP.js';
26
- export { g as ContainerBounds, D as DropTarget, h as LayoutChild, i as LayoutContainer, j as LayoutDragged, S as SnapTarget } from './types-BdaK9PcP.js';
27
- import * as react_jsx_runtime from 'react/jsx-runtime';
18
+ export { ActionsProvider, ActionsScope, ActiveToolContextProvider, ActiveToolContextProviderIfRoot, ActiveToolContextProviderProps, ActiveToolContextValue, DepRegistry, DepRegistryProvider, DispatcherChannels, OngoingAction, UseGestureDispatcherOptions, useAction, useActionsRegistry, useActiveToolContext, useDepRegistry, useDepSource, useGestureDispatcher, useOngoingAction, useOptionalActiveToolContext, useOptionalDepRegistry } from '@weasel-js/routing/react';
19
+ import { B as BoundsConstraint, P as PointSnapBehavior, L as LassoSelectBehavior, R as RotateBehavior, S as SnapStrategy, M as MoveBehavior, I as InsertBehavior } from './types-D_74YlWs.js';
20
+ export { A as ActionBehavior, b as AreaSelectOverlay, c as BehaviorMoveResult, d as BehaviorResult, C as CloneBehavior, e as CloneLayer, f as ClonePose, G as GestureContext, g as GroupTransform, h as InsertMoveResult, i as InsertOverlay, j as InsertPoint, k as InsertProposed, l as LassoSelectMoveResult, m as LassoSelectOverlay, n as LassoSelectPose, o as LassoSelectProposed, p as PointSnapContext, a as PointSnapFrame, q as PointSnapResult, r as PointerState, s as ResizeMoveResult, t as ResizeOverlay, u as ResizeProposed, v as RotateMoveResult, w as RotateOverlay, x as RotateProposed } from './types-D_74YlWs.js';
21
+ import { P as PoseDescriptor, b as RotatedPose } from './poseDescriptor-rZa9W5hJ.js';
22
+ export { R as RECT_POSE_DESCRIPTOR, a as ROTATED_POSE_DESCRIPTOR, p as poseDescriptorForNode, t as translatePoseViaDescriptor, v as visualBoundsViaDescriptor } from './poseDescriptor-rZa9W5hJ.js';
23
+ import { U as UseResizeOptions } from './pointSnapToGrid-7mCcm6qG.js';
24
+ export { C as CORNER_ANCHORS, a as CornerAnchor, e as CornerEdge, b as CornerHandle, c as cornerPoint, d as cornerResizeHandles, h as hitCornerHandle, p as pointSnapToGrid } from './pointSnapToGrid-7mCcm6qG.js';
25
+ import { M as MoveAdapter, A as AreaSelectAdapter, c as LassoHitMode, d as LassoSelectAdapter, R as ResizeAdapter, e as RotateAdapter, L as LayoutStrategy, f as LayerEnumerableAdapter, I as InsertAdapter, C as ClipboardSnapshot, b as LayoutDropTargetMode, O as OrderedAdapter, a as SceneAdapter, g as LayoutSnap } from './types-CxC8P6W0.js';
26
+ export { h as ContainerBounds, D as DropRegion, i as DropTarget, j as LayoutChild, k as LayoutContainer, l as LayoutDragged, S as SnapTarget } from './types-CxC8P6W0.js';
27
+ import { a as PolygonPath, P as Path, R as RectPath } from './path-JEV2c5If.js';
28
+ export { b as PathFillRule } from './path-JEV2c5If.js';
28
29
  import { Op, HistorySelection, CreateHistoryOptions, History } from '@weasel-js/history';
29
30
  export * from '@weasel-js/history';
30
31
  export { Op } from '@weasel-js/history';
31
32
  import { PlacementAlign, Rect, Mat3 } from '@weasel-js/geom';
32
33
  export { DEFAULT_FLATTEN_TOLERANCE, PATH_C, PATH_CMD_LENGTHS, PATH_L, PATH_M, PATH_Q, PATH_Z, Rect, flattenCubic, flattenCubicWithArcLen, flattenQuadratic, flattenQuadraticWithArcLen, pathCommandCoordCount } from '@weasel-js/geom';
33
34
  import { TextRenderer, TextPose, StyledRun, TextStyle, TextVerticalAlign, TextPaint } from '@weasel-js/text';
34
- export { DEFAULT_TEXT_STYLE, LaidOutDecoration, LaidOutGroup, LaidOutLineBox, LaidOutOutlineGlyph, LaidOutQuad, LaidOutRuns, LayoutLine, LayoutResult, LayoutRunsOpts, MARKDOWN_RUN_GRAMMAR, MarkdownFontOptions, MeasureFn, MeasureTextBoundsOpts, MeasuredText, PositionedRun, ResolvedRun, ResolvedTextStyle, RunFlag, RunGrammar, RunMarker, SCRIPT_METRICS, StyledRun, TextAlign, TextDirection, TextLineBoxesOpts, TextPaint, TextPose, TextPoseLayout, TextPoseLayoutInput, TextRenderer, TextStyle, TextVerticalAlign, cachedLayoutRuns, createMarkdownRenderer, fontString, layoutMarkdown, layoutRuns, layoutTextPose, markdownToRuns, measureText, measureTextBounds, measuredWidth, resolveAlign, resolveRuns, resolveTextStyle, runsToMarkdown, runsToPlainText, textLineBoxes, textPoseLayoutInput, toRuns, verticalAlignOffset } from '@weasel-js/text';
35
+ export { DEFAULT_TEXT_STYLE, LaidOutDecoration, LaidOutGroup, LaidOutLineBox, LaidOutOutlineGlyph, LaidOutQuad, LaidOutRuns, LayoutLine, LayoutResult, LayoutRunsOpts, MARKDOWN_RUN_GRAMMAR, MarkdownFontOptions, MeasureFn, MeasureTextBoundsOpts, MeasuredText, PositionedRun, ResolvedRun, ResolvedTextStyle, RunFlag, RunGrammar, RunMarker, RunSourceMap, SCRIPT_METRICS, StyledRun, TextAlign, TextDirection, TextLineBoxesOpts, TextPaint, TextPose, TextPoseLayout, TextPoseLayoutInput, TextRenderer, TextStyle, TextTransform, TextVerticalAlign, TransformedRunText, cachedLayoutRuns, createMarkdownRenderer, fontString, layoutMarkdown, layoutRuns, layoutTextPose, markdownToRuns, measureText, measureTextBounds, measuredWidth, resolveAlign, resolveRuns, resolveTextStyle, runsToMarkdown, runsToPlainText, textLineBoxes, textPoseLayoutInput, toRuns, transformRunTexts, verticalAlignOffset } from '@weasel-js/text';
35
36
  import { G as Guide } from './types-D2tTKEU0.js';
36
- export { A as AUTO_POSE_DESCRIPTOR, i as isPathLike, a as isRectPose } from './autoPoseDescriptor-Dr6CwNZK.js';
37
- export { U as UseInsertOptions } from './options-BPcmwYk7.js';
37
+ export { A as AUTO_POSE_DESCRIPTOR, i as isPathLike, a as isRectPose } from './autoPoseDescriptor-_XOyF7t4.js';
38
+ export { U as UseInsertOptions } from './options-CzjxFoYZ.js';
38
39
  export { UseClipboardOpsOptions, UseClipboardOpsReturn, WEASEL_CLIPBOARD_MIME, WEASEL_CLIPBOARD_MIME_WEB, buildWeaselClipboardText, embedWeaselMetadataInSvg, extractWeaselClipboardFromSvg, parseWeaselClipboardText, sniffWeaselClipboardText, useClipboardOps } from './clipboard.js';
39
40
  export { cloneByAltDrag } from './clone.js';
40
41
  export { FontStyle, FontVariant, LocalFontOutlinesResult, OutlineSource, OutlineStatus, OutlineVariant, canQueryLocalFonts, enableLocalFontOutlines, hasFontOutlines, isCanvasFont, listFontOutlines, outlineStatus, registerCanvasFont, registerFont, registerFontOutlines, subscribeGlyphReady, unregisterCanvasFont, unregisterFontOutlines } from '@weasel-js/font';
41
42
 
43
+ /** Pan offset (in pixels) plus per-axis zoom (pixels per content unit). */
44
+ interface ViewTransform {
45
+ panX: number;
46
+ panY: number;
47
+ zoom: {
48
+ x: number;
49
+ y: number;
50
+ };
51
+ }
52
+ /** Project a world-space point to screen-space pixels through a `ViewTransform`. */
53
+ declare function worldToScreen(worldX: number, worldY: number, view: ViewTransform): [number, number];
54
+ /** Inverse of `worldToScreen` — recover the world-space point under a screen-space pixel. */
55
+ declare function screenToWorld(screenX: number, screenY: number, view: ViewTransform): [number, number];
56
+
57
+ /**
58
+ * Input convenience for zoom primitives. A `number` is treated as a
59
+ * uniform factor applied to both axes; a `{x, y}` vector applies
60
+ * per-axis factors.
61
+ */
62
+ type ZoomFactor = number | {
63
+ x: number;
64
+ y: number;
65
+ };
66
+ /**
67
+ * Input convenience for zoom-clamp ranges. A `number` is applied as the
68
+ * same bound on both axes; a `{x, y}` vector applies per-axis bounds.
69
+ */
70
+ type ZoomBound = number | {
71
+ x: number;
72
+ y: number;
73
+ };
74
+ /**
75
+ * Bridge `View` into the legacy `ViewTransform` shape so chrome can keep
76
+ * calling `worldToScreen` / `screenToWorld`. `View` and `ViewTransform`
77
+ * use opposite sign conventions for the translation half (`view.x` is
78
+ * camera position; `panX` is canvas translation), so the adapter flips
79
+ * the sign and multiplies by per-axis scale.
80
+ */
81
+ declare function viewToTransform(view: View): ViewTransform;
82
+ /**
83
+ * How far `view` is zoomed in, as one number — the geometric mean of its two
84
+ * axes, so a uniform view reports its own scale and a stretched one reports
85
+ * the scale that covers the same area.
86
+ *
87
+ * What a `RuleCtx` carries, because the only rule that asks about the
88
+ * viewport asks for a threshold rather than a camera.
89
+ */
90
+ declare function viewZoom(view: View): number;
91
+ /**
92
+ * `view` inside the invariant {@link View} documents: a zero or non-finite
93
+ * scale axis becomes `ZOOM_FLOOR`, a negative one keeps its sign, and a
94
+ * non-finite translation becomes 0. Returns `view` itself when it already
95
+ * holds, so a valid view keeps its identity.
96
+ */
97
+ declare function normalizeView(view: View): View;
98
+
99
+ /**
100
+ * `DebugSink`, `HitShape` and `HandleKind` are declared in
101
+ * `@weasel-js/routing` — `ToolCtx.debug` carries a sink, so routing has to
102
+ * name the type. Re-exported here, beside the overlay that reads one.
103
+ */
104
+
105
+ /** One bit per debug feature; absent keys are off. */
106
+ interface DebugConfig {
107
+ hitboxes?: boolean;
108
+ handles?: boolean;
109
+ bounds?: boolean;
110
+ origins?: boolean;
111
+ snap?: boolean;
112
+ layers?: boolean;
113
+ /** Render each tracked node's id as a label at the top-left of its
114
+ * bounds. Pulls from the same `recordBounds` stream `bounds` uses, so
115
+ * no extra sink calls are required to enable. */
116
+ ids?: boolean;
117
+ /** Rolling FPS counter rendered in the top-left corner of the canvas.
118
+ * Tracks the rate at which the debug overlay's draw callback runs;
119
+ * this matches the canvas's effective repaint rate. */
120
+ fps?: boolean;
121
+ /** Optional per-feature color overrides; falls back to the default theme. */
122
+ theme?: Partial<DebugTheme>;
123
+ /** Optional per-feature line-width / dash overrides; falls back to
124
+ * {@link DEFAULT_DEBUG_STROKES}. */
125
+ strokes?: Partial<DebugStrokes>;
126
+ }
127
+ /** The name of one debug-overlay feature — the keys of {@link DebugConfig}
128
+ * that toggle a visualization. */
129
+ type DebugFeature = 'hitboxes' | 'handles' | 'bounds' | 'origins' | 'snap' | 'layers' | 'ids' | 'fps';
130
+ /** Colors the debug overlay draws with, one entry per feature. */
131
+ interface DebugTheme {
132
+ hitboxFill: string;
133
+ hitboxStroke: string;
134
+ handle: string;
135
+ bounds: string;
136
+ origin: string;
137
+ snap: string;
138
+ layerText: string;
139
+ layerTextBg: string;
140
+ /** Color for the per-node id label rendered when `config.ids` is on. */
141
+ idText: string;
142
+ /** Foreground / background for the FPS panel. */
143
+ fpsText: string;
144
+ fpsTextBg: string;
145
+ }
146
+ /** Line width and dash pattern for one stroked debug feature. An empty (or
147
+ * omitted) `dash` is a solid line. */
148
+ interface DebugStroke {
149
+ width: number;
150
+ dash?: readonly number[];
151
+ }
152
+ /** The stroked half of the debug overlay's appearance, split from
153
+ * {@link DebugTheme} because only some features draw a line at all — text
154
+ * panels and filled origin dots take color and nothing else. */
155
+ interface DebugStrokes {
156
+ hitbox: DebugStroke;
157
+ bounds: DebugStroke;
158
+ handle: DebugStroke;
159
+ /** Rejected snap candidates only; accepted ones paint as a filled dot. */
160
+ snap: DebugStroke;
161
+ }
162
+ /** A hit region tested during the current frame. */
163
+ interface RecordedHitbox {
164
+ id: string;
165
+ kind: 'body' | 'handle' | 'rotation' | 'anchor';
166
+ shape: HitShape;
167
+ }
168
+ /** A handle drawn during the current frame, and where. */
169
+ interface RecordedHandle {
170
+ id: string;
171
+ position: {
172
+ x: number;
173
+ y: number;
174
+ };
175
+ kind: HandleKind;
176
+ }
177
+ /** A node's bounds as computed during the current frame. */
178
+ interface RecordedBounds {
179
+ id: string;
180
+ bounds: {
181
+ x: number;
182
+ y: number;
183
+ width: number;
184
+ height: number;
185
+ };
186
+ }
187
+ /** A node's transform origin as used during the current frame. */
188
+ interface RecordedOrigin {
189
+ id: string;
190
+ point: {
191
+ x: number;
192
+ y: number;
193
+ };
194
+ }
195
+ /** A snap candidate considered during the current gesture, and whether it
196
+ * won. Unlike the other records these survive across frames, until the
197
+ * gesture ends. */
198
+ interface RecordedSnap {
199
+ point: {
200
+ x: number;
201
+ y: number;
202
+ };
203
+ accepted: boolean;
204
+ }
205
+ /** A render layer that drew during the current frame. */
206
+ interface RecordedLayer {
207
+ id: string;
208
+ label: string;
209
+ space: 'world' | 'screen';
210
+ index: number;
211
+ }
212
+ /** Everything the sink collected, ready for the overlay to draw. */
213
+ interface DebugSnapshot {
214
+ hitboxes: RecordedHitbox[];
215
+ handles: RecordedHandle[];
216
+ bounds: RecordedBounds[];
217
+ origins: RecordedOrigin[];
218
+ snap: RecordedSnap[];
219
+ layers: RecordedLayer[];
220
+ }
221
+
42
222
  /**
43
223
  * The kit version a build was compiled from, so an app can report what it is
44
224
  * running. Substituted at build time — by `tsup.config.ts` for the published
@@ -62,20 +242,6 @@ declare const VERSION: string;
62
242
  /** Round `value` to the nearest multiple of `cellSize`. Returns 0 when the result would be -0. */
63
243
  declare function roundToCell(value: number, cellSize: number): number;
64
244
 
65
- /** Pan offset (in pixels) plus per-axis zoom (pixels per content unit). */
66
- interface ViewTransform {
67
- panX: number;
68
- panY: number;
69
- zoom: {
70
- x: number;
71
- y: number;
72
- };
73
- }
74
- /** Project a world-space point to screen-space pixels through a `ViewTransform`. */
75
- declare function worldToScreen(worldX: number, worldY: number, view: ViewTransform): [number, number];
76
- /** Inverse of `worldToScreen` — recover the world-space point under a screen-space pixel. */
77
- declare function screenToWorld(screenX: number, screenY: number, view: ViewTransform): [number, number];
78
-
79
245
  /**
80
246
  * Pointer-tracking glue that turns hover position into a grid cell, suitable
81
247
  * for dropping straight into `createCellHighlightLayer({ getCell })`. Pairs
@@ -134,48 +300,6 @@ interface UseGridCellHoverReturn {
134
300
  /** Track which grid cell the pointer is over; pairs with `createCellHighlightLayer`. */
135
301
  declare function useGridCellHover(opts: UseGridCellHoverOptions): UseGridCellHoverReturn;
136
302
 
137
- /**
138
- * Input convenience for zoom primitives. A `number` is treated as a
139
- * uniform factor applied to both axes; a `{x, y}` vector applies
140
- * per-axis factors.
141
- */
142
- type ZoomFactor = number | {
143
- x: number;
144
- y: number;
145
- };
146
- /**
147
- * Input convenience for zoom-clamp ranges. A `number` is applied as the
148
- * same bound on both axes; a `{x, y}` vector applies per-axis bounds.
149
- */
150
- type ZoomBound = number | {
151
- x: number;
152
- y: number;
153
- };
154
- /**
155
- * Bridge `View` into the legacy `ViewTransform` shape so chrome can keep
156
- * calling `worldToScreen` / `screenToWorld`. `View` and `ViewTransform`
157
- * use opposite sign conventions for the translation half (`view.x` is
158
- * camera position; `panX` is canvas translation), so the adapter flips
159
- * the sign and multiplies by per-axis scale.
160
- */
161
- declare function viewToTransform(view: View): ViewTransform;
162
- /**
163
- * How far `view` is zoomed in, as one number — the geometric mean of its two
164
- * axes, so a uniform view reports its own scale and a stretched one reports
165
- * the scale that covers the same area.
166
- *
167
- * What a `RuleCtx` carries, because the only rule that asks about the
168
- * viewport asks for a threshold rather than a camera.
169
- */
170
- declare function viewZoom(view: View): number;
171
- /**
172
- * `view` inside the invariant {@link View} documents: a zero or non-finite
173
- * scale axis becomes `ZOOM_FLOOR`, a negative one keeps its sign, and a
174
- * non-finite translation becomes 0. Returns `view` itself when it already
175
- * holds, so a valid view keeps its identity.
176
- */
177
- declare function normalizeView(view: View): View;
178
-
179
303
  interface ChromeState {
180
304
  /** Currently selected ids. Live; reflects useSelection's React state. */
181
305
  readonly selection: readonly NodeId[];
@@ -1608,7 +1732,7 @@ interface DeviceProfileProviderProps {
1608
1732
  * Publish one resolved profile to a subtree. `<SceneCanvas>` renders this so
1609
1733
  * overlays, affordances, and consumer chrome all read the same object.
1610
1734
  */
1611
- declare function DeviceProfileProvider({ value, children }: DeviceProfileProviderProps): React$1.FunctionComponentElement<React$1.ProviderProps<DeviceProfile | null>>;
1735
+ declare function DeviceProfileProvider({ value, children }: DeviceProfileProviderProps): react.FunctionComponentElement<react.ProviderProps<DeviceProfile | null>>;
1612
1736
 
1613
1737
  /**
1614
1738
  * Compute the largest uniform zoom (px per content-unit) that fits a content
@@ -1820,8 +1944,11 @@ declare function keySpecShortcut(spec: GestureSpec): ActionShortcut | undefined;
1820
1944
  * Every keyboard shortcut an action answers to, in declaration order.
1821
1945
  * Specs `keySpecShortcut` has no chip for are skipped, and bindings it leaves
1822
1946
  * identical are emitted once; an action bound only to those returns empty.
1947
+ *
1948
+ * With `params` — an `ActionItem`'s — only the bindings that pass those same
1949
+ * values count, so each variant of `flip` gets its own key.
1823
1950
  */
1824
- declare function actionShortcuts(action: Action): readonly ActionShortcut[];
1951
+ declare function actionShortcuts(action: Action, params?: Readonly<Record<string, unknown>>): readonly ActionShortcut[];
1825
1952
 
1826
1953
  /**
1827
1954
  * `moveAction` — first `ongoing`-timing Action descriptor.
@@ -2263,17 +2390,23 @@ declare const viewportDragPanAction: Action & {
2263
2390
  * Browsers synthesize a trackpad pinch as ctrl+wheel. On a Mac that is a
2264
2391
  * *different* event from the `mod` binding above (`mod` is metaKey there), so
2265
2392
  * pinch needs its own binding or nothing claims it and the page zooms instead.
2393
+ * - `{ kind: 'pinch' }` → Safari trackpad pinch (WebKit `gesturechange`),
2394
+ * params: `{ kind: 'pinch' }`. Safari may send the same pinch as ctrl+wheel
2395
+ * as well; the dispatcher swallows that copy while a claimed gesture is live,
2396
+ * so only one of the two bindings fires per pinch.
2266
2397
  * - `{ kind: 'key', key: '=' }` → zoom in, params: `{ kind: 'in' }`
2267
2398
  * - `{ kind: 'key', key: '-' }` → zoom out, params: `{ kind: 'out' }`
2268
2399
  * - `{ kind: 'key', key: '0' }` → reset zoom, params: `{ kind: 'reset' }`
2269
2400
  *
2270
2401
  * ## Design notes
2271
2402
  * The invoker switches on `params.kind`:
2272
- * - `'wheel'`: defers to `wheelZoom` (`core/viewport/wheelHandler`), the kit's
2273
- * one statement of the wheel convention, anchored at (clientX, clientY).
2274
- * The dispatcher merges wheel event data into params at dispatch time, and
2275
- * converts the wheel event's client coords to canvas-local (subtracting the
2276
- * canvas's bounding rect) before merging — `zoomAt` expects canvas-local.
2403
+ * - `'wheel'` and `'pinch'`: both reduce to a scale factor about a focal
2404
+ * point and share one `zoomAt` call. A wheel sample's factor is
2405
+ * `wheelZoomFactor(deltaY)`, the kit's one statement of the wheel
2406
+ * convention; a pinch sample carries its factor as `scale`. The dispatcher
2407
+ * merges event data into params and converts client coords to canvas-local
2408
+ * (subtracting the canvas's bounding rect) before merging — `zoomAt`
2409
+ * expects canvas-local.
2277
2410
  * - `'in'`/`'out'`: step zoom by ×1.25 / ×0.8, anchored at the host center
2278
2411
  * when the `view` dep wires `hostSize()` (SceneCanvas does), falling back
2279
2412
  * to the canvas top-left origin for consumers that don't.
@@ -2283,7 +2416,7 @@ declare const viewportDragPanAction: Action & {
2283
2416
  * The three discrete branches glide instead of jumping when the `animate`
2284
2417
  * option is configured and the `view` dep implements `animate` — they hand the
2285
2418
  * action a target and nothing in between, which is the whole condition for
2286
- * tweening. `'wheel'` always jumps per sample.
2419
+ * tweening. `'wheel'` and `'pinch'` always jump per sample.
2287
2420
  *
2288
2421
  * ## Key binding modifier notes
2289
2422
  * The key bindings (`=`, `-`, `0`) require `mod: true` (Cmd on Mac, Ctrl elsewhere).
@@ -2576,6 +2709,16 @@ declare const clipboardCopyAction: Action & {
2576
2709
  declare const clipboardCutAction: Action & {
2577
2710
  requires: string[];
2578
2711
  };
2712
+ /**
2713
+ * @experimental
2714
+ * Static descriptor for the `clipboard.paste` Action — what a Paste button or
2715
+ * menu item triggers. It has no key binding: Cmd/Ctrl+V already arrives as a
2716
+ * DOM `paste` event, which the dispatcher routes to `ingest`, and a binding
2717
+ * here would fire alongside it and paste twice.
2718
+ */
2719
+ declare const clipboardPasteAction: Action & {
2720
+ requires: string[];
2721
+ };
2579
2722
 
2580
2723
  /**
2581
2724
  * `enterTextEditAction` — immediate Action descriptor for entering in-place
@@ -2739,8 +2882,12 @@ declare function useStandardActions(opts: UseStandardActionsOptions): void;
2739
2882
  /** Build the adapter the default actions commit through when the consumer
2740
2883
  * supplies no `applyOps` hook of its own — it applies ops straight to the
2741
2884
  * scene. Path and text ops are not covered; those surfaces belong to their
2742
- * own owners. */
2743
- declare function defaultCommitAdapter<TPose>(scene: Scene<unknown, string, TPose>): {
2885
+ * own owners.
2886
+ *
2887
+ * Pass `selection` (a `SelectionApi`'s `adapterMethods`) and selection reads
2888
+ * and writes go through it rather than the scene, so a canvas that gates its
2889
+ * selection — `selectionMode="none"` — gates what these batches select too. */
2890
+ declare function defaultCommitAdapter<TPose>(scene: Scene<unknown, string, TPose>, selection?: SelectionApi['adapterMethods']): {
2744
2891
  getNode: (id: string) => Node$1<unknown, string, TPose> | undefined;
2745
2892
  getNodes: () => Node$1<unknown, string, TPose>[];
2746
2893
  getPose: (id: string) => TPose;
@@ -3191,129 +3338,6 @@ interface ToolPrefGroup {
3191
3338
  children: Record<string, ToolPrefLeaf | ToolPrefGroup>;
3192
3339
  }
3193
3340
 
3194
- /**
3195
- * `DebugSink`, `HitShape` and `HandleKind` are declared in
3196
- * `@weasel-js/routing` — `ToolCtx.debug` carries a sink, so routing has to
3197
- * name the type. Re-exported here, beside the overlay that reads one.
3198
- */
3199
-
3200
- /** One bit per debug feature; absent keys are off. */
3201
- interface DebugConfig {
3202
- hitboxes?: boolean;
3203
- handles?: boolean;
3204
- bounds?: boolean;
3205
- origins?: boolean;
3206
- snap?: boolean;
3207
- layers?: boolean;
3208
- /** Render each tracked node's id as a label at the top-left of its
3209
- * bounds. Pulls from the same `recordBounds` stream `bounds` uses, so
3210
- * no extra sink calls are required to enable. */
3211
- ids?: boolean;
3212
- /** Rolling FPS counter rendered in the top-left corner of the canvas.
3213
- * Tracks the rate at which the debug overlay's draw callback runs;
3214
- * this matches the canvas's effective repaint rate. */
3215
- fps?: boolean;
3216
- /** Optional per-feature color overrides; falls back to the default theme. */
3217
- theme?: Partial<DebugTheme>;
3218
- /** Optional per-feature line-width / dash overrides; falls back to
3219
- * {@link DEFAULT_DEBUG_STROKES}. */
3220
- strokes?: Partial<DebugStrokes>;
3221
- }
3222
- /** The name of one debug-overlay feature — the keys of {@link DebugConfig}
3223
- * that toggle a visualization. */
3224
- type DebugFeature = 'hitboxes' | 'handles' | 'bounds' | 'origins' | 'snap' | 'layers' | 'ids' | 'fps';
3225
- /** Colors the debug overlay draws with, one entry per feature. */
3226
- interface DebugTheme {
3227
- hitboxFill: string;
3228
- hitboxStroke: string;
3229
- handle: string;
3230
- bounds: string;
3231
- origin: string;
3232
- snap: string;
3233
- layerText: string;
3234
- layerTextBg: string;
3235
- /** Color for the per-node id label rendered when `config.ids` is on. */
3236
- idText: string;
3237
- /** Foreground / background for the FPS panel. */
3238
- fpsText: string;
3239
- fpsTextBg: string;
3240
- }
3241
- /** Line width and dash pattern for one stroked debug feature. An empty (or
3242
- * omitted) `dash` is a solid line. */
3243
- interface DebugStroke {
3244
- width: number;
3245
- dash?: readonly number[];
3246
- }
3247
- /** The stroked half of the debug overlay's appearance, split from
3248
- * {@link DebugTheme} because only some features draw a line at all — text
3249
- * panels and filled origin dots take color and nothing else. */
3250
- interface DebugStrokes {
3251
- hitbox: DebugStroke;
3252
- bounds: DebugStroke;
3253
- handle: DebugStroke;
3254
- /** Rejected snap candidates only; accepted ones paint as a filled dot. */
3255
- snap: DebugStroke;
3256
- }
3257
- /** A hit region tested during the current frame. */
3258
- interface RecordedHitbox {
3259
- id: string;
3260
- kind: 'body' | 'handle' | 'rotation' | 'anchor';
3261
- shape: HitShape;
3262
- }
3263
- /** A handle drawn during the current frame, and where. */
3264
- interface RecordedHandle {
3265
- id: string;
3266
- position: {
3267
- x: number;
3268
- y: number;
3269
- };
3270
- kind: HandleKind;
3271
- }
3272
- /** A node's bounds as computed during the current frame. */
3273
- interface RecordedBounds {
3274
- id: string;
3275
- bounds: {
3276
- x: number;
3277
- y: number;
3278
- width: number;
3279
- height: number;
3280
- };
3281
- }
3282
- /** A node's transform origin as used during the current frame. */
3283
- interface RecordedOrigin {
3284
- id: string;
3285
- point: {
3286
- x: number;
3287
- y: number;
3288
- };
3289
- }
3290
- /** A snap candidate considered during the current gesture, and whether it
3291
- * won. Unlike the other records these survive across frames, until the
3292
- * gesture ends. */
3293
- interface RecordedSnap {
3294
- point: {
3295
- x: number;
3296
- y: number;
3297
- };
3298
- accepted: boolean;
3299
- }
3300
- /** A render layer that drew during the current frame. */
3301
- interface RecordedLayer {
3302
- id: string;
3303
- label: string;
3304
- space: 'world' | 'screen';
3305
- index: number;
3306
- }
3307
- /** Everything the sink collected, ready for the overlay to draw. */
3308
- interface DebugSnapshot {
3309
- hitboxes: RecordedHitbox[];
3310
- handles: RecordedHandle[];
3311
- bounds: RecordedBounds[];
3312
- origins: RecordedOrigin[];
3313
- snap: RecordedSnap[];
3314
- layers: RecordedLayer[];
3315
- }
3316
-
3317
3341
  /** Options for `useSelectTool`: how a point resolves to nodes, how a click
3318
3342
  * chooses among them, and the appearance of the marquee. */
3319
3343
  interface UseSelectToolOptions<TPose> {
@@ -3565,6 +3589,18 @@ declare namespace useTextTool {
3565
3589
  description: string;
3566
3590
  default: undefined;
3567
3591
  };
3592
+ textTransform: {
3593
+ kind: "enum";
3594
+ name: string;
3595
+ description: string;
3596
+ control: "toggle";
3597
+ default: string;
3598
+ options: {
3599
+ value: string;
3600
+ label: string;
3601
+ short: string;
3602
+ }[];
3603
+ };
3568
3604
  fontFamily: {
3569
3605
  kind: string;
3570
3606
  name: string;
@@ -3625,10 +3661,9 @@ declare namespace useTextTool {
3625
3661
  }
3626
3662
 
3627
3663
  /**
3628
- * In-progress pen anchor. `outHandle` is set when the anchor was placed via
3629
- * click-drag (smooth anchor); undefined for click-placed corners.
3630
- * `inHandle` is mirrored from the previous anchor's outHandle on segment
3631
- * emission unless `altBroken` is set on that previous anchor.
3664
+ * In-progress pen anchor. A click places a corner, with no handles. A drag
3665
+ * sets `outHandle` to the drag point and `inHandle` to its mirror through
3666
+ * the anchor, which shapes the segment coming into it.
3632
3667
  */
3633
3668
  interface PenAnchor$1 {
3634
3669
  x: number;
@@ -3641,8 +3676,9 @@ interface PenAnchor$1 {
3641
3676
  x: number;
3642
3677
  y: number;
3643
3678
  };
3644
- /** True when Alt was held during the outgoing-handle drag — the next
3645
- * anchor's incoming handle is NOT mirrored from this one. */
3679
+ /** True once Alt is held during the placement drag: from then on the
3680
+ * in-handle stays where it is, and an anchor dragged with Alt down from
3681
+ * the start gets none. */
3646
3682
  altBroken?: boolean;
3647
3683
  }
3648
3684
  /** One in-progress subpath of the pen tool: its anchors so far, and whether
@@ -3712,6 +3748,13 @@ interface UsePenToolOptions<TPose> {
3712
3748
  adapter: {
3713
3749
  addNode: (pose: TPose) => string;
3714
3750
  setSelection: (ids: string[]) => void;
3751
+ /** Build, without inserting, the node `addNode` would insert for `pose`,
3752
+ * so the pen can put it in a larger op batch — a new path finished on
3753
+ * another open path's endpoint is inserted and the other path deleted
3754
+ * in one undo step. Without it, that click only places an anchor. */
3755
+ makeNode?: (pose: TPose) => {
3756
+ id: string;
3757
+ };
3715
3758
  };
3716
3759
  /** Auto-select the new object after commit. Default `true`. */
3717
3760
  autoSelect?: boolean;
@@ -4754,6 +4797,13 @@ interface CanvasSurfaceHelpers {
4754
4797
  * are split so a per-view set can be built independently of the surface's,
4755
4798
  * not to make layers ask for one. */
4756
4799
  interface CanvasHelpers<TPose> extends CanvasViewHelpers<TPose>, CanvasSurfaceHelpers {
4800
+ /**
4801
+ * The view this draw is for: a `<CanvasView>` id, or `null` for the
4802
+ * surface's own camera. One layer array paints every view, so a layer that
4803
+ * belongs in some views and not others — a minimap's indicator — declines
4804
+ * the rest by this id.
4805
+ */
4806
+ readonly viewId: string | null;
4757
4807
  }
4758
4808
 
4759
4809
  /**
@@ -4803,6 +4853,11 @@ interface NodePaintCtx {
4803
4853
  * paints the deterministic grey placeholder outline (never the ambient
4804
4854
  * load-status error variant). */
4805
4855
  resolveImage?: (node: Node$1<unknown, string, unknown>) => ImageBitmap | undefined;
4856
+ /** Device pixels per world unit where this paint will land — the view's
4857
+ * scale times the device-pixel ratio. `defaultDrawOne` fills it from its
4858
+ * view when absent. Lets a painter size resolution-dependent work, such as
4859
+ * re-rasterizing an SVG image; one that has no such work ignores it. */
4860
+ pixelScale?: number;
4806
4861
  /** The node's derived path, resolved by the scene-aware `drawOne` wrapper
4807
4862
  * before painting: `paint` has no scene handle, and deriving needs the
4808
4863
  * dependencies' poses. **Absent** for a node that derives from nothing —
@@ -5256,13 +5311,21 @@ type LayersMap<TNode extends {
5256
5311
  [customKey: string]: LayerSlotValue<TNode, TPose> | undefined;
5257
5312
  };
5258
5313
  /**
5259
- * High-level selection semantics. Kept as a public type for `<SceneCanvas>`
5260
- * consumers — Canvas itself no longer accepts a `selectionMode` prop.
5314
+ * What `<SceneCanvas selectionMode>` lets the canvas do to the selection.
5315
+ *
5316
+ * - `'single'` (default) — a click replaces the selection with the clicked
5317
+ * node, modifiers or not. It sets click policy, not a limit: a marquee,
5318
+ * lasso, select-all or paste can still select several nodes.
5319
+ * - `'multi'` — a click with the extend key (shift by default) toggles the
5320
+ * node in or out of the selection.
5321
+ * - `'none'` — nothing the canvas does writes the selection: no click,
5322
+ * marquee, lasso, action or tool, and no op committed through the adapter
5323
+ * it hands its tools. The consumer's own `SelectionApi` — the `selection`
5324
+ * prop, or `useSelection({ scene })` — still writes, and the canvas draws
5325
+ * what it holds. Undo and redo still restore the selection each history
5326
+ * entry recorded.
5261
5327
  *
5262
- * - `'single'` (default) — click replaces the selection with one id.
5263
- * - `'multi'` — shift-click extends/toggles. Multi-selected objects draw a
5264
- * union AABB with corner handles.
5265
- * - `'none'` — canvas interactions never update selection state.
5328
+ * Several selected nodes draw one union box with corner handles in every mode.
5266
5329
  */
5267
5330
  type CanvasSelectionMode = 'single' | 'multi' | 'none';
5268
5331
  /**
@@ -5392,14 +5455,14 @@ interface CanvasProps<TNode extends {
5392
5455
  */
5393
5456
  inputElement?: HTMLElement | null;
5394
5457
  className?: string;
5395
- style?: React__default.CSSProperties;
5458
+ style?: react__default.CSSProperties;
5396
5459
  tabIndex?: number;
5397
5460
  /** Fired when the canvas element gains focus. The canvas is focusable by
5398
5461
  * default (`tabIndex` 0), so consumers driving focus-dependent chrome —
5399
5462
  * a focus ring, a "keyboard shortcuts active" hint — need to observe it. */
5400
- onFocus?: React__default.FocusEventHandler<HTMLCanvasElement>;
5463
+ onFocus?: react__default.FocusEventHandler<HTMLCanvasElement>;
5401
5464
  /** Fired when the canvas element loses focus. */
5402
- onBlur?: React__default.FocusEventHandler<HTMLCanvasElement>;
5465
+ onBlur?: react__default.FocusEventHandler<HTMLCanvasElement>;
5403
5466
  /**
5404
5467
  * When `true` (default), the canvas element receives focus on `pointerdown`
5405
5468
  * so keyboard events (tool hotkeys, undo/redo) are captured without a
@@ -5449,7 +5512,7 @@ interface CanvasProps<TNode extends {
5449
5512
  * Useful for custom layers that render scene content outside of the standard
5450
5513
  * slot system and need to stay in sync with gesture previews.
5451
5514
  */
5452
- helpersRef?: React__default.MutableRefObject<CanvasHelpers<TPose> | null>;
5515
+ helpersRef?: react__default.MutableRefObject<CanvasHelpers<TPose> | null>;
5453
5516
  /**
5454
5517
  * Debug overlay configuration.
5455
5518
  * - `undefined` (default): read `?debug=…` from the URL.
@@ -5463,7 +5526,7 @@ interface CanvasProps<TNode extends {
5463
5526
  debug?: DebugConfig | false;
5464
5527
  /** Test-only escape hatch: writes the live debug sink to this ref so tests
5465
5528
  * can call `snapshot()` after a render. No effect when debug is off. */
5466
- debugSinkRef?: React__default.MutableRefObject<(DebugSink & {
5529
+ debugSinkRef?: react__default.MutableRefObject<(DebugSink & {
5467
5530
  snapshot(): DebugSnapshot;
5468
5531
  }) | null>;
5469
5532
  /**
@@ -5623,6 +5686,9 @@ type SceneCanvasAdapter<TData, TLayer extends string, TPose> = MoveAdapter<Node$
5623
5686
  /** The node's pose with every ancestor's frame folded in. Equal to
5624
5687
  * `getPose` unless a `poseComposition` is configured. */
5625
5688
  getWorldPose(id: string): TPose;
5689
+ /** Whether `id`'s pose is a frame its children are expressed in — see
5690
+ * `definesFrame`. */
5691
+ definesFrame(id: string): boolean;
5626
5692
  /** Present only when a composing strategy is configured; the render
5627
5693
  * walk feature-detects it. */
5628
5694
  composePose?(parent: TPose, child: TPose): TPose;
@@ -5692,14 +5758,8 @@ interface SceneToAdapterOptions<TData, TLayer extends string, TPose> {
5692
5758
  * undoable. */
5693
5759
  declare function sceneToAdapter<TData, TLayer extends string, TPose>(scene: Scene<TData, TLayer, TPose>, options?: SceneToAdapterOptions<TData, TLayer, TPose>): SceneCanvasAdapter<TData, TLayer, TPose>;
5694
5760
  /**
5695
- * React-hook wrapper around `sceneToAdapter`. Memoizes on `scene`,
5696
- * `options.selection`, `options.commitInsert`, `options.insertLayer`, and
5697
- * `options.layouts` so the adapter identity is stable across renders unless
5698
- * one of those changes.
5699
- *
5700
- * Saves the per-demo `useMemo(() => sceneToAdapter(scene, { selection }),
5701
- * [scene, selection])` boilerplate every consumer that wires custom tools
5702
- * would otherwise repeat.
5761
+ * React-hook wrapper around `sceneToAdapter`. Memoizes on every option, so
5762
+ * the adapter keeps its identity across renders unless one of them changes.
5703
5763
  */
5704
5764
  declare function useSceneAdapter<TData, TLayer extends string, TPose>(scene: Scene<TData, TLayer, TPose>, options?: SceneToAdapterOptions<TData, TLayer, TPose>): SceneCanvasAdapter<TData, TLayer, TPose>;
5705
5765
 
@@ -5741,6 +5801,36 @@ interface UseRotateOptions<TPose> {
5741
5801
  pivot?: 'each' | 'union';
5742
5802
  }
5743
5803
 
5804
+ /** Reads the surface's deps from inside `SurfaceContribution.attach`. */
5805
+ interface ContributionDepReader {
5806
+ get<K extends DepName>(name: K): DepSchema[K] | undefined;
5807
+ }
5808
+ /**
5809
+ * A feature a surface installs in one step. Every role is optional: `bindings`,
5810
+ * `actions`, `deps`, `overlay` and `presentation` from `Contribution`, plus
5811
+ * the two below. Installing it installs every role it declares, and removing
5812
+ * it removes them.
5813
+ */
5814
+ interface SurfaceContribution extends Contribution {
5815
+ /** Views this entry adds to the surface, as `<SceneCanvas views>` takes. */
5816
+ views?: readonly CanvasViewProps[];
5817
+ /**
5818
+ * Runs once the surface mounts; returns its teardown. For what the roles
5819
+ * above cannot say — a registered (hit-testable) layer, a subscription.
5820
+ *
5821
+ * Keyed by the function's identity, so a contribution built once (in a
5822
+ * `useMemo`, or at module scope) attaches once however often the host
5823
+ * re-renders.
5824
+ */
5825
+ attach?: (api: CanvasExtensionApi, deps: ContributionDepReader) => () => void;
5826
+ }
5827
+ /**
5828
+ * Concatenate contribution bundles into one registry, preserving order. Throws
5829
+ * on a duplicate entry id, dep name or view id — two features answering for
5830
+ * the same name is a bug in whichever was added second.
5831
+ */
5832
+ declare function mergeContributions<T extends SurfaceContribution>(...bundles: readonly (readonly T[])[]): T[];
5833
+
5744
5834
  /**
5745
5835
  * The kit's built-in shape kinds — one table, every other spelling derived.
5746
5836
  *
@@ -5813,6 +5903,8 @@ declare const SHAPE_KINDS: {
5813
5903
  readonly insertPreview: true;
5814
5904
  };
5815
5905
  };
5906
+ /** Every kind in the table, tool or not. */
5907
+ type ShapeKind = keyof typeof SHAPE_KINDS;
5816
5908
  /** The keys of a shape-kind table whose descriptor sets `F` to `true`. */
5817
5909
  type ShapeKindsWhere<T, F extends keyof ShapeKindDescriptor> = {
5818
5910
  [K in keyof T]: T[K] extends Record<F, true> ? K : never;
@@ -5997,7 +6089,7 @@ declare function rotateAroundAABBCenter(x: number, y: number, width: number, hei
5997
6089
  /** Paint one node the way the kit does by default: dispatch to the first
5998
6090
  * registered node-shape painter that matches, then draw its `data.label` on
5999
6091
  * top when it has one. Consumers replace or wrap this via `drawOne`. */
6000
- declare function defaultDrawOne<TData, TLayer extends string, TPose>(node: Node$1<TData, TLayer, TPose>, pose: TPose, _view?: View, ctx?: NodePaintCtx): DrawCommand[];
6092
+ declare function defaultDrawOne<TData, TLayer extends string, TPose>(node: Node$1<TData, TLayer, TPose>, pose: TPose, view?: View, ctx?: NodePaintCtx): DrawCommand[];
6001
6093
 
6002
6094
  /** Default size in CSS pixels for selection corner-handles AND their
6003
6095
  * hit-test radius, at `targetScale = 1`. Used by the SceneCanvas defaults;
@@ -6060,6 +6152,11 @@ type SceneCanvasProps<TData, TLayer extends string, TPose> = Omit<CanvasProps<No
6060
6152
  * to `sceneToAdapter` so `useMove`'s layout pass runs on configured
6061
6153
  * containers (reflow on enter, reparent + reflow on commit). */
6062
6154
  layouts?: SceneToAdapterOptions<TData, TLayer, TPose>['layouts'];
6155
+ /** Which layout container a drag lands in when several contain the drop
6156
+ * point — the innermost (default), the topmost in paint order, or only
6157
+ * containers whose strategy declares a `dropRegion`. Decides both the
6158
+ * drag-time reflow preview and the commit. */
6159
+ layoutDropTarget?: LayoutDropTargetMode;
6063
6160
  /** How a child's stored pose folds into its parent's frame. Omit for the
6064
6161
  * absolute-pose model, where a container groups its children but imposes
6065
6162
  * no transform. Pass `RIGID_POSE_COMPOSITION` to make a container's pose
@@ -6206,12 +6303,8 @@ type SceneCanvasProps<TData, TLayer extends string, TPose> = Omit<CanvasProps<No
6206
6303
  selection?: SelectionApi;
6207
6304
  selectionOptions?: UseSelectionOptions;
6208
6305
  /**
6209
- * High-level selection semantics. Controls whether canvas interactions
6210
- * mutate selection and whether multi-select chrome (union AABB) activates.
6211
- * - `'single'` (default) — click selects one id.
6212
- * - `'multi'` — shift-click extends/toggles.
6213
- * - `'none'` — canvas interactions never update selection.
6214
- * See {@link CanvasSelectionMode}.
6306
+ * What the canvas may do to the selection. See {@link CanvasSelectionMode}.
6307
+ * Default `'single'`.
6215
6308
  */
6216
6309
  selectionMode?: CanvasSelectionMode;
6217
6310
  /** Extra tools or overrides keyed by id, or a full `ToolsApi` takeover.
@@ -6290,11 +6383,13 @@ type SceneCanvasProps<TData, TLayer extends string, TPose> = Omit<CanvasProps<No
6290
6383
  * lasso demo starts with `initialActiveTool="lasso"`. Ignored when the
6291
6384
  * consumer supplies their own `tools` prop. */
6292
6385
  initialActiveTool?: string;
6293
- /** Always-on tools to register alongside the internal default select.
6294
- * Use this for wheel/keyboard zoom + pan tools that should run alongside
6295
- * the default select. If you supply your own `tools` prop, this is
6296
- * ignored — wire `ambient` through your own `useTools` call instead. */
6297
- ambient?: AnyTool[];
6386
+ /** Always-on entries to register alongside the internal default select:
6387
+ * tools, and features written as a `SurfaceContribution` — whose views,
6388
+ * deps, overlay, bindings, actions and `attach` all install from this one
6389
+ * list, and uninstall when the entry leaves it. If you supply your own
6390
+ * `tools` prop, this is ignored — wire `ambient` through your own
6391
+ * `useTools` call instead. */
6392
+ ambient?: readonly (AnyTool | SurfaceContribution)[];
6298
6393
  /** Viewport feature wiring.
6299
6394
  *
6300
6395
  * - `inertia` and `animatedZoom` are opt-in: pass `true` for defaults or
@@ -6560,7 +6655,7 @@ type SceneCanvasProps<TData, TLayer extends string, TPose> = Omit<CanvasProps<No
6560
6655
  */
6561
6656
  onDoubleClick?: (hit: SceneCanvasHit | null) => void;
6562
6657
  };
6563
- declare function SceneCanvasInner<TData, TLayer extends string, TPose>(props: SceneCanvasProps<TData, TLayer, TPose>, ref: React__default.ForwardedRef<SceneCanvasApi>): react_jsx_runtime.JSX.Element;
6658
+ declare function SceneCanvasInner<TData, TLayer extends string, TPose>(props: SceneCanvasProps<TData, TLayer, TPose>, ref: react__default.ForwardedRef<SceneCanvasApi>): react__default.JSX.Element;
6564
6659
  /**
6565
6660
  * The canvas component: renders a `Scene` and wires the interaction stack
6566
6661
  * around it.
@@ -6575,7 +6670,7 @@ declare function SceneCanvasInner<TData, TLayer extends string, TPose>(props: Sc
6575
6670
  * fit a prop (view control, hit queries, redraw requests).
6576
6671
  */
6577
6672
  declare const SceneCanvas: <TData, TLayer extends string, TPose>(props: SceneCanvasProps<TData, TLayer, TPose> & {
6578
- ref?: React__default.Ref<SceneCanvasApi>;
6673
+ ref?: react__default.Ref<SceneCanvasApi>;
6579
6674
  }) => ReturnType<typeof SceneCanvasInner>;
6580
6675
 
6581
6676
  /** Which of the host's edges the panel is held against, per axis. */
@@ -6673,7 +6768,7 @@ interface CursorCoordsHudProps {
6673
6768
  }
6674
6769
  /** Debug overlay showing the pointer's client and world coordinates and the
6675
6770
  * current frame rate, pinned to the canvas's top-right corner. */
6676
- declare function CursorCoordsHud({ canvasRef, anchorRef, viewRef, offset }: CursorCoordsHudProps): react_jsx_runtime.JSX.Element | null;
6771
+ declare function CursorCoordsHud({ canvasRef, anchorRef, viewRef, offset }: CursorCoordsHudProps): react.JSX.Element | null;
6677
6772
 
6678
6773
  /** Props for `<PickHud>`. */
6679
6774
  interface PickHudProps {
@@ -6697,7 +6792,7 @@ interface PickHudProps {
6697
6792
  }
6698
6793
  /** Debug overlay listing every node under the pointer, with the one a click
6699
6794
  * would actually select shown in bold. */
6700
- declare function PickHud({ canvasRef, anchorRef, viewRef, pickEvery, pickBest, offset }: PickHudProps): react_jsx_runtime.JSX.Element | null;
6795
+ declare function PickHud({ canvasRef, anchorRef, viewRef, pickEvery, pickBest, offset }: PickHudProps): react.JSX.Element | null;
6701
6796
 
6702
6797
  /**
6703
6798
  * imageCache — the kit's per-`src` image loader + cache.
@@ -6721,14 +6816,42 @@ interface ImageNodeData {
6721
6816
  image: {
6722
6817
  src: string;
6723
6818
  opacity?: number;
6819
+ /** The part of the bitmap drawn into the pose rect, as fractions of the
6820
+ * bitmap's width and height from its top-left. Omitted draws the whole
6821
+ * bitmap. Fractions, so the data means the same thing before the bitmap
6822
+ * has decoded and after `src` is swapped for another resolution. */
6823
+ source?: {
6824
+ x: number;
6825
+ y: number;
6826
+ width: number;
6827
+ height: number;
6828
+ };
6829
+ /** Mirror the drawn region within the pose rect. The rect does not move. */
6830
+ flipX?: boolean;
6831
+ flipY?: boolean;
6724
6832
  };
6725
6833
  }
6726
6834
  /** Where an image is in its load: never requested, in flight, decoded, or
6727
6835
  * failed. Renderers paint a placeholder for anything but `'ready'`. */
6728
6836
  type ImageStatus = 'idle' | 'loading' | 'ready' | 'error';
6837
+ /** A size in device pixels. */
6838
+ interface ImageRasterSize {
6839
+ width: number;
6840
+ height: number;
6841
+ }
6842
+ /** True when `src` names SVG — a `data:image/svg+xml` URI, or a URL whose path
6843
+ * ends in `.svg`/`.svgz`. Such sources re-rasterize at the size they are drawn
6844
+ * at; everything else decodes once. A `blob:` URL carries no type and counts
6845
+ * as raster. */
6846
+ declare function isVectorImageSrc(src: string): boolean;
6729
6847
  /** Synchronous read. Returns the decoded bitmap when ready; otherwise returns
6730
- * `undefined` and lazily starts a de-duped async load for `src`. */
6731
- declare function getImageBitmap(src: string): ImageBitmap | undefined;
6848
+ * `undefined` and lazily starts a de-duped async load for `src`.
6849
+ *
6850
+ * `drawnAt` is the size in device pixels the image is about to cover. A
6851
+ * vector source ({@link isVectorImageSrc}) uses it to re-rasterize in
6852
+ * power-of-two steps — the current raster is returned until the sharper one
6853
+ * is ready. Raster sources ignore it. */
6854
+ declare function getImageBitmap(src: string, drawnAt?: ImageRasterSize): ImageBitmap | undefined;
6732
6855
  /** Current load status for `src` (`'idle'` if never requested). */
6733
6856
  declare function imageStatus(src: string): ImageStatus;
6734
6857
  /** Subscribe to load-resolution events (fires after any `src` resolves or
@@ -7037,9 +7160,7 @@ declare function resolveOverlays(overlays: Iterable<OngoingOverlay>): ResolvedOv
7037
7160
  * (`<SceneViewCanvas>` / `<MinimapCanvas>`). Given a `<canvas>`, a `Scene`,
7038
7161
  * a `View`, and a per-node `drawOne`, render one frame.
7039
7162
  *
7040
- * Step 1 of the detached-minimap spec
7041
- * (`docs/superpowers/specs/2026-05-31-detached-minimap-design.md`). The full
7042
- * `<SceneCanvas>` render pipeline does much more than this (slots, layer
7163
+ * The full `<SceneCanvas>` render pipeline does much more than this (slots, layer
7043
7164
  * ordering, debug sinks, tool overlays). The helper deliberately re-implements
7044
7165
  * the small subset needed for a non-interactive scene view rather than
7045
7166
  * refactoring `<SceneCanvas>` to share code — the spec calls for that
@@ -7194,7 +7315,7 @@ interface SceneViewCanvasProps<TData, TLayer extends string, TPose> {
7194
7315
  * pointer listeners or call `toBlob` for snapshots through this. */
7195
7316
  canvasRef?: Ref<HTMLCanvasElement>;
7196
7317
  }
7197
- declare function SceneViewCanvasInner<TData, TLayer extends string, TPose>(props: SceneViewCanvasProps<TData, TLayer, TPose>): react_jsx_runtime.JSX.Element;
7318
+ declare function SceneViewCanvasInner<TData, TLayer extends string, TPose>(props: SceneViewCanvasProps<TData, TLayer, TPose>): react.JSX.Element;
7198
7319
  /**
7199
7320
  * Pointer-inert read-only scene view. See `SceneViewCanvasProps` for the
7200
7321
  * full surface and the module docstring for the rendering model.
@@ -7337,6 +7458,20 @@ declare function documentPose<TPose>(source: PoseSource<TPose>, node: PosedNode<
7337
7458
  * walks, the pick walk, the adapters tools and actions commit through.
7338
7459
  */
7339
7460
  declare function effectivePose<TPose>(source: PoseSource<TPose>, node: PosedNode<TPose>): TPose;
7461
+ /**
7462
+ * Whether `node`'s pose is a frame its children are expressed in, under a
7463
+ * composing strategy.
7464
+ *
7465
+ * A container that derives its pose from its children cannot be one: moving
7466
+ * the frame to cover the children would move the children, and a `RectPose`
7467
+ * frame's origin is its corner, so no envelope leaves them in place. Such a
7468
+ * container is an envelope instead — its children are stored in its own
7469
+ * frame — and the composition fold passes over it.
7470
+ */
7471
+ declare function definesFrame(node: {
7472
+ dependsOn?: unknown;
7473
+ derivePose?: unknown;
7474
+ }): boolean;
7340
7475
 
7341
7476
  /** A node and the pose a renderer should draw it at. `node.pose` beside it is
7342
7477
  * still the committed pose, so a host has both without a second channel. */
@@ -7365,6 +7500,10 @@ declare const UNION_OF_CHILDREN = "kit:unionOfChildren";
7365
7500
  * box. Paired with `dependsOn: 'children'`, this is what makes a group's
7366
7501
  * bounds track its members instead of freezing at the moment it was made.
7367
7502
  *
7503
+ * Its members and its result share one frame: a container deriving its pose
7504
+ * from its children defines none of its own (see `definesFrame`), so the same
7505
+ * union is right under any composition strategy.
7506
+ *
7368
7507
  * Returns `null` for an emptied container, which falls back to its authored
7369
7508
  * pose — the group stays where the last member left it rather than collapsing
7370
7509
  * to a zero box at the origin.
@@ -7497,17 +7636,121 @@ interface MinimapCanvasProps<TData, TLayer extends string, TPose> {
7497
7636
  className?: string;
7498
7637
  /** Forwarded ref to the underlying `<canvas>`. */
7499
7638
  canvasRef?: Ref<HTMLCanvasElement>;
7639
+ /** The view id this minimap publishes its pointer under. Default
7640
+ * `'minimap'`. */
7641
+ id?: string;
7500
7642
  }
7501
- declare function MinimapCanvasInner<TData, TLayer extends string, TPose>(props: MinimapCanvasProps<TData, TLayer, TPose>): react_jsx_runtime.JSX.Element;
7502
7643
  /**
7503
7644
  * Opinionated minimap. See `MinimapCanvasProps` for the full surface and
7504
- * the module docstring for the rendering / pointer model.
7645
+ * the module docstring for the rendering / input model.
7646
+ *
7647
+ * Its dispatcher, actions and deps are its own, so it never competes with
7648
+ * the main canvas for input. The pointer store is shared when one is in scope.
7505
7649
  *
7506
7650
  * `forwardRef` is not used because the component is generic over
7507
7651
  * `<TData, TLayer, TPose>` and React's `forwardRef` erases generics. The
7508
7652
  * `canvasRef` prop is the plain-prop equivalent.
7509
7653
  */
7510
- declare const MinimapCanvas: typeof MinimapCanvasInner;
7654
+ declare function MinimapCanvas<TData, TLayer extends string, TPose>(props: MinimapCanvasProps<TData, TLayer, TPose>): react.JSX.Element;
7655
+
7656
+ /**
7657
+ * A minimap over a `<SceneCanvas>`, written as one `SurfaceContribution`: a
7658
+ * view through a fit camera, the pan that moves the main camera from inside
7659
+ * it, the visible-rect indicator, and a linked crosshair.
7660
+ */
7661
+
7662
+ /** Options for {@link createLinkedCursorContribution}. */
7663
+ interface LinkedCursorOptions {
7664
+ /** Entry id. Default `'linked-cursor'`. */
7665
+ id?: string;
7666
+ /** Views on this surface the crosshair may paint in. Default `[null]`, the
7667
+ * surface's own camera — the main canvas beside a detached minimap. */
7668
+ views?: readonly (string | null)[];
7669
+ }
7670
+ /**
7671
+ * The linked crosshair alone: this surface paints the pointer's position
7672
+ * whenever the pointer is over some other view — another surface under the
7673
+ * same `<PointerContextProvider>`, such as a detached `<MinimapCanvas>`.
7674
+ *
7675
+ * A surface carrying `createMinimapContribution` already has one, in both its
7676
+ * views; this is for a surface without.
7677
+ */
7678
+ declare function createLinkedCursorContribution(opts?: LinkedCursorOptions): SurfaceContribution;
7679
+ /** Options for {@link createMinimapContribution}. */
7680
+ interface MinimapContributionOptions<TData = unknown, TLayer extends string = string, TPose = unknown> {
7681
+ /** View and entry id. Default `'minimap'`. */
7682
+ id?: string;
7683
+ /** Where the minimap paints, in CSS pixels from the canvas top-left. A
7684
+ * function is re-read every frame, so it can follow the canvas's size. */
7685
+ rect: ViewRect | ((outer: View, dims: Dims) => ViewRect);
7686
+ /** What the minimap frames. Default `'scene'`, the union of leaf poses. */
7687
+ fit?: MinimapFit<TData, TLayer, TPose>;
7688
+ /** The surface layers the minimap paints. Default: all of them. */
7689
+ layers?: (surface: readonly RenderLayer<unknown>[]) => readonly RenderLayer<unknown>[];
7690
+ /** Ground painted before the minimap's layers, so the main canvas does not
7691
+ * show through. */
7692
+ background?: string;
7693
+ /** The visible-rect indicator's stroke. */
7694
+ indicatorStyle?: IndicatorStyle;
7695
+ }
7696
+ /**
7697
+ * A minimap inside a `<SceneCanvas>`, installed with one entry:
7698
+ *
7699
+ * ```tsx
7700
+ * const minimap = useMemo(() => createMinimapContribution({ rect: { x: 8, y: 8, w: 160, h: 110 } }), []);
7701
+ * <SceneCanvas ambient={[minimap]} … />
7702
+ * ```
7703
+ *
7704
+ * Press in it to center the main camera on that point, drag to keep it there.
7705
+ * It shows the main camera's visible rect, and a crosshair where the pointer is
7706
+ * over the other view. Build it once — each instance keeps the live state its
7707
+ * layers read.
7708
+ */
7709
+ declare function createMinimapContribution<TData = unknown, TLayer extends string = string, TPose = unknown>(opts: MinimapContributionOptions<TData, TLayer, TPose>): SurfaceContribution;
7710
+
7711
+ /**
7712
+ * The minimap's input: press to recenter the main camera on a world point,
7713
+ * drag to keep it there. Both read `rootView` — never `view`, which inside the
7714
+ * minimap's own view answers the minimap's camera.
7715
+ */
7716
+
7717
+ declare const MINIMAP_CENTER = "minimap.center";
7718
+ declare const MINIMAP_PAN = "minimap.pan";
7719
+ /** Move `root` so world point (`x`, `y`) sits at the center of its host,
7720
+ * keeping its scale. A no-op while the host is unmeasured. */
7721
+ declare function centerRootOn(root: ViewApi, x: number, y: number): void;
7722
+ /** Recenter the main camera on the pressed world point. */
7723
+ declare function minimapCenterAction(): Action;
7724
+ /** Keep the main camera centered on the pointer's world point while dragging.
7725
+ * Pair it with `minimap.center` on `pointerDown`, which handles the press.
7726
+ * A recenter lands the moment it is computed, so there is nothing to commit
7727
+ * and a cancel ends where a release does. */
7728
+ declare function minimapPanAction(): Action;
7729
+
7730
+ /**
7731
+ * The minimap's chrome: the main camera's visible rect, drawn in the minimap,
7732
+ * and the linked crosshair, drawn in every view the pointer is not over.
7733
+ */
7734
+
7735
+ /** The halo's color: dark enough to separate the accent from any content. */
7736
+ declare const CROSSHAIR_HALO = "rgba(0, 0, 0, 0.6)";
7737
+ /** An axis-aligned rect, `{ x, y, w, h }`. */
7738
+ interface CrosshairRect {
7739
+ x: number;
7740
+ y: number;
7741
+ w: number;
7742
+ h: number;
7743
+ }
7744
+ /**
7745
+ * The linked crosshair at (`x`, `y`) as rects in the caller's units, where one
7746
+ * screen pixel is `unitsPerPx` of them: four halo rects to paint first, then
7747
+ * four bars. A painter with no weasel renderer — a 2D canvas — draws the same
7748
+ * crosshair from these.
7749
+ */
7750
+ declare function crosshairRects(x: number, y: number, unitsPerPx: number): {
7751
+ halo: CrosshairRect[];
7752
+ bars: CrosshairRect[];
7753
+ };
7511
7754
 
7512
7755
  /** Plain RGBA raster — structurally `ImageData`-compatible ({ width, height,
7513
7756
  * data }), deliberately free of printer/dpi/physical-unit concepts. */
@@ -7669,74 +7912,22 @@ declare function SelectionContextProviderIfRoot({ children, }: {
7669
7912
  */
7670
7913
  declare function usePublishSelection(ids: readonly NodeId[], kinds?: readonly (string | undefined)[]): void;
7671
7914
 
7672
- /**
7673
- * @experimental
7674
- * PointerContext — a tiny ambient context that publishes the world-space
7675
- * position of the canvas pointer, refreshed on every `pointermove` over
7676
- * the canvas. Cleared (set to `null`) on `pointerleave`.
7677
- *
7678
- * Why ref-based and not state-based: cursor moves fire dozens of times per
7679
- * second; routing those through React state would re-render every consumer
7680
- * in the tree. The context exposes a stable `pointerRef` whose `.current`
7681
- * is mutated directly by the publisher, plus a thunk `getDropPoint()` that
7682
- * reads it on demand. Consumers (e.g. `useClipboard`) pull via the thunk
7683
- * inside their callbacks — no subscription, no re-render.
7684
- *
7685
- * `<SceneCanvas>` publishes automatically. `useClipboardOps` consumes when
7686
- * the caller didn't pass an explicit `getDropPoint` option. Other future
7687
- * hit-on-cursor consumers (drop-zone hover, context-menu anchor) can reuse
7688
- * the same context.
7689
- */
7690
-
7691
- /** @experimental World-space pointer position, or `null` when the pointer
7692
- * isn't over the publishing canvas. */
7693
- type PointerWorldPos = {
7694
- worldX: number;
7695
- worldY: number;
7696
- } | null;
7697
- /** @experimental */
7698
- interface PointerContextValue {
7699
- /** Live ref — mutate to publish, read for the latest snapshot. The
7700
- * identity is stable for the lifetime of the provider. */
7701
- readonly pointerRef: MutableRefObject<PointerWorldPos>;
7702
- /** Convenience thunk equivalent to `() => pointerRef.current`. Stable
7703
- * identity for the lifetime of the provider; safe to pass to hooks. */
7704
- readonly getDropPoint: () => PointerWorldPos;
7705
- }
7706
- /**
7707
- * @experimental
7708
- * Wrap the part of the React tree that should share a pointer-position
7709
- * context. Usually placed at the demo / app root, alongside
7710
- * `<ActionsProvider>` and `<SelectionContextProvider>`.
7711
- *
7712
- * Most consumers don't need to mount this directly — `<SceneCanvas>` mounts
7713
- * an internal provider when no parent provider is in scope, so child hooks
7714
- * (`useClipboard` without an explicit `getDropPoint`) read the canvas's
7715
- * tracked pointer for free.
7716
- */
7717
- declare function PointerContextProvider({ children }: {
7718
- children: ReactNode;
7719
- }): ReactNode;
7720
- /** @experimental Read the surrounding pointer-context value, or `null` when
7721
- * no provider is in scope. */
7722
- declare function usePointerContext(): PointerContextValue | null;
7723
-
7724
7915
  /** Mount a `<PointerContextProvider>` only when none is already in scope. */
7725
7916
  declare function PointerProviderIfRoot({ children }: {
7726
7917
  children: ReactNode;
7727
- }): react_jsx_runtime.JSX.Element;
7918
+ }): react.JSX.Element;
7728
7919
 
7729
7920
  /** Mount an `<ActionsProvider>` only when none is already in scope, so
7730
7921
  * nesting canvases share one action registry instead of shadowing it. */
7731
7922
  declare function ActionsProviderIfRoot({ children }: {
7732
7923
  children: ReactNode;
7733
- }): react_jsx_runtime.JSX.Element;
7924
+ }): react.JSX.Element;
7734
7925
 
7735
7926
  /** Mount a `<DepRegistryProvider>` only when none is already in scope, so a
7736
7927
  * consumer's dep sources are not shadowed by a nested canvas. */
7737
7928
  declare function DepRegistryProviderIfRoot({ children }: {
7738
7929
  children: ReactNode;
7739
- }): react_jsx_runtime.JSX.Element;
7930
+ }): react.JSX.Element;
7740
7931
 
7741
7932
  interface WeaselProviderProps {
7742
7933
  children: ReactNode;
@@ -7761,7 +7952,7 @@ interface WeaselProviderProps {
7761
7952
  * state has to be shared by things outside a canvas: a toolbar, a property
7762
7953
  * panel, or two canvases that should agree on the selection.
7763
7954
  */
7764
- declare function WeaselProvider({ children, isolate }: WeaselProviderProps): react_jsx_runtime.JSX.Element;
7955
+ declare function WeaselProvider({ children, isolate }: WeaselProviderProps): react.JSX.Element;
7765
7956
 
7766
7957
  /** Options for `useCanvasFocus`. */
7767
7958
  interface UseCanvasFocusOptions {
@@ -10518,7 +10709,11 @@ declare const DEFAULT_FILL_COLOR = "#ffffffff";
10518
10709
  declare const DEFAULT_STROKE_COLOR = "#000000ff";
10519
10710
  /** Default fill palette cycled through for auto-generated shape nodes
10520
10711
  * (the kit's built-in shape tools and the `insert` action). */
10521
- declare const DEFAULT_PALETTE: readonly string[];
10712
+ declare const DEFAULT_PALETTE: Palette;
10713
+ /** The `seq`th color of `palette`'s entries as hex, wrapping past the end.
10714
+ * An entry that resolves to nothing, or to a space with no hex form, gives
10715
+ * `fallback`. */
10716
+ declare function cycleFill(seq: number, palette?: Palette, fallback?: string): string;
10522
10717
  /** Preview / "ghost" stroke color used by drag-to-draw tool overlays and the
10523
10718
  * selected-anchor highlight. Derived from the first palette entry so the
10524
10719
  * preview chrome matches the default insert color. */
@@ -11968,32 +12163,32 @@ interface IconProps {
11968
12163
  /** Classic cursor-arrow shape — filled silhouette pointing top-left to
11969
12164
  * bottom-right with the diagonal "tail" along the lower edge. Used for
11970
12165
  * `useSelectTool`. */
11971
- declare function SelectIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12166
+ declare function SelectIcon({ className, size }: IconProps): react.JSX.Element;
11972
12167
 
11973
12168
  /** Freeform marquee — outlined irregular loop with a short tail
11974
12169
  * suggesting "the lasso closed where you released the pointer." Used
11975
12170
  * for `useLassoTool`. */
11976
- declare function LassoIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12171
+ declare function LassoIcon({ className, size }: IconProps): react.JSX.Element;
11977
12172
 
11978
12173
  /** Outlined rectangle with a small crosshair at the upper-left corner,
11979
12174
  * signaling "this is a drawing tool, not just a shape." Used for the
11980
12175
  * rectangle insertion tool (`useInsertTool` today, future `useRectTool`). */
11981
- declare function RectIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12176
+ declare function RectIcon({ className, size }: IconProps): react.JSX.Element;
11982
12177
 
11983
12178
  /** Outlined ellipse. Used for the ellipse insertion tool. */
11984
- declare function EllipseIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12179
+ declare function EllipseIcon({ className, size }: IconProps): react.JSX.Element;
11985
12180
 
11986
12181
  /** Framed picture with a sun and mountain — the conventional "image" glyph.
11987
12182
  * Used for the image insertion tool (`useImageTool`). */
11988
- declare function ImageIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12183
+ declare function ImageIcon({ className, size }: IconProps): react.JSX.Element;
11989
12184
 
11990
12185
  /** Eyedropper — diagonal stem running from upper-right (bulb) to
11991
12186
  * lower-left (tip), with a small squared bulb cap at the top. Used
11992
12187
  * for the eyedropper / color-picker tool. */
11993
- declare function EyedropperIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12188
+ declare function EyedropperIcon({ className, size }: IconProps): react.JSX.Element;
11994
12189
 
11995
12190
  /** Diagonal line. Used for the line insertion tool. */
11996
- declare function LineIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12191
+ declare function LineIcon({ className, size }: IconProps): react.JSX.Element;
11997
12192
 
11998
12193
  /** `LineIcon`'s diagonal with a filled head, so the two read as one tool with
11999
12194
  * and without the marker. Used for the arrow insertion tool.
@@ -12002,47 +12197,115 @@ declare function LineIcon({ className, size }: IconProps): react_jsx_runtime.JSX
12002
12197
  * under antialiasing and the notch disappears, leaving a blob. Its base
12003
12198
  * corners are `tip ∓ 5.6·d ± 2.1·d⊥` — computed, and the shaft stops half a
12004
12199
  * unit inside the base so its round cap hides under the fill. */
12005
- declare function ArrowIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12200
+ declare function ArrowIcon({ className, size }: IconProps): react.JSX.Element;
12006
12201
 
12007
12202
  /** Outlined hexagon. Used for the polygon insertion tool. */
12008
- declare function PolygonIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12203
+ declare function PolygonIcon({ className, size }: IconProps): react.JSX.Element;
12009
12204
 
12010
12205
  /** Outlined five-point star. Used for the star insertion tool. */
12011
- declare function StarIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12206
+ declare function StarIcon({ className, size }: IconProps): react.JSX.Element;
12012
12207
 
12013
12208
  /** Slanted pencil pointing toward the upper-right corner. Used for the
12014
12209
  * freehand pencil insertion tool. */
12015
- declare function PencilIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12210
+ declare function PencilIcon({ className, size }: IconProps): react.JSX.Element;
12016
12211
 
12017
12212
  /** Serif "T" — top bar + stem + small bottom serif. Used for
12018
12213
  * `useTextTool`. Visually consistent with the layer-list text icon. */
12019
- declare function TextIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12214
+ declare function TextIcon({ className, size }: IconProps): react.JSX.Element;
12020
12215
 
12021
12216
  /** Pen nib — angled filled body with a pointed tip and a small ink dot
12022
12217
  * at the very tip, plus a short "control" handle extending out the
12023
12218
  * back. Used for `usePenTool`. */
12024
- declare function PenIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12219
+ declare function PenIcon({ className, size }: IconProps): react.JSX.Element;
12025
12220
 
12026
12221
  /** Open hand — rounded palm with four upward fingers (variable length)
12027
12222
  * and a thumb stub. Used for `useHandTool` (viewport pan). */
12028
- declare function HandIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12223
+ declare function HandIcon({ className, size }: IconProps): react.JSX.Element;
12029
12224
 
12030
12225
  /** Placeholder for tools without `presentation.icon`. A circle with "?"
12031
12226
  * inside — readable, debuggable, not hidden. */
12032
- declare function UnknownIcon({ className, size }: IconProps): react_jsx_runtime.JSX.Element;
12227
+ declare function UnknownIcon({ className, size }: IconProps): react.JSX.Element;
12033
12228
 
12034
12229
  /** Icon for the union operation: two overlapping circles merged into one filled shape. */
12035
- declare function UnionIcon(): react_jsx_runtime.JSX.Element;
12230
+ declare function UnionIcon(): react.JSX.Element;
12036
12231
  /** Icon for the intersect operation: only the overlap of two circles filled. */
12037
- declare function IntersectIcon(): react_jsx_runtime.JSX.Element;
12232
+ declare function IntersectIcon(): react.JSX.Element;
12038
12233
  /** Icon for the subtract operation: the front circle removed from the back one. */
12039
- declare function SubtractIcon(): react_jsx_runtime.JSX.Element;
12234
+ declare function SubtractIcon(): react.JSX.Element;
12040
12235
  /** Icon for the exclude operation: both circles filled except their overlap. */
12041
- declare function ExcludeIcon(): react_jsx_runtime.JSX.Element;
12236
+ declare function ExcludeIcon(): react.JSX.Element;
12042
12237
  /** Icon for the divide operation: two circles split into their separate regions. */
12043
- declare function DivideIcon(): react_jsx_runtime.JSX.Element;
12238
+ declare function DivideIcon(): react.JSX.Element;
12044
12239
  /** Icon for the crop operation: the back shape clipped to the front one. */
12045
- declare function CropIcon(): react_jsx_runtime.JSX.Element;
12240
+ declare function CropIcon(): react.JSX.Element;
12241
+
12242
+ /** Cut: scissors. */
12243
+ declare function CutIcon(): react.JSX.Element;
12244
+ /** Copy: a document peeking out behind another. */
12245
+ declare function CopyIcon(): react.JSX.Element;
12246
+ /** Paste: a clipboard with a filled clip. */
12247
+ declare function PasteIcon(): react.JSX.Element;
12248
+ /** Duplicate: the source outlined, the copy filled. */
12249
+ declare function DuplicateIcon(): react.JSX.Element;
12250
+ /** Group: corner brackets framing two filled rects. */
12251
+ declare function GroupIcon(): react.JSX.Element;
12252
+ /** Ungroup: two filled rects escaping a frame broken to two dashed corners. */
12253
+ declare function UngroupIcon(): react.JSX.Element;
12254
+ /** Bring forward: two stacked rects, the front one filled. */
12255
+ declare function BringForwardIcon(): react.JSX.Element;
12256
+ /** Bring to front: three stacked rects, the frontmost filled. */
12257
+ declare function BringToFrontIcon(): react.JSX.Element;
12258
+ /** Send backward: two stacked rects, the rear one filled. */
12259
+ declare function SendBackwardIcon(): react.JSX.Element;
12260
+ /** Send to back: three stacked rects, the rearmost filled. */
12261
+ declare function SendToBackIcon(): react.JSX.Element;
12262
+ /** Flip horizontal: an outlined and a filled chevron either side of a dashed vertical axis. */
12263
+ declare function FlipXIcon(): react.JSX.Element;
12264
+ /** Flip vertical: an outlined and a filled chevron either side of a dashed horizontal axis. */
12265
+ declare function FlipYIcon(): react.JSX.Element;
12266
+
12267
+ declare function AlignLeftIcon(): react.JSX.Element;
12268
+ declare function AlignRightIcon(): react.JSX.Element;
12269
+ declare function AlignTopIcon(): react.JSX.Element;
12270
+ declare function AlignBottomIcon(): react.JSX.Element;
12271
+ declare function AlignCenterXIcon(): react.JSX.Element;
12272
+ declare function AlignCenterYIcon(): react.JSX.Element;
12273
+
12274
+ declare function DistributeHorizontalIcon(): react.JSX.Element;
12275
+ declare function DistributeVerticalIcon(): react.JSX.Element;
12276
+
12277
+ /**
12278
+ * @experimental
12279
+ * Props for the undo, redo and delete glyphs — the same shape as
12280
+ * `@weasel-js/ui`'s `IconProps`, which re-exports these components.
12281
+ */
12282
+ interface ActionGlyphProps extends IconProps {
12283
+ /** Accessible name. Omit inside a button that already labels itself; the
12284
+ * glyph is then `aria-hidden`. */
12285
+ label?: string;
12286
+ /** Accepted for parity with the rest of the ui icon set; none of these
12287
+ * glyphs encloses a region, so it draws nothing. */
12288
+ filled?: boolean;
12289
+ fillOpacity?: number;
12290
+ }
12291
+ /** @experimental Undo: a straight run returning in a half circle, arrowhead on the run. */
12292
+ declare function UndoIcon(p: ActionGlyphProps): react.JSX.Element;
12293
+ /** @experimental Redo: the undo glyph mirrored. */
12294
+ declare function RedoIcon(p: ActionGlyphProps): react.JSX.Element;
12295
+ /** @experimental Delete: a lidded trash can. */
12296
+ declare function DeleteIcon(p: ActionGlyphProps): react.JSX.Element;
12297
+
12298
+ /**
12299
+ * @experimental
12300
+ * SVG bodies of the glyphs the undo, redo and delete actions ship as their
12301
+ * icons: 20x20 viewBox, stroked in currentColor at stroke-width 1.5 with round
12302
+ * caps and joins. `<Icon name="undo" />` in `@weasel-js/ui` draws the same one.
12303
+ */
12304
+ declare const ACTION_GLYPHS: {
12305
+ readonly delete: "<path d=\"M3.6 5.8h12.8M8 5.8V4.5A1.1 1.1 0 0 1 9.1 3.4h1.8A1.1 1.1 0 0 1 12 4.5v1.3\"/><path d=\"M5.2 5.8v9.6A1.6 1.6 0 0 0 6.8 17h6.4a1.6 1.6 0 0 0 1.6-1.6V5.8\"/><path d=\"M8.4 8.8v5.2M11.6 8.8v5.2\" stroke-width=\"1\"/>";
12306
+ readonly undo: "<path d=\"M4.4 8.4h6.8a3.6 3.6 0 0 1 0 7.2H8.6\"/><path d=\"M6.47 10.14 4.4 8.4 6.47 6.66\"/>";
12307
+ readonly redo: "<path d=\"M15.6 8.4H8.8a3.6 3.6 0 0 0 0 7.2H11.4\"/><path d=\"M13.53 6.66 15.6 8.4 13.53 10.14\"/>";
12308
+ };
12046
12309
 
12047
12310
  /**
12048
12311
  * The painted tier: draws a cursor glyph into the scene when it is too big,
@@ -12071,4 +12334,4 @@ interface InsertOverlayStyle {
12071
12334
  lineWidth?: number;
12072
12335
  }
12073
12336
 
12074
- export { ANCHOR_HIT_BASE_PX, type ActionShortcut, ActionsProviderIfRoot, type Affordance, type AffordanceBinding, type AffordanceRegion, type AffordanceRegionHit, type AlignAdapter, type AlignAnchor, type AlignEdge, type AlignMatchResult, type AlignMoveArgs, type AlignmentBehaviorBase, type AnchorHit, type AnchorScratch, type AnchorState, type AnimateOnSetPoseOptions, AnimationHandle, Animator, type AnyTool, AreaSelectAdapter, type ArrayAdapter, type ArrayAdapterConfig, ArrowIcon, BUILTIN_MARKERS, BUNDLE_TOOLS, type BakedMesh, type BindRigOptions, BooleansAdapter, BoundsConstraint, type BuildChromeCtxArgs, type BuiltinShapeToolId, type BuiltinToolId, type BuiltinToolOptions, CURVE_REPS, type CanvasExtensionApi, type CanvasFocusReturn, type CanvasHelpers, type CanvasProps, type CanvasSelectionMode, type CanvasSize, type CanvasSizeSnapshot, type CanvasSurfaceHelpers, CanvasView, type CanvasViewHandle, type CanvasViewHelpers, type CanvasViewProps, type CellHighlightLayerOpts, type ChromeCtx, type ChromeId, type ChromeState, type ClampBounds, ClipboardSnapshot, type CoalescedCtx, type ColorInterpolate, ColorOverrideRegistry, type CommonAffordanceScratch, type ComposeSelectionPoseOpts, type ComputeFitViewOptions, type Condition, ContentHandlerEntry, type Contribution, type ContributionChrome, type CornerResizeAffordanceOptions, type CornerResizeScratch, type CreateChildrenLayerOpts, type CreateParallaxLayerOpts, type CreatePathEditingOverlayLayerOptions, type CreatePathLayerOpts, type CreatePenPreviewLayerOptions, type CreateTextLayerOpts, type CreateTiledLayerOpts, type CreateViewResolverOpts, type CreateViewportLayerOpts, CropIcon, CursorCoordsHud, type CursorCoordsHudProps, type CurveRepKind, type CurveRepresentation, type CustomLayerEntry, type CustomPaintContext, type CycleHandle, type CycleVertexColorsOptions, DEFAULT_DEBUG_STROKES, DEFAULT_DEBUG_THEME, DEFAULT_FILL_COLOR, DEFAULT_GUIDE_TOLERANCE_PX, DEFAULT_HANDLE_SIZE, DEFAULT_MAX_ZOOM, DEFAULT_MIN_ZOOM, DEFAULT_PALETTE, DEFAULT_ROTATION_HANDLE_DISTANCE, DEFAULT_SHAPE_FILL, DEFAULT_STROKE_COLOR, type DebugConfig, type DebugFeature, type DebugSnapshot, type DebugStroke, type DebugStrokes, type DebugTheme, type DefaultTextData, DepRegistryProviderIfRoot, type DeriveAlignmentGuidesOptions, DerivedDep, DeviceProfileProvider, type DeviceProfileProviderProps, type Dims, type Discriminator, type DistributeAdapter, type DistributeAxis, type DistributeMode, DivideIcon, type DragGestureController, type DragGestureCtx, type DragGestureEndCtx, type DragGesturePhase, type DragGesturePoint, type DragHandleOptions, type DragPanParams, type DragPayload, type DragRadialController, type DragRadialCtx, type DragRadialEndCtx, type DragRadialPoint, type DragRadialState, type DragRectBounds, type DragRectController, type DragRectCtx, type DragRectEndCtx, type DragRectPoint, DrawCommand, type DropZoneOptions, EasingSpec, Effect, EllipseIcon, ExcludeIcon, EyedropperIcon, FALLBACK_FIT_VIEW, type FeedDelta, type FeedNode, type FillPoseBox, type FitTextPoseOptions, type FlagKey, type FreeformOptions, GHOST_STROKE, type GateLayerOptions, GeometryProjection, type GesturePreviewSource, type GestureSource, GlMat3, type GridLayerOpts, type GridSlotConfig, Guide, type GuideSnapOptions, type GuidesLayerOpts, HANDLE_BASE_PX, HandIcon, InertiaConfig as HandToolInertiaConfig, type HandleDragEnd, type HandleDragPoint, type HeadlessCanvasLike, type HostAnchorAlign, type HostAnchorInput, type HostAnchorOffset, type HostAnchorStyle, IDENTITY_JOINT, type IconProps, ImageIcon, type ImageNodeData, type ImageStatus, type IndicatorStyle, InertiaConfig, InsertAdapter, InsertBehavior, InsertExtras, type InsertNodeFactory, type InsertOp, type InsertOverlayStyle, type InsertPreviewExtent, type InsertPreviewGeometry, type InsertPreviewLike, type InsertPreviewOverlay, IntersectIcon, type Joint, type JointTransform, KIT_SHAPE_KINDS, KIT_STANDARD_ACTION_IDS, type KeyModifiers, type KeyState, type KeyStateAttachOptions, type LabelOptions, LassoHitMode, LassoIcon, LassoSelectAdapter, LassoSelectBehavior, type LayerCommandCache, type LayerDrawFailure, LayerEnumerableAdapter, type LayerGroup, type LayerHit, type LayerSlotValue, type LayersMap, LayoutSnap, LayoutStrategy, type LifecycleAnimation, LineIcon, type LinePoint, MESH_BAKE_SIZE, MESH_GRADIENT_KIND, MIXED, MOVE_ANCHORS, type MarkerCtx, type MarkerEntry, type MarkerPaint, type MarkerSite, type MarkerSiteRequest, type MeshGradientFill, type MeshPatch, type MeshPoint, MinimapCanvas, type MinimapCanvasProps, type MinimapFit, type Mixed, type MomentumOptions, MoveAdapter, MoveBehavior, type NestedHitOpts, type NestedHitTester, type NodeClientRect, type NodeInk, type NodeInkCtx, type NodeOverlayFrame, type NodePaintCtx, type NodeProperties, type NodePropertiesEntry, type NodeRouting, type NodeRoutingEntry, type NodeShapeEntry, type NodeSilhouetteCtx, type OpenFilePickerOptions, OrderedAdapter, OriginProjection, type OverlayPoint, type OverlayVisibilityId, PAINTED_CURSOR_LAYER_ID, PATH_ANCHOR_CHROME_ID, type PaintBindContext, type PaintKind, type PaintKindEditorProps, type PaintKindEntry, type PaintProgram, PanBounds, type ParallaxOpts, Path, type PathAnchor, type PathAnchorAffordanceOptions, PathBuilder, PathDrawCommand, type PathEditingOverlayStyle, type PathInWorldPose, type PenAnchor, PenIcon, type PenPreviewStyle, type PenScratch, type PenSubpath, PencilIcon, type PencilPoint, PickHud, type PickHudProps, type PickTopMostHitAdapter, type PinchZoomOptions, type PixelRenderPlan, type PointInPathOptions, type PointInTextPoseOpts, PointSnapBehavior, PointerContextProvider, type PointerContextValue, PointerProviderIfRoot, type PointerSample, type PointerStylusState, type PointerWorldPos, PolygonIcon, PolygonPath, type PolygonPoint, type Pose, PoseComposition, PoseDescriptor, type PoseFeed, PoseOverrides, type PoseRotation, type PoseRun, type PoseRunCtx, type PoseRunStep, type PoseSource, type PosedNode, type PressureToWidthOptions, type PreviewNode, ROTATION_HANDLE_BASE_PX, type RangeStyle, type RasterImage, type RecordedBounds, type RecordedHandle, type RecordedHitbox, type RecordedLayer, type RecordedOrigin, type RecordedSnap, RectIcon, RectPath, RectPose, type RegisterNodeShapeOptions, RegisteredOp, type RenderLayer, type RenderSceneToCanvasArgs, type RenderSceneToPixelsArgs, type ReorderDirection, ResizeAdapter, type ResolvableView, type ResolvedOverlay, type Rig, type RigApply, type RigApplyContext, type RigScene, RotateAdapter, RotateBehavior, RotatedPose, type RotationAffordanceOptions, type RotationHandle, type RotationScratch, type RunStylePatch, SampledTrack, type ScalarOrXY, Scene, SceneAdapter, type SceneAdapterSelection, SceneCanvas, type SceneCanvasAdapter, type SceneCanvasApi, type SceneCanvasHit, type SceneCanvasProps, Node$1 as SceneNode, type SceneNodeClientRectOpts, SceneRegistry, type SceneSlotConfig, type SceneToAdapterOptions, SceneViewCanvas, type SceneViewCanvasProps, type SceneViewDrawOne, type SceneViewLayers, type SelectAdapter, type SelectFromLassoOptions, SelectIcon, SelectionContextProvider, SelectionContextProviderIfRoot, type SelectionContextValue, type SelectionHandleStyle, type SelectionHandlesLayerOpts, type SelectionOutlineLayerOpts, type SelectionOverlayLayerOpts, type SelectionOverlaySlotConfig, SerializedScene, type SetFlagResult, type SetPathFields, ShaderProgramHandle, type ShapeCoversPointOptions, type SharedAnchor, Simulation, SimulationNode, type Skeleton, type Slew, type SlewRates, SliceDep, type SnapPattern, type SnapPointOptions, SnapStrategy, type SplitByLineOptions, type SpringPoseOptions, SpringPresetName, type SpringVertexColorsOptions, type StaggerVertexColorsOptions, type StandardSlotConfig, type StandardSlotName, StarIcon, type StarPoint, type StartEditOptions, type StyleKey, type StylusData, SubtractIcon, SvgIngestOptions, TOOL_PREF_KINDS, TextDrawCommand, type TextEditClipRect, type TextEditScreenPose, type TextEditSelection, TextIcon, type ThresholdDragHandle, type ThresholdDragOptions, type TileBleed, type TileGridOptions, type TilePatternOpts, type TilePeriod, type TileRange, type Tool, type ToolBundle, type ToolDef, type ToolPref, type ToolPrefBoolean, type ToolPrefBooleanControl, type ToolPrefColor, type ToolPrefCustom, type ToolPrefEnum, type ToolPrefEnumControl, type ToolPrefEnumEncoding, type ToolPrefGroup, type ToolPrefKind, type ToolPrefLeaf, type ToolPrefNumber, type ToolPrefNumberControl, type ToolPrefNumberFormat, type ToolPrefNumberUnit, type ToolPrefObject, type ToolPrefPaint, type ToolPrefString, type ToolPrefStringControl, type ToolsApi, type TweenPoseOptions, type TweenVertexColorsOptions, UNION_OF_CHILDREN, UnionIcon, Unit, UnitEntry, UnitSystem, UnitValue, UnknownIcon, type UseAlignOptions, type UseAlignReturn, UseAnimatorOptions, type UseArrayAdapterOptions, type UseBooleansOptions, type UseBooleansReturn, type UseCanvasFocusOptions, type UseDistributeOptions, type UseDistributeReturn, type UseDragGestureOptions, type UseDragRadialOptions, type UseDragRectOptions, type UseEyedropperToolOptions, type UseGridCellHoverOptions, type UseGridCellHoverReturn, type UseGuidesReturn, type UseHandToolOptions, type UseHandleDragOptions, type UseHandleDragReturn, type UseHostAnchorOptions, type UseHoverTrackingArgs, type UseImageToolOptions, type UseKeyStateOptions, type UseKeybindingsOptions, type UseLassoSelectOptions, type UseLassoToolOptions, UseMoveOptions, type UseNodeOverlayFrameOptions, type UsePenToolOptions, type UsePointerStylusOptions, type UsePolygonToolOptions, type UsePoseRunOptions, UseResizeOptions, type UseResizePolicyOptions, type UseRotateOptions, UseSceneOptions, type UseSceneTextEditOptions, type UseSceneTextEditReturn, type UseSceneTrivialOptions, type UseSelectToolOptions, type UseSelectionOptions, UseSimulationOptions, type UseStandardActionsOptions, type UseStarToolOptions, type UseTextEditOptions, type UseTextEditReturn, type UseToolsOptions, VERSION, type VelocityTracker, VertexColorChannel, ViewAnimationOptions, type ViewRect, type ViewResolver, type ViewTarget, type ViewTransform, ViewportDims, type ViewportLayer, type ViewportToolDef, type ViewportZoomAnimateOptions, type ViewportZoomOptions, type VisibilityRules, type VisibleRaf, type VisibleRafOptions, type VisibleRafTarget, WHEEL_ZOOM_STEP, WeaselProvider, type WheelInput, type WheelPanOptions, type WheelPanOpts, ZOOM_FLOOR, type ZoomBound, type ZoomClampOpts, type ZoomFactor, _resetMarkersForTests, _resetPaintKindsForTests, actionIs, actionShortcuts, alignDeltaFor, alignInsertBehavior, alignMoveBehavior, alignResizeBehavior, always, and, animateLifecycle, animateOnSetPose, annulusSemiAxes, applyOpsTo, applyStyleToRange, areaSelectAction, arrayAdapter, asPaint, axisAlignedBounds, bakeMesh, bezierCubic, bezierQuadratic, bindRig, blendPoses, boundsOfPath, buildChromeCtx, buildSceneViewCommands, canBringForward, canHover, canSendBackward, capabilityAll, capabilityIn, capabilityIs, capabilityNot, caretIndexAt, cellAt, charOffsetToDomPosition, circlePath, clampView, clearSelectionAction, clipboardCopyAction, clipboardCutAction, cloneAction, coarsePointer, composeAffordanceLayer, composePath, composeSelectionPose, computeFitView, computeFitViewport, computeIndicatorCommand, computeWheelAction, cond, constrainTo45, containedThenNearest, cornerWeights, countPathAnchors, createCellHighlightLayer, createChildrenLayer, createCornerResizeAffordance, createDebugOverlayLayer, createDebugSink, createDeleteOp, createGridLayer, createGuidesLayer, createHistory, createInsertOp, createKeyState, createMoveToIndexOp, createNodeProperties, createNodeRouting, createPaintedCursorLayer, createParallaxLayer, createPathAnchorAffordances, createPathEditingOverlayLayer, createPathLayer, createPenPreviewLayer, createPoseFeed, createPoseOverrides, createReorderOp, createReparentOp, createRotationAffordance, createScene, createSelectionHandlesLayer, createSelectionOutlineLayer, createSelectionOverlayLayer, createSetDataOp, createSetLayerOp, createSetPathOp, createSetSelectionOp, createSetTextOp, createSlew, createTextLayer, createTilePattern, createTiledLayer, createTransformOp, createVelocityTracker, createViewResolver, createViewportLayer, cycleVertexColors, decomposePath, defaultCommitAdapter, defaultDrawOne, defaultLabelTextRenderer, defaultNodeProperties, defaultNodeRouting, defaultVisibilityRules, defineTool, defineViewportTool, deriveAlignmentGuides, deriveParallaxView, derivedDepOf, derivedPose, dispatchApplyBatch, dlog, documentPose, domPositionToCharOffset, domToRuns, drawLayers, drawOneLayer, dwarn, editAnchorsAction, effectivePose, effectiveRangeStyle, enterTextEditAction, enumerateAnchors, evalPatch, fillInPoseFrame, fillToBoundsFrame, findNodeShape, findShapeInk, findShapeSilhouette, fitTextPose, fitToBounds, fitZoom, flattenPreviews, focused, forEachCoalesced, freeform, gateLayer, gesturing, getAlpha01, getImageBitmap, getMarker, getNodeShapes, getPaintKind, getStylusData, gradientForBounds, gradientGeometry, guideSnapStrategy, hexToRgba, hitAffordanceRegions, hitAnchor, hitRotationHandle, hostAnchorCss, hostAnchorRect, hovering, hoveringSelected, imageStatus, inferredNodeProperties, inferredNodeRouting, insertAction, insertPreviewExtent, interpolateView, isBuiltinToolPref, isDebugEnabled, isGradientFill, isLayerPainted, isLayerVisible, isMeshGradientFill, isPatternSpec, isTensorPatch, isValidPatch, keySpecShortcut, lassoSelectAction, listMarkers, listPaintKinds, makePinchZoomAction, makeViewportWheelPanAction, makeViewportZoomAction, markerDrawCommands, markerInset, markerKeyOf, markerSites, matchAlignment, meanScale, mergeAlphaFromPrev, meshBounds, meshGradientXml, modeIn, modeIs, modeNot, modifierHeld, momentum, moveAction, multiActive, nearest, nearestWithin, nestedHitTester, never, nodeHasFlag, none, normalizeHex, normalizeView, normalizeZoom, not, nurbs, openFilePicker, or, paintAlpha, paintKindOf, paintWithAlpha, paintWithColor, parseColor, parseColorToRgba255, parseDebugFlags, patchBounds, patchCorner, pathContainsPoint, pathContainsPolygon, pathContainsRect, pathDistanceToPoint, pathDivide, pathExclude, pathFromD, pathInPoseFrame, pathInWorld, pathIntersect, pathIntersectsPolygon, pathIntersectsRect, pathOriginProjection, pathPoseDescriptor, pathSubtract, pathToAnchors, pathUnion, pickTopMostHit, pinchZoomAction, planPixelRender, pointInPath, pointInTextPose, poseRotationOf, prefUnit, pressureToWidth, pxExtent, rainbowVertexColors, rebuildOp, rectMarkerPath, registerMarker, registerNodeShape, registerOpFactory, registerPaintKind, registeredOpNames, renderLabel, renderSceneToCanvas, renderSceneToPixels, resizeAction, resolveColor, resolveFillPattern, resolveMarkerSize, resolveOverlays, resolvePatternSpec, resolvePreviews, resolveSkeleton, resolveVisibility, rgbaToHex, rigidRigApply, rotateAction, rotateAroundAABBCenter, rotatePathAround, rotationDegreesUnit, rotationHandle, roundRectPath, roundToCell, runsToDom, sampleGradientStops, sampleTrack, scaleDelta, scalePathToBounds, sceneFromJSON, sceneNodeClientRect, sceneSelectionStore, sceneToAdapter, screenToWorld, seedMeshPatch, selectFromLasso, selectionAtLeast, selectionEmpty, selectionIs, setFlagOverRange, shapeCoversPoint, slewToward, sliceAction, snap, snapPoint, solid, solidVertexColors, spiro, splitPathByLine, splitSubpaths, springPose, springVertexColors, squarePath, staggerVertexColors, startThresholdDrag, strokeInsets, strokeOf, strokeWith, styleAtRange, subscribeImageReady, textCommand, textCommandFromPose, textCommandFromRuns, tileGrid, tiledProject, toHex8, transformPath, translatePath, trimPolyline, tweenPose, tweenVertexColors, unionAABB, unionBounds, unionBoundsPath, unionOfChildren, unionOfChildrenVia, useAlign, useAnimator, useArrayAdapter, useAutoCenter, useBooleans, useBooleansAdapter, useCanvasFocus, useCanvasSize, useDeviceProfile, useDistribute, useDragGesture, useDragHandle, useDragRadial, useDragRect, useDropZone, useEllipseTool, useEyedropperTool, useGridCellHover, useGuides, useHandTool, useHandleDrag, useHostAnchor, useHoverTracking, useImageTool, useKeyState, useKeybindings, useLassoTool, useLineTool, useNodeOverlayFrame, usePenTool, usePencilTool, usePinchGesture, usePointerContext, usePointerStylus, usePolygonTool, usePoseCompositionDepSource, usePoseDescriptorDepSource, usePoseRun, usePublishSelection, useRectTool, useResizePolicy, useRig, useScene, useSceneAdapter, useSceneTextEdit, useSelectTool, useSelection, useSelectionContext, useSimulation, useSliceDep, useStandardActions, useStarTool, useTextEdit, useTextTool, useTools, useVelocityTracker, useVisibleRaf, viewToTransform, viewZoom, viewportDragPanAction, viewportWheelPanAction, viewportZoomAction, viewportsAt, wheelPan, wheelZoom, wheelZoomFactor, when, withAlpha01, withCoord, withGradientKind, withinPxBox, withinPxRadius, worldEditToStorage, worldToScreen, zoomAt, zoomAtLeast };
12337
+ export { ACTION_GLYPHS, ANCHOR_HIT_BASE_PX, type ActionGlyphProps, type ActionShortcut, ActionsProviderIfRoot, type Affordance, type AffordanceBinding, type AffordanceRegion, type AffordanceRegionHit, type AlignAdapter, type AlignAnchor, AlignBottomIcon, AlignCenterXIcon, AlignCenterYIcon, type AlignEdge, AlignLeftIcon, type AlignMatchResult, type AlignMoveArgs, AlignRightIcon, AlignTopIcon, type AlignmentBehaviorBase, type AnchorHit, type AnchorScratch, type AnchorState, type AnimateOnSetPoseOptions, AnimationHandle, Animator, type AnyTool, AreaSelectAdapter, type ArrayAdapter, type ArrayAdapterConfig, ArrowIcon, BUILTIN_MARKERS, BUNDLE_TOOLS, type BakedMesh, type BindRigOptions, BooleansAdapter, BoundsConstraint, BringForwardIcon, BringToFrontIcon, type BuildChromeCtxArgs, type BuiltinShapeToolId, type BuiltinToolId, type BuiltinToolOptions, CROSSHAIR_HALO, CURVE_REPS, type CanvasExtensionApi, type CanvasFocusReturn, type CanvasHelpers, type CanvasProps, type CanvasSelectionMode, type CanvasSize, type CanvasSizeSnapshot, type CanvasSurfaceHelpers, CanvasView, type CanvasViewHandle, type CanvasViewHelpers, type CanvasViewProps, type CellHighlightLayerOpts, type ChromeCtx, type ChromeId, type ChromeState, type ClampBounds, ClipboardSnapshot, type CoalescedCtx, type ColorInterpolate, ColorOverrideRegistry, type CommonAffordanceScratch, type ComposeSelectionPoseOpts, type ComputeFitViewOptions, type Condition, ContentHandlerEntry, type Contribution, type ContributionChrome, type ContributionDepReader, CopyIcon, type CornerResizeAffordanceOptions, type CornerResizeScratch, type CreateChildrenLayerOpts, type CreateParallaxLayerOpts, type CreatePathEditingOverlayLayerOptions, type CreatePathLayerOpts, type CreatePenPreviewLayerOptions, type CreateTextLayerOpts, type CreateTiledLayerOpts, type CreateViewResolverOpts, type CreateViewportLayerOpts, CropIcon, type CrosshairRect, CursorCoordsHud, type CursorCoordsHudProps, type CurveRepKind, type CurveRepresentation, type CustomLayerEntry, type CustomPaintContext, CutIcon, type CycleHandle, type CycleVertexColorsOptions, DEFAULT_DEBUG_STROKES, DEFAULT_DEBUG_THEME, DEFAULT_FILL_COLOR, DEFAULT_GUIDE_TOLERANCE_PX, DEFAULT_HANDLE_SIZE, DEFAULT_MAX_ZOOM, DEFAULT_MIN_ZOOM, DEFAULT_PALETTE, DEFAULT_ROTATION_HANDLE_DISTANCE, DEFAULT_SHAPE_FILL, DEFAULT_STROKE_COLOR, type DebugConfig, type DebugFeature, type DebugSnapshot, type DebugStroke, type DebugStrokes, type DebugTheme, type DefaultTextData, DeleteIcon, DepRegistryProviderIfRoot, type DeriveAlignmentGuidesOptions, DerivedDep, DeviceProfileProvider, type DeviceProfileProviderProps, type Dims, type Discriminator, type DistributeAdapter, type DistributeAxis, DistributeHorizontalIcon, type DistributeMode, DistributeVerticalIcon, DivideIcon, type DragGestureController, type DragGestureCtx, type DragGestureEndCtx, type DragGesturePhase, type DragGesturePoint, type DragHandleOptions, type DragPanParams, type DragPayload, type DragRadialController, type DragRadialCtx, type DragRadialEndCtx, type DragRadialPoint, type DragRadialState, type DragRectBounds, type DragRectController, type DragRectCtx, type DragRectEndCtx, type DragRectPoint, DrawCommand, type DropZoneOptions, DuplicateIcon, EasingSpec, Effect, EllipseIcon, ExcludeIcon, EyedropperIcon, FALLBACK_FIT_VIEW, type FeedDelta, type FeedNode, type FillPoseBox, type FitTextPoseOptions, type FlagKey, FlipXIcon, FlipYIcon, type FreeformOptions, GHOST_STROKE, type GateLayerOptions, GeometryProjection, type GesturePreviewSource, type GestureSource, GlMat3, type GridLayerOpts, type GridSlotConfig, GroupIcon, Guide, type GuideSnapOptions, type GuidesLayerOpts, HANDLE_BASE_PX, HandIcon, InertiaConfig as HandToolInertiaConfig, type HandleDragEnd, type HandleDragPoint, type HeadlessCanvasLike, type HostAnchorAlign, type HostAnchorInput, type HostAnchorOffset, type HostAnchorStyle, IDENTITY_JOINT, type IconProps, ImageIcon, type ImageNodeData, type ImageRasterSize, type ImageStatus, type IndicatorStyle, InertiaConfig, InsertAdapter, InsertBehavior, InsertExtras, type InsertNodeFactory, type InsertOp, type InsertOverlayStyle, type InsertPreviewExtent, type InsertPreviewGeometry, type InsertPreviewLike, type InsertPreviewOverlay, IntersectIcon, type Joint, type JointTransform, KIT_SHAPE_KINDS, KIT_STANDARD_ACTION_IDS, type KeyModifiers, type KeyState, type KeyStateAttachOptions, type LabelOptions, LassoHitMode, LassoIcon, LassoSelectAdapter, LassoSelectBehavior, type LayerCommandCache, type LayerDrawFailure, LayerEnumerableAdapter, type LayerGroup, type LayerHit, type LayerSlotValue, type LayersMap, LayoutDropTargetMode, LayoutSnap, LayoutStrategy, type LifecycleAnimation, LineIcon, type LinePoint, type LinkedCursorOptions, MESH_BAKE_SIZE, MESH_GRADIENT_KIND, MINIMAP_CENTER, MINIMAP_PAN, MIXED, MOVE_ANCHORS, type MarkerCtx, type MarkerEntry, type MarkerPaint, type MarkerSite, type MarkerSiteRequest, type MeshGradientFill, type MeshPatch, type MeshPoint, MinimapCanvas, type MinimapCanvasProps, type MinimapContributionOptions, type MinimapFit, type Mixed, type MomentumOptions, MoveAdapter, MoveBehavior, type NestedHitOpts, type NestedHitTester, type NodeClientRect, type NodeInk, type NodeInkCtx, type NodeOverlayFrame, type NodePaintCtx, type NodeProperties, type NodePropertiesEntry, type NodeRouting, type NodeRoutingEntry, type NodeShapeEntry, type NodeSilhouetteCtx, type OpenFilePickerOptions, OrderedAdapter, OriginProjection, type OverlayPoint, type OverlayVisibilityId, PAINTED_CURSOR_LAYER_ID, PATH_ANCHOR_CHROME_ID, type PaintBindContext, type PaintKind, type PaintKindEditorProps, type PaintKindEntry, type PaintProgram, PanBounds, type ParallaxOpts, PasteIcon, Path, type PathAnchor, type PathAnchorAffordanceOptions, PathBuilder, PathDrawCommand, type PathEditingOverlayStyle, type PathInWorldPose, type PenAnchor, PenIcon, type PenPreviewStyle, type PenScratch, type PenSubpath, PencilIcon, type PencilPoint, PickHud, type PickHudProps, type PickTopMostHitAdapter, type PinchZoomOptions, type PixelRenderPlan, type PointInPathOptions, type PointInTextPoseOpts, PointSnapBehavior, PointerProviderIfRoot, type PointerSample, type PointerStylusState, PolygonIcon, PolygonPath, type PolygonPoint, type Pose, PoseComposition, PoseDescriptor, type PoseFeed, PoseOverrides, type PoseRotation, type PoseRun, type PoseRunCtx, type PoseRunStep, type PoseSource, type PosedNode, type PressureToWidthOptions, type PreviewNode, ROTATION_HANDLE_BASE_PX, type RangeStyle, type RasterImage, type RecordedBounds, type RecordedHandle, type RecordedHitbox, type RecordedLayer, type RecordedOrigin, type RecordedSnap, RectIcon, RectPath, RectPose, RedoIcon, type RegisterNodeShapeOptions, RegisteredOp, type RenderLayer, type RenderSceneToCanvasArgs, type RenderSceneToPixelsArgs, type ReorderDirection, ResizeAdapter, type ResolvableView, type ResolvedOverlay, type Rig, type RigApply, type RigApplyContext, type RigScene, RotateAdapter, RotateBehavior, RotatedPose, type RotationAffordanceOptions, type RotationHandle, type RotationScratch, type RunStylePatch, SampledTrack, type ScalarOrXY, Scene, SceneAdapter, type SceneAdapterSelection, SceneCanvas, type SceneCanvasAdapter, type SceneCanvasApi, type SceneCanvasHit, type SceneCanvasProps, Node$1 as SceneNode, type SceneNodeClientRectOpts, SceneRegistry, type SceneSlotConfig, type SceneToAdapterOptions, SceneViewCanvas, type SceneViewCanvasProps, type SceneViewDrawOne, type SceneViewLayers, type SelectAdapter, type SelectFromLassoOptions, SelectIcon, SelectionContextProvider, SelectionContextProviderIfRoot, type SelectionContextValue, type SelectionHandleStyle, type SelectionHandlesLayerOpts, type SelectionOutlineLayerOpts, type SelectionOverlayLayerOpts, type SelectionOverlaySlotConfig, SendBackwardIcon, SendToBackIcon, SerializedScene, type SetFlagResult, type SetPathFields, ShaderProgramHandle, type ShapeCoversPointOptions, type ShapeKind, type SharedAnchor, Simulation, SimulationNode, type Skeleton, type Slew, type SlewRates, SliceDep, type SnapPattern, type SnapPointOptions, SnapStrategy, type SplitByLineOptions, type SpringPoseOptions, SpringPresetName, type SpringVertexColorsOptions, type StaggerVertexColorsOptions, type StandardSlotConfig, type StandardSlotName, StarIcon, type StarPoint, type StartEditOptions, type StyleKey, type StylusData, SubtractIcon, type SurfaceContribution, SvgIngestOptions, TOOL_PREF_KINDS, TextDrawCommand, type TextEditClipRect, type TextEditScreenPose, type TextEditSelection, TextIcon, type ThresholdDragHandle, type ThresholdDragOptions, type TileBleed, type TileGridOptions, type TilePatternOpts, type TilePeriod, type TileRange, type Tool, type ToolBundle, type ToolDef, type ToolPref, type ToolPrefBoolean, type ToolPrefBooleanControl, type ToolPrefColor, type ToolPrefCustom, type ToolPrefEnum, type ToolPrefEnumControl, type ToolPrefEnumEncoding, type ToolPrefGroup, type ToolPrefKind, type ToolPrefLeaf, type ToolPrefNumber, type ToolPrefNumberControl, type ToolPrefNumberFormat, type ToolPrefNumberUnit, type ToolPrefObject, type ToolPrefPaint, type ToolPrefString, type ToolPrefStringControl, type ToolsApi, type TweenPoseOptions, type TweenVertexColorsOptions, UNION_OF_CHILDREN, UndoIcon, UngroupIcon, UnionIcon, Unit, UnitEntry, UnitSystem, UnitValue, UnknownIcon, type UseAlignOptions, type UseAlignReturn, UseAnimatorOptions, type UseArrayAdapterOptions, type UseBooleansOptions, type UseBooleansReturn, type UseCanvasFocusOptions, type UseDistributeOptions, type UseDistributeReturn, type UseDragGestureOptions, type UseDragRadialOptions, type UseDragRectOptions, type UseEyedropperToolOptions, type UseGridCellHoverOptions, type UseGridCellHoverReturn, type UseGuidesReturn, type UseHandToolOptions, type UseHandleDragOptions, type UseHandleDragReturn, type UseHostAnchorOptions, type UseHoverTrackingArgs, type UseImageToolOptions, type UseKeyStateOptions, type UseKeybindingsOptions, type UseLassoSelectOptions, type UseLassoToolOptions, UseMoveOptions, type UseNodeOverlayFrameOptions, type UsePenToolOptions, type UsePointerStylusOptions, type UsePolygonToolOptions, type UsePoseRunOptions, UseResizeOptions, type UseResizePolicyOptions, type UseRotateOptions, UseSceneOptions, type UseSceneTextEditOptions, type UseSceneTextEditReturn, type UseSceneTrivialOptions, type UseSelectToolOptions, type UseSelectionOptions, UseSimulationOptions, type UseStandardActionsOptions, type UseStarToolOptions, type UseTextEditOptions, type UseTextEditReturn, type UseToolsOptions, VERSION, type VelocityTracker, VertexColorChannel, ViewAnimationOptions, ViewApi, type ViewRect, type ViewResolver, type ViewTarget, type ViewTransform, ViewportDims, type ViewportLayer, type ViewportToolDef, type ViewportZoomAnimateOptions, type ViewportZoomOptions, type VisibilityRules, type VisibleRaf, type VisibleRafOptions, type VisibleRafTarget, WHEEL_ZOOM_STEP, WeaselProvider, type WheelInput, type WheelPanOptions, type WheelPanOpts, ZOOM_FLOOR, type ZoomBound, type ZoomClampOpts, type ZoomFactor, _resetMarkersForTests, _resetPaintKindsForTests, actionIs, actionShortcuts, alignDeltaFor, alignInsertBehavior, alignMoveBehavior, alignResizeBehavior, always, and, animateLifecycle, animateOnSetPose, annulusSemiAxes, applyOpsTo, applyStyleToRange, areaSelectAction, arrayAdapter, asPaint, axisAlignedBounds, bakeMesh, bezierCubic, bezierQuadratic, bindRig, blendPoses, boundsOfPath, buildChromeCtx, buildSceneViewCommands, canBringForward, canHover, canSendBackward, capabilityAll, capabilityIn, capabilityIs, capabilityNot, caretIndexAt, cellAt, centerRootOn, charOffsetToDomPosition, circlePath, clampView, clearSelectionAction, clipboardCopyAction, clipboardCutAction, clipboardPasteAction, cloneAction, coarsePointer, composeAffordanceLayer, composePath, composeSelectionPose, computeFitView, computeFitViewport, computeIndicatorCommand, computeWheelAction, cond, constrainTo45, containedThenNearest, cornerWeights, countPathAnchors, createCellHighlightLayer, createChildrenLayer, createCornerResizeAffordance, createDebugOverlayLayer, createDebugSink, createDeleteOp, createGridLayer, createGuidesLayer, createHistory, createInsertOp, createKeyState, createLinkedCursorContribution, createMinimapContribution, createMoveToIndexOp, createNodeProperties, createNodeRouting, createPaintedCursorLayer, createParallaxLayer, createPathAnchorAffordances, createPathEditingOverlayLayer, createPathLayer, createPenPreviewLayer, createPoseFeed, createPoseOverrides, createReorderOp, createReparentOp, createRotationAffordance, createScene, createSelectionHandlesLayer, createSelectionOutlineLayer, createSelectionOverlayLayer, createSetDataOp, createSetLayerOp, createSetPathOp, createSetSelectionOp, createSetTextOp, createSlew, createTextLayer, createTilePattern, createTiledLayer, createTransformOp, createVelocityTracker, createViewResolver, createViewportLayer, crosshairRects, cycleFill, cycleVertexColors, decomposePath, defaultCommitAdapter, defaultDrawOne, defaultLabelTextRenderer, defaultNodeProperties, defaultNodeRouting, defaultVisibilityRules, defineTool, defineViewportTool, definesFrame, deriveAlignmentGuides, deriveParallaxView, derivedDepOf, derivedPose, dispatchApplyBatch, dlog, documentPose, domPositionToCharOffset, domToRuns, drawLayers, drawOneLayer, dwarn, editAnchorsAction, effectivePose, effectiveRangeStyle, enterTextEditAction, enumerateAnchors, evalPatch, fillInPoseFrame, fillToBoundsFrame, findNodeShape, findShapeInk, findShapeSilhouette, fitTextPose, fitToBounds, fitZoom, flattenPreviews, focused, forEachCoalesced, freeform, gateLayer, gesturing, getAlpha01, getImageBitmap, getMarker, getNodeShapes, getPaintKind, getStylusData, gradientForBounds, gradientGeometry, guideSnapStrategy, hexToRgba, hitAffordanceRegions, hitAnchor, hitRotationHandle, hostAnchorCss, hostAnchorRect, hovering, hoveringSelected, imageStatus, inferredNodeProperties, inferredNodeRouting, insertAction, insertPreviewExtent, interpolateView, isBuiltinToolPref, isDebugEnabled, isGradientFill, isLayerPainted, isLayerVisible, isMeshGradientFill, isPatternSpec, isTensorPatch, isValidPatch, isVectorImageSrc, keySpecShortcut, lassoSelectAction, listMarkers, listPaintKinds, makePinchZoomAction, makeViewportWheelPanAction, makeViewportZoomAction, markerDrawCommands, markerInset, markerKeyOf, markerSites, matchAlignment, meanScale, mergeAlphaFromPrev, mergeContributions, meshBounds, meshGradientXml, minimapCenterAction, minimapPanAction, modeIn, modeIs, modeNot, modifierHeld, momentum, moveAction, multiActive, nearest, nearestWithin, nestedHitTester, never, nodeHasFlag, none, normalizeHex, normalizeView, normalizeZoom, not, nurbs, openFilePicker, or, paintAlpha, paintKindOf, paintWithAlpha, paintWithColor, parseColor, parseColorToRgba255, parseDebugFlags, patchBounds, patchCorner, pathContainsPoint, pathContainsPolygon, pathContainsRect, pathDistanceToPoint, pathDivide, pathExclude, pathFromD, pathInPoseFrame, pathInWorld, pathIntersect, pathIntersectsPolygon, pathIntersectsRect, pathOriginProjection, pathPoseDescriptor, pathSubtract, pathToAnchors, pathUnion, pickTopMostHit, pinchZoomAction, planPixelRender, pointInPath, pointInTextPose, poseRotationOf, prefUnit, pressureToWidth, pxExtent, rainbowVertexColors, rebuildOp, rectMarkerPath, registerMarker, registerNodeShape, registerOpFactory, registerPaintKind, registeredOpNames, renderLabel, renderSceneToCanvas, renderSceneToPixels, resizeAction, resolveColor, resolveFillPattern, resolveMarkerSize, resolveOverlays, resolvePatternSpec, resolvePreviews, resolveSkeleton, resolveVisibility, rgbaToHex, rigidRigApply, rotateAction, rotateAroundAABBCenter, rotatePathAround, rotationDegreesUnit, rotationHandle, roundRectPath, roundToCell, runsToDom, sampleGradientStops, sampleTrack, scaleDelta, scalePathToBounds, sceneFromJSON, sceneNodeClientRect, sceneSelectionStore, sceneToAdapter, screenToWorld, seedMeshPatch, selectFromLasso, selectionAtLeast, selectionEmpty, selectionIs, setFlagOverRange, shapeCoversPoint, slewToward, sliceAction, snap, snapPoint, solid, solidVertexColors, spiro, splitPathByLine, splitSubpaths, springPose, springVertexColors, squarePath, staggerVertexColors, startThresholdDrag, strokeInsets, strokeOf, strokeWith, styleAtRange, subscribeImageReady, textCommand, textCommandFromPose, textCommandFromRuns, tileGrid, tiledProject, toHex8, transformPath, translatePath, trimPolyline, tweenPose, tweenVertexColors, unionAABB, unionBounds, unionBoundsPath, unionOfChildren, unionOfChildrenVia, useAlign, useAnimator, useArrayAdapter, useAutoCenter, useBooleans, useBooleansAdapter, useCanvasFocus, useCanvasSize, useDeviceProfile, useDistribute, useDragGesture, useDragHandle, useDragRadial, useDragRect, useDropZone, useEllipseTool, useEyedropperTool, useGridCellHover, useGuides, useHandTool, useHandleDrag, useHostAnchor, useHoverTracking, useImageTool, useKeyState, useKeybindings, useLassoTool, useLineTool, useNodeOverlayFrame, usePenTool, usePencilTool, usePinchGesture, usePointerStylus, usePolygonTool, usePoseCompositionDepSource, usePoseDescriptorDepSource, usePoseRun, usePublishSelection, useRectTool, useResizePolicy, useRig, useScene, useSceneAdapter, useSceneTextEdit, useSelectTool, useSelection, useSelectionContext, useSimulation, useSliceDep, useStandardActions, useStarTool, useTextEdit, useTextTool, useTools, useVelocityTracker, useVisibleRaf, viewToTransform, viewZoom, viewportDragPanAction, viewportWheelPanAction, viewportZoomAction, viewportsAt, wheelPan, wheelZoom, wheelZoomFactor, when, withAlpha01, withCoord, withGradientKind, withinPxBox, withinPxRadius, worldEditToStorage, worldToScreen, zoomAt, zoomAtLeast };