@jamesyong42/infinite-canvas 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- package/dist/advanced.cjs +61 -24
- package/dist/advanced.cjs.map +1 -1
- package/dist/advanced.d.cts +180 -64
- package/dist/advanced.d.cts.map +1 -1
- package/dist/advanced.d.mts +180 -64
- package/dist/advanced.d.mts.map +1 -1
- package/dist/advanced.mjs +29 -12
- package/dist/advanced.mjs.map +1 -1
- package/dist/devtools.cjs +22 -22
- package/dist/devtools.cjs.map +1 -1
- package/dist/devtools.d.cts +2 -2
- package/dist/devtools.d.cts.map +1 -1
- package/dist/devtools.d.mts +2 -2
- package/dist/devtools.d.mts.map +1 -1
- package/dist/devtools.mjs +2 -2
- package/dist/devtools.mjs.map +1 -1
- package/dist/{hooks-BwY7rRHg.mjs → ecs-3kimUV5Z.mjs} +238 -74
- package/dist/ecs-3kimUV5Z.mjs.map +1 -0
- package/dist/{hooks-DHShH86C.cjs → ecs-B4QrqfvQ.cjs} +320 -108
- package/dist/ecs-B4QrqfvQ.cjs.map +1 -0
- package/dist/hooks-CtP02JNt.cjs +3762 -0
- package/dist/hooks-CtP02JNt.cjs.map +1 -0
- package/dist/hooks-gsQDDE56.mjs +3494 -0
- package/dist/hooks-gsQDDE56.mjs.map +1 -0
- package/dist/index-3GY7T8JM.d.mts +480 -0
- package/dist/index-3GY7T8JM.d.mts.map +1 -0
- package/dist/index-B7B1tRPl.d.cts +480 -0
- package/dist/index-B7B1tRPl.d.cts.map +1 -0
- package/dist/index-DSdbSQ_t.d.cts +1451 -0
- package/dist/index-DSdbSQ_t.d.cts.map +1 -0
- package/dist/index-Dj9odADH.d.mts +1451 -0
- package/dist/index-Dj9odADH.d.mts.map +1 -0
- package/dist/index.cjs +3865 -643
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +315 -138
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +315 -138
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3767 -571
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/SelectionRenderer-CR2PBQwx.d.cts +0 -105
- package/dist/SelectionRenderer-CR2PBQwx.d.cts.map +0 -1
- package/dist/SelectionRenderer-DlsBstAq.d.mts +0 -105
- package/dist/SelectionRenderer-DlsBstAq.d.mts.map +0 -1
- package/dist/WebGLWidgetLayer-BBMuwzHq.cjs +0 -3560
- package/dist/WebGLWidgetLayer-BBMuwzHq.cjs.map +0 -1
- package/dist/WebGLWidgetLayer-C3p1tnpm.mjs +0 -3375
- package/dist/WebGLWidgetLayer-C3p1tnpm.mjs.map +0 -1
- package/dist/engine-BfbvWXSk.d.mts +0 -982
- package/dist/engine-BfbvWXSk.d.mts.map +0 -1
- package/dist/engine-CCjuFMC-.d.cts +0 -982
- package/dist/engine-CCjuFMC-.d.cts.map +0 -1
- package/dist/hooks-BwY7rRHg.mjs.map +0 -1
- package/dist/hooks-DHShH86C.cjs.map +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,113 +1,25 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
import {
|
|
3
|
-
import { ComponentInit, ComponentType, ComponentType as ComponentType$1, EntityId, EntityId as EntityId$1, ResourceType, ResourceType as ResourceType$1, TagType, TagType as TagType$1, Unsubscribe } from "@jamesyong42/reactive-ecs";
|
|
1
|
+
import { $ as FrameCameraState, $t as Visible, A as createWidgetRegistry, At as CursorHintData, B as WebGLPass, Bt as OverlapCandidate, C as R3FWidget, Ct as CardPreset, D as WidgetInteractionHandlers, Dt as ContainerChildren, E as isR3FWidget, Et as ContainerCamera, F as ProfilerStats, Ft as InteractionRoleType, G as SnapResult, Gt as Selectable, H as EntityBounds, Ht as ParentFrame, I as R3FPhaseHistogram, It as Layer, J as BreakpointConfigResource, Jt as SnapSource, Kt as Selected, L as R3FSample, Lt as LayerData, M as EcsStats, Mt as Dragging, N as FrameTimeStats, Nt as InteractionRole, O as WidgetRegistry, Ot as Culled, Pt as InteractionRoleData, Q as CursorResourceData, Qt as TweenEasing, R as R3FStats, Rt as LayerName, S as DomWidgetProps, St as CardOverlapHotPoint, T as Widget$1, Tt as Container, U as EqualSpacingIndicator, Ut as Resizable, V as WebGLStats, Vt as OverlapTarget, W as SnapGuide, Wt as ResizeHandlePos, X as CardPresetsResource, Xt as Transform2D, Y as CameraResource, Yt as SnapTarget, Z as CursorResource, Zt as TransformTween, _ as Archetype, _t as screenToWorld, a as Modifiers, b as createArchetypeRegistry, bt as CSSCursor, c as Command, d as EntitySnapshot, dt as Vec2, en as Widget, et as LayerOrderData, f as MoveCommand, ft as aabbToRect, g as snapshotEntity, gt as rectToAABB, h as rehydrateEntity, ht as pointInAABB, i as LayoutEngineConfig, it as RootCameraResource, j as StandardSchemaV1, jt as Draggable, k as WidgetSurface, kt as CursorHint, l as CommandBuffer, lt as AABB, m as SetComponentCommand, mt as intersectsAABB, n as FrameChanges, nn as WidgetData, nt as NavigationFrame, o as PointerDirective, ot as ViewportResource, p as ResizeCommand, pt as clamp, q as Breakpoint, qt as SelectionFrame, r as LayoutEngine, rn as ZIndex, rt as NavigationStackResource, s as VisibleEntity, st as ZoomConfigResource, t as createLayoutEngine, tn as WidgetBreakpoint, tt as LayerOrderResource, u as ConsumeCommand, ut as Rect, v as ArchetypeRegistry, vt as worldToScreen, w as R3FWidgetProps, wt as Children, x as DomWidget, xt as Card, y as SpawnOptions, yt as Active, z as TickSample, zt as Locked } from "./index-Dj9odADH.mjs";
|
|
2
|
+
import { A as SelectionConfig, D as SnapGuideConfig, E as DEFAULT_SNAP_GUIDE_CONFIG, F as ResolvedWidget, I as WidgetResolverProvider, L as useWidgetResolver, M as DEFAULT_GRID_CONFIG, N as GridConfig, O as DEFAULT_SELECTION_CONFIG, V as useContainerRef, c as useSharedTexture, d as useWidgetPhase, k as SelectionBounds, l as useWidgetAnimation, m as R3FPhase, n as isOutOfBand, o as useSharedGeometry, r as selectBand, s as useSharedMaterial, t as ZOOM_BANDS, u as useWidgetInvalidate, z as useLayoutEngine } from "./index-3GY7T8JM.mjs";
|
|
3
|
+
import { ComponentInit, ComponentType, ComponentType as ComponentType$1, EntityId, EntityId as EntityId$1, ResourceType, ResourceType as ResourceType$1, TagType, TagType as TagType$1, Unsubscribe, World, World as World$1 } from "@jamesyong42/reactive-ecs";
|
|
4
4
|
import * as React$1 from "react";
|
|
5
5
|
import React, { ReactNode } from "react";
|
|
6
6
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
7
7
|
|
|
8
|
-
//#region src/
|
|
9
|
-
/** Props accepted by `<CardFrame>`. */
|
|
10
|
-
interface CardFrameProps {
|
|
11
|
-
entityId: EntityId$1;
|
|
12
|
-
children?: React$1.ReactNode;
|
|
13
|
-
className?: string;
|
|
14
|
-
/** Merged into the frame div's style (wins over defaults). */
|
|
15
|
-
style?: React$1.CSSProperties;
|
|
16
|
-
}
|
|
8
|
+
//#region src/ecs/hierarchy.d.ts
|
|
17
9
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
10
|
+
* Walks the `ParentFrame` chain from `descendant` upward and returns
|
|
11
|
+
* true iff `candidate` appears on that chain (inclusive check excluded:
|
|
12
|
+
* an entity is not considered its own ancestor).
|
|
21
13
|
*
|
|
22
|
-
*
|
|
14
|
+
* Used by `CardContainer`'s default `canAccept` as a cycle-guard so
|
|
15
|
+
* dragging a container onto one of its own descendants is rejected
|
|
16
|
+
* before any mutation fires (RFC-004 § Phase 5). Cheap — the chain is
|
|
17
|
+
* typically 0–3 deep. Capped at a sane depth to defend against
|
|
18
|
+
* pathological / malformed worlds.
|
|
23
19
|
*/
|
|
24
|
-
declare function
|
|
25
|
-
entityId,
|
|
26
|
-
children,
|
|
27
|
-
className,
|
|
28
|
-
style
|
|
29
|
-
}: CardFrameProps): _$react_jsx_runtime0.JSX.Element;
|
|
30
|
-
/** Options passed to `createCardWidget`. */
|
|
31
|
-
interface CreateCardWidgetOptions<T> {
|
|
32
|
-
/** Unique widget type id. Doubles as the archetype id. */
|
|
33
|
-
type: string;
|
|
34
|
-
/** Which iOS preset the card sits at. Fixed for the widget's lifetime (change via `engine.set(id, Card, { preset })`). */
|
|
35
|
-
size: CardPreset;
|
|
36
|
-
/** Standard Schema v1-compatible validator for the widget's data. */
|
|
37
|
-
schema: StandardSchemaV1<any, T>;
|
|
38
|
-
/** Default data for new instances; merged with user-supplied data at spawn. */
|
|
39
|
-
defaultData: T;
|
|
40
|
-
/** The card's rendered content. Receives entityId + typed data. */
|
|
41
|
-
render: React$1.ComponentType<{
|
|
42
|
-
entityId: EntityId$1;
|
|
43
|
-
data: T;
|
|
44
|
-
}>;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Returns a paired widget + archetype for an iOS-style card. Register both
|
|
48
|
-
* with `createLayoutEngine({ widgets: [card.widget], archetypes: [card.archetype] })`
|
|
49
|
-
* (or via `engine.registerWidget` / `engine.registerArchetype`) and spawn with
|
|
50
|
-
* `engine.spawn('your-card-type', { at, data })`.
|
|
51
|
-
*
|
|
52
|
-
* The produced widget is non-resizable (Selectable + Draggable only), wrapped
|
|
53
|
-
* in `<CardFrame>`, and spawns with a `Card` component so `cardSystem` enforces
|
|
54
|
-
* the preset size each tick.
|
|
55
|
-
*/
|
|
56
|
-
declare function createCardWidget<T>(opts: CreateCardWidgetOptions<T>): {
|
|
57
|
-
widget: DomWidget<T>;
|
|
58
|
-
archetype: Archetype;
|
|
59
|
-
};
|
|
20
|
+
declare function isFrameAncestorOf(world: World$1, candidate: EntityId$1, descendant: EntityId$1): boolean;
|
|
60
21
|
//#endregion
|
|
61
|
-
//#region src/react/
|
|
62
|
-
/** Background options for a geometry card widget. */
|
|
63
|
-
type GeometryCardBackground = 'card' | 'transparent' | {
|
|
64
|
-
/** Hex color for the card back (e.g. '#1C1C1E' dark, '#F2F2F7' light). */color: string; /** PBR roughness. Default 0.55. */
|
|
65
|
-
roughness?: number; /** PBR metalness. Default 0. */
|
|
66
|
-
metalness?: number;
|
|
67
|
-
};
|
|
68
|
-
/** Props passed to the user's geometry component. */
|
|
69
|
-
interface GeometryCardRenderProps<T> {
|
|
70
|
-
entityId: EntityId$1;
|
|
71
|
-
data: T;
|
|
72
|
-
/** Widget width in world units. */
|
|
73
|
-
width: number;
|
|
74
|
-
/** Widget height in world units. */
|
|
75
|
-
height: number;
|
|
76
|
-
}
|
|
77
|
-
/** Options for `createGeometryCardWidget`. */
|
|
78
|
-
interface CreateGeometryCardWidgetOptions<T> {
|
|
79
|
-
/** Unique widget type id. Doubles as the archetype id. */
|
|
80
|
-
type: string;
|
|
81
|
-
/** iOS card preset size. */
|
|
82
|
-
size: CardPreset;
|
|
83
|
-
/** Standard Schema v1-compatible validator for the widget's data. */
|
|
84
|
-
schema: StandardSchemaV1<any, T>;
|
|
85
|
-
/** Default data for new instances. */
|
|
86
|
-
defaultData: T;
|
|
87
|
-
/**
|
|
88
|
-
* `'card'` (default) renders a dark iOS-style card back behind the geometry.
|
|
89
|
-
* `'transparent'` skips the card so the geometry floats over the canvas.
|
|
90
|
-
* Object form customises the back's color and PBR parameters.
|
|
91
|
-
*/
|
|
92
|
-
background?: GeometryCardBackground;
|
|
93
|
-
/** The 3D content rendered in local space (origin at centre). */
|
|
94
|
-
geometry: React$1.ComponentType<GeometryCardRenderProps<T>>;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Returns a paired R3F widget + archetype for a card-shaped 3D widget.
|
|
98
|
-
* Behaves like {@link createCardWidget} — fixed preset size, non-resizable,
|
|
99
|
-
* no engine-drawn selection frame, and lifts on drag (scale + z) — but
|
|
100
|
-
* renders a three.js scene instead of DOM content.
|
|
101
|
-
*
|
|
102
|
-
* Lighting: this helper adds no lights. Declare your own in the `geometry`
|
|
103
|
-
* component (typically a local `pointLight` scoped with `distance`).
|
|
104
|
-
*/
|
|
105
|
-
declare function createGeometryCardWidget<T>(opts: CreateGeometryCardWidgetOptions<T>): {
|
|
106
|
-
widget: R3FWidget<T>;
|
|
107
|
-
archetype: Archetype;
|
|
108
|
-
};
|
|
109
|
-
//#endregion
|
|
110
|
-
//#region src/react/hooks.d.ts
|
|
22
|
+
//#region src/react/hooks/ecs.d.ts
|
|
111
23
|
/**
|
|
112
24
|
* Reactively reads an ECS component from an entity.
|
|
113
25
|
* Returns undefined if the entity doesn't have the component. Re-renders when the component changes.
|
|
@@ -166,93 +78,358 @@ declare function useRegisteredComponents(): ComponentType$1[];
|
|
|
166
78
|
*/
|
|
167
79
|
declare function useRegisteredTags(): TagType$1[];
|
|
168
80
|
//#endregion
|
|
81
|
+
//#region src/react/hooks/widget.d.ts
|
|
82
|
+
/**
|
|
83
|
+
* Returns the custom data attached to a widget entity.
|
|
84
|
+
* Use the generic parameter for type safety: `useWidgetData<MyData>(entityId)`. Re-renders when data changes.
|
|
85
|
+
*/
|
|
86
|
+
declare function useWidgetData<T = Record<string, unknown>>(entityId: EntityId$1): T;
|
|
87
|
+
/**
|
|
88
|
+
* Returns the current responsive breakpoint for a widget based on its screen-space size.
|
|
89
|
+
* Re-renders when the breakpoint changes.
|
|
90
|
+
*/
|
|
91
|
+
declare function useBreakpoint(entityId: EntityId$1): Breakpoint;
|
|
92
|
+
/**
|
|
93
|
+
* Returns child entity IDs of a container entity.
|
|
94
|
+
* Re-renders when children are added or removed.
|
|
95
|
+
*/
|
|
96
|
+
declare function useChildren(entityId: EntityId$1): EntityId$1[];
|
|
97
|
+
/**
|
|
98
|
+
* Returns whether the entity is currently selected.
|
|
99
|
+
* Re-renders when the entity's selection state changes.
|
|
100
|
+
*/
|
|
101
|
+
declare function useIsSelected(entityId: EntityId$1): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Returns a function to update the widget's custom data.
|
|
104
|
+
* Merges the patch into existing data via shallow spread.
|
|
105
|
+
*/
|
|
106
|
+
declare function useUpdateWidget(entityId: EntityId$1): (patch: Record<string, unknown>) => void;
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region src/react/widgets/overlap-glow.d.ts
|
|
109
|
+
/**
|
|
110
|
+
* Overlap glow — visual config for the drag-over highlight applied to
|
|
111
|
+
* cards (DOM `CardChrome` + R3F `CompositionMaterial`).
|
|
112
|
+
*
|
|
113
|
+
* Single-layer design: a soft radial gradient at the hot point in a
|
|
114
|
+
* neutral color, blended normally over the card content. Deliberately
|
|
115
|
+
* simple — no backdrop-filter, no saturation/contrast tricks, no rim,
|
|
116
|
+
* no bloom. Three tunables: color, alpha (per state), falloff radius.
|
|
117
|
+
*
|
|
118
|
+
* Flows two ways from `<InfiniteCanvas overlapGlow={...} />`:
|
|
119
|
+
* 1. CSS custom properties on the canvas container — read by
|
|
120
|
+
* `CardChrome` via `var(--ic-glow-…, fallback)` for DOM widgets.
|
|
121
|
+
* 2. Shared shader uniforms — every `CompositionMaterial` instance
|
|
122
|
+
* references the same uniform objects, so mutating
|
|
123
|
+
* {@link sharedGlowUniforms} updates all R3F cards at once.
|
|
124
|
+
*
|
|
125
|
+
* Each `[candidate, target]` pair holds the value used while the card
|
|
126
|
+
* is just an overlap candidate vs. when the drop will actually consume.
|
|
127
|
+
*/
|
|
128
|
+
interface OverlapGlowConfig {
|
|
129
|
+
/** Inner glow RGB color in 0-1 range. */
|
|
130
|
+
glowColor: [number, number, number];
|
|
131
|
+
/** Inner-glow alpha, [candidate, target]. */
|
|
132
|
+
glowAlpha: [number, number];
|
|
133
|
+
/**
|
|
134
|
+
* Inner-glow blur radius in CSS px — the blur arg of the inset
|
|
135
|
+
* box-shadow that paints the glow. Matches `--glow-size` in the
|
|
136
|
+
* reference (card-light.html). [candidate, target].
|
|
137
|
+
*/
|
|
138
|
+
glowSize: [number, number];
|
|
139
|
+
/** Rim RGB color in 0-1 range (independent of glowColor). */
|
|
140
|
+
rimColor: [number, number, number];
|
|
141
|
+
/** Rim width in CSS px (DOM only — shader rim thickness is fixed). */
|
|
142
|
+
rimWidth: number;
|
|
143
|
+
/** Rim alpha at the bright (hot-point-side) end, [candidate, target]. */
|
|
144
|
+
rimAlpha: [number, number];
|
|
145
|
+
/**
|
|
146
|
+
* Rim radial-gradient circle radius in CSS px. Matches `600px circle`
|
|
147
|
+
* in the reference. Larger = more uniform rim (less pooling toward
|
|
148
|
+
* hot point); smaller = tighter pooling.
|
|
149
|
+
*/
|
|
150
|
+
rimRadius: number;
|
|
151
|
+
}
|
|
152
|
+
declare const DEFAULT_OVERLAP_GLOW_CONFIG: OverlapGlowConfig;
|
|
153
|
+
//#endregion
|
|
169
154
|
//#region src/react/InfiniteCanvas.d.ts
|
|
170
155
|
/** Imperative handle exposed via `ref` on InfiniteCanvas for programmatic control. */
|
|
171
156
|
interface InfiniteCanvasHandle {
|
|
172
|
-
/** Moves the camera to the specified world coordinates. */
|
|
173
157
|
panTo(worldX: number, worldY: number): void;
|
|
174
|
-
/** Sets the zoom level directly. */
|
|
175
158
|
zoomTo(zoom: number): void;
|
|
176
|
-
/** Adjusts camera to fit all entities in the viewport. */
|
|
177
159
|
zoomToFit(padding?: number): void;
|
|
178
|
-
/** Undoes the last command or command group. */
|
|
179
160
|
undo(): void;
|
|
180
|
-
/** Redoes the last undone command. */
|
|
181
161
|
redo(): void;
|
|
182
|
-
/** Returns the underlying LayoutEngine instance. */
|
|
183
162
|
getEngine(): LayoutEngine;
|
|
184
163
|
}
|
|
185
|
-
/** Props for the InfiniteCanvas component. */
|
|
186
164
|
interface InfiniteCanvasProps {
|
|
187
165
|
/**
|
|
188
166
|
* The LayoutEngine instance powering this canvas. Create with `createLayoutEngine()`.
|
|
189
|
-
* Widgets and archetypes must be registered on the engine — via config or
|
|
190
|
-
* `engine.registerWidget` / `engine.registerArchetype`.
|
|
191
167
|
*/
|
|
192
168
|
engine: LayoutEngine;
|
|
193
169
|
/** Grid configuration. Pass `false` to disable the grid entirely. */
|
|
194
170
|
grid?: Partial<GridConfig> | false;
|
|
171
|
+
/**
|
|
172
|
+
* Drag-over glow configuration — controls every visual parameter of
|
|
173
|
+
* the highlight applied to a card while another card is being dragged
|
|
174
|
+
* over it. Drives both the DOM `CardChrome` (via CSS custom
|
|
175
|
+
* properties on the canvas container) and the R3F compositor shader
|
|
176
|
+
* (via shared uniforms) so the look stays in sync across widget
|
|
177
|
+
* surfaces.
|
|
178
|
+
*/
|
|
179
|
+
overlapGlow?: Partial<OverlapGlowConfig>;
|
|
195
180
|
/** Selection highlight style configuration. */
|
|
196
181
|
selection?: Partial<SelectionConfig>;
|
|
197
|
-
/**
|
|
182
|
+
/** Snap guide overlay style (color, line width, alpha). */
|
|
183
|
+
snapGuides?: Partial<SnapGuideConfig>;
|
|
198
184
|
onSelectionChange?: (entityIds: EntityId$1[]) => void;
|
|
199
|
-
/** Called when the camera (pan/zoom) changes. */
|
|
200
185
|
onCameraChange?: (camera: {
|
|
201
186
|
x: number;
|
|
202
187
|
y: number;
|
|
203
188
|
zoom: number;
|
|
204
189
|
}) => void;
|
|
205
|
-
/** Called when navigation depth changes (entering/exiting containers). */
|
|
206
190
|
onNavigationChange?: (depth: number, containerId: EntityId$1 | null) => void;
|
|
207
|
-
/** CSS class name applied to the root container div. */
|
|
208
191
|
className?: string;
|
|
209
|
-
/** Inline styles applied to the root container div. */
|
|
210
192
|
style?: React.CSSProperties;
|
|
211
|
-
/** Overlay children (toolbars, panels) rendered on top of the canvas. */
|
|
212
193
|
children?: React.ReactNode;
|
|
194
|
+
/**
|
|
195
|
+
* R3F nodes mounted at the root of the internal `<Canvas>`, as siblings
|
|
196
|
+
* of the widget compositor. Use this for canvas-level Three.js state
|
|
197
|
+
* that must survive widget lifecycle — drei's `<Environment>` is the
|
|
198
|
+
* canonical case: mounting it in a widget ties global IBL to that
|
|
199
|
+
* widget's `Active` state, so consuming it into a folder or
|
|
200
|
+
* navigating away kills lighting for every other widget. A root-level
|
|
201
|
+
* `<Environment>` stays mounted as long as the canvas itself is, and
|
|
202
|
+
* the compositor propagates its texture to every per-widget scene.
|
|
203
|
+
*/
|
|
204
|
+
r3fRoot?: React.ReactNode;
|
|
213
205
|
}
|
|
214
206
|
declare const InfiniteCanvas: React.ForwardRefExoticComponent<InfiniteCanvasProps & React.RefAttributes<InfiniteCanvasHandle>>;
|
|
215
207
|
//#endregion
|
|
216
|
-
//#region src/react/WidgetProvider.d.ts
|
|
208
|
+
//#region src/react/widgets/WidgetProvider.d.ts
|
|
217
209
|
interface WidgetProviderProps {
|
|
218
210
|
engine: LayoutEngine;
|
|
219
211
|
children?: ReactNode;
|
|
220
212
|
}
|
|
221
213
|
/**
|
|
222
214
|
* Bridges the engine's widget registry to React context so WidgetSlot /
|
|
223
|
-
*
|
|
215
|
+
* R3FManager can resolve components by type.
|
|
224
216
|
*/
|
|
225
217
|
declare function WidgetProvider({
|
|
226
218
|
engine,
|
|
227
219
|
children
|
|
228
220
|
}: WidgetProviderProps): _$react_jsx_runtime0.JSX.Element;
|
|
229
221
|
//#endregion
|
|
230
|
-
//#region src/react/
|
|
231
|
-
/**
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
222
|
+
//#region src/react/widgets/CardChrome.d.ts
|
|
223
|
+
/** Visual variants for the card chrome — matches the iOS card aesthetics. */
|
|
224
|
+
interface CardChromeProps {
|
|
225
|
+
/**
|
|
226
|
+
* True while the user is actively dragging this card. Triggers a CSS
|
|
227
|
+
* transition: scale up slightly and deepen the drop shadow.
|
|
228
|
+
*/
|
|
229
|
+
lifted?: boolean;
|
|
230
|
+
/** Border radius in CSS pixels. Default 21.67 — the iOS card spec. */
|
|
231
|
+
radius?: number;
|
|
232
|
+
/**
|
|
233
|
+
* Background color (any valid CSS background value). Skip / pass
|
|
234
|
+
* `'transparent'` if the children paint their own background.
|
|
235
|
+
*/
|
|
236
|
+
background?: string;
|
|
237
|
+
/** Extra class name appended to the chrome div. */
|
|
238
|
+
className?: string;
|
|
239
|
+
/** Style overrides — merged after the chrome's defaults. */
|
|
240
|
+
style?: React$1.CSSProperties;
|
|
241
|
+
/**
|
|
242
|
+
* Drag-over highlight state. When `overlapCandidate` is true, a single
|
|
243
|
+
* radial gradient glow renders at `(hotX, hotY)` in [0,1] local coords
|
|
244
|
+
* with intensity scaled by `hotStrength`. `overlapTarget` swaps between
|
|
245
|
+
* the candidate / target alpha + falloff CSS vars (configured via
|
|
246
|
+
* `OverlapGlowConfig`). All five props default to a no-op.
|
|
247
|
+
*/
|
|
248
|
+
overlapCandidate?: boolean;
|
|
249
|
+
overlapTarget?: boolean;
|
|
250
|
+
hotX?: number;
|
|
251
|
+
hotY?: number;
|
|
252
|
+
hotStrength?: number;
|
|
253
|
+
/** Children render *inside* the chrome (clipped to its rounded shape). */
|
|
254
|
+
children?: React$1.ReactNode;
|
|
255
|
+
}
|
|
236
256
|
/**
|
|
237
|
-
*
|
|
238
|
-
*
|
|
257
|
+
* iOS-style card chrome — rounded background, hairline ring, soft drop
|
|
258
|
+
* shadow, and a smooth lift (scale + stronger shadow) when `lifted` is
|
|
259
|
+
* true. A single soft radial-gradient glow renders at the hot point
|
|
260
|
+
* during overlap (no rim, no bloom, no backdrop-filter). Glow color,
|
|
261
|
+
* alpha, and falloff are tunable via the `--ic-glow-*` CSS vars set by
|
|
262
|
+
* `<InfiniteCanvas overlapGlow={…}>`.
|
|
263
|
+
*
|
|
264
|
+
* Pure presentational component with no ECS or compositor coupling. Used
|
|
265
|
+
* by both the DOM `createCardWidget` (wrapping inner content) and the R3F
|
|
266
|
+
* `createGeometryCardWidget` (rendered via a DOM slot beneath the WebGL
|
|
267
|
+
* canvas, with the 3D content floating on top).
|
|
239
268
|
*/
|
|
240
|
-
declare function
|
|
269
|
+
declare function CardChrome({
|
|
270
|
+
lifted,
|
|
271
|
+
radius,
|
|
272
|
+
background,
|
|
273
|
+
className,
|
|
274
|
+
style,
|
|
275
|
+
overlapCandidate,
|
|
276
|
+
overlapTarget,
|
|
277
|
+
hotX,
|
|
278
|
+
hotY,
|
|
279
|
+
hotStrength,
|
|
280
|
+
children
|
|
281
|
+
}: CardChromeProps): _$react_jsx_runtime0.JSX.Element;
|
|
282
|
+
//#endregion
|
|
283
|
+
//#region src/react/widgets/card.d.ts
|
|
284
|
+
/** Props accepted by `<CardFrame>`. */
|
|
285
|
+
interface CardFrameProps {
|
|
286
|
+
entityId: EntityId$1;
|
|
287
|
+
children?: React$1.ReactNode;
|
|
288
|
+
className?: string;
|
|
289
|
+
/** Merged into the frame div's style (wins over defaults). */
|
|
290
|
+
style?: React$1.CSSProperties;
|
|
291
|
+
}
|
|
241
292
|
/**
|
|
242
|
-
*
|
|
243
|
-
*
|
|
293
|
+
* Visual chrome for an iOS-style card. Reads the entity's `Dragging` tag
|
|
294
|
+
* and forwards `lifted` to {@link CardChrome}, which owns the actual
|
|
295
|
+
* appearance (rounded corners, hairline ring, soft drop shadow, lift
|
|
296
|
+
* transition). Same chrome is used by R3F geometry cards via a DOM slot
|
|
297
|
+
* beneath the WebGL canvas, so DOM and 3D cards stay visually identical.
|
|
244
298
|
*/
|
|
245
|
-
declare function
|
|
299
|
+
declare function CardFrame({
|
|
300
|
+
entityId,
|
|
301
|
+
children,
|
|
302
|
+
className,
|
|
303
|
+
style
|
|
304
|
+
}: CardFrameProps): _$react_jsx_runtime0.JSX.Element;
|
|
305
|
+
/** Options passed to `createCardWidget`. */
|
|
306
|
+
interface CreateCardWidgetOptions<T> {
|
|
307
|
+
/** Unique widget type id. Doubles as the archetype id. */
|
|
308
|
+
type: string;
|
|
309
|
+
/** Which iOS preset the card sits at. Fixed for the widget's lifetime (change via `engine.set(id, Card, { preset })`). */
|
|
310
|
+
size: CardPreset;
|
|
311
|
+
/** Standard Schema v1-compatible validator for the widget's data. */
|
|
312
|
+
schema: StandardSchemaV1<any, T>;
|
|
313
|
+
/** Default data for new instances; merged with user-supplied data at spawn. */
|
|
314
|
+
defaultData: T;
|
|
315
|
+
/** The card's rendered content. Receives entityId + typed data. */
|
|
316
|
+
render: React$1.ComponentType<{
|
|
317
|
+
entityId: EntityId$1;
|
|
318
|
+
data: T;
|
|
319
|
+
}>;
|
|
320
|
+
/**
|
|
321
|
+
* Drop-to-consume contract — what this card accepts as a parent
|
|
322
|
+
* (RFC-004 § Phase 1). Stamped onto the archetype's `Card`
|
|
323
|
+
* component so every spawned instance carries it. Defaults to `[]`.
|
|
324
|
+
*/
|
|
325
|
+
accepts?: readonly string[];
|
|
326
|
+
/**
|
|
327
|
+
* Drop-to-consume contract — what this card provides when dropped
|
|
328
|
+
* as a child. Stamped onto the archetype's `Card` component.
|
|
329
|
+
* Defaults to `[]`.
|
|
330
|
+
*/
|
|
331
|
+
provides?: readonly string[];
|
|
332
|
+
/**
|
|
333
|
+
* Optional widget-type interaction handlers — `onReceiveChild` /
|
|
334
|
+
* `canAccept` / `applyMutation` / `revertMutation` (RFC-004 § Phase 1).
|
|
335
|
+
* Handlers live on the widget binding so every instance of this
|
|
336
|
+
* type shares them.
|
|
337
|
+
*/
|
|
338
|
+
interaction?: WidgetInteractionHandlers;
|
|
339
|
+
}
|
|
246
340
|
/**
|
|
247
|
-
* Returns
|
|
248
|
-
*
|
|
341
|
+
* Returns a paired widget + archetype for an iOS-style card. Register both
|
|
342
|
+
* with `createLayoutEngine({ widgets: [card.widget], archetypes: [card.archetype] })`
|
|
343
|
+
* (or via `engine.registerWidget` / `engine.registerArchetype`) and spawn with
|
|
344
|
+
* `engine.spawn('your-card-type', { at, data })`.
|
|
345
|
+
*
|
|
346
|
+
* The produced widget is non-resizable (Selectable + Draggable only), wrapped
|
|
347
|
+
* in `<CardFrame>`, and spawns with a `Card` component so `cardSystem` enforces
|
|
348
|
+
* the preset size each tick.
|
|
249
349
|
*/
|
|
250
|
-
declare function
|
|
350
|
+
declare function createCardWidget<T>(opts: CreateCardWidgetOptions<T>): {
|
|
351
|
+
widget: DomWidget<T>;
|
|
352
|
+
archetype: Archetype;
|
|
353
|
+
};
|
|
354
|
+
//#endregion
|
|
355
|
+
//#region src/r3f/widgets/geometry-card.d.ts
|
|
356
|
+
/** Props passed to the user's geometry component. */
|
|
357
|
+
interface GeometryCardRenderProps<T> {
|
|
358
|
+
entityId: EntityId$1;
|
|
359
|
+
data: T;
|
|
360
|
+
/** Widget width in world units. */
|
|
361
|
+
width: number;
|
|
362
|
+
/** Widget height in world units. */
|
|
363
|
+
height: number;
|
|
364
|
+
}
|
|
365
|
+
/** Options for `createGeometryCardWidget`. */
|
|
366
|
+
interface CreateGeometryCardWidgetOptions<T> {
|
|
367
|
+
/** Unique widget type id. Doubles as the archetype id. */
|
|
368
|
+
type: string;
|
|
369
|
+
/** iOS card preset size. */
|
|
370
|
+
size: CardPreset;
|
|
371
|
+
/** Standard Schema v1-compatible validator for the widget's data. */
|
|
372
|
+
schema: StandardSchemaV1<any, T>;
|
|
373
|
+
/** Default data for new instances. */
|
|
374
|
+
defaultData: T;
|
|
375
|
+
/**
|
|
376
|
+
* If false, the widget skips the `Card` component entirely — no DOM
|
|
377
|
+
* `<CardChrome>` (no rounded background, no drop shadow), no
|
|
378
|
+
* lift-on-drag CSS transition, no compositor discard rect for
|
|
379
|
+
* neighbours. The widget's 3D content floats over the canvas
|
|
380
|
+
* background and just stacks on top of overlapping R3F content
|
|
381
|
+
* during drag (via the compositor's renderOrder bump).
|
|
382
|
+
*
|
|
383
|
+
* Default true.
|
|
384
|
+
*/
|
|
385
|
+
withCard?: boolean;
|
|
386
|
+
/**
|
|
387
|
+
* CSS background for the chrome's surface — only meaningful when
|
|
388
|
+
* `withCard` is true. Stored on the `Card` component so the chrome
|
|
389
|
+
* + any future tooling can read it. Defaults to the dark iOS card.
|
|
390
|
+
*/
|
|
391
|
+
background?: string;
|
|
392
|
+
/** The 3D content rendered in local space (origin at centre). */
|
|
393
|
+
geometry: React$1.ComponentType<GeometryCardRenderProps<T>>;
|
|
394
|
+
/**
|
|
395
|
+
* Drop-to-consume contract — what this card accepts as a parent
|
|
396
|
+
* (RFC-004 § Phase 1). Only meaningful when `withCard` is true,
|
|
397
|
+
* since non-card widgets don't participate in the consume mechanic.
|
|
398
|
+
*/
|
|
399
|
+
accepts?: readonly string[];
|
|
400
|
+
/**
|
|
401
|
+
* Drop-to-consume contract — what this card provides as a child.
|
|
402
|
+
* Only meaningful when `withCard` is true.
|
|
403
|
+
*/
|
|
404
|
+
provides?: readonly string[];
|
|
405
|
+
/**
|
|
406
|
+
* Optional widget-type interaction handlers. Only meaningful when
|
|
407
|
+
* `withCard` is true; dispatch logic skips non-card widgets.
|
|
408
|
+
*/
|
|
409
|
+
interaction?: WidgetInteractionHandlers;
|
|
410
|
+
}
|
|
251
411
|
/**
|
|
252
|
-
* Returns a
|
|
253
|
-
*
|
|
412
|
+
* Returns a paired R3F widget + archetype for a card-shaped 3D widget.
|
|
413
|
+
* Behaves like {@link createCardWidget} — fixed preset size, non-resizable,
|
|
414
|
+
* no engine-drawn selection frame, and lifts on drag (scale + z) — but
|
|
415
|
+
* renders a three.js scene instead of DOM content.
|
|
416
|
+
*
|
|
417
|
+
* The card body and drop shadow are rendered as DOM `<CardChrome>`
|
|
418
|
+
* beneath the WebGL canvas, not inside the FBO. The user's `geometry`
|
|
419
|
+
* component renders ONLY the 3D content; chrome is provided by the
|
|
420
|
+
* `Card` ECS component (the source of truth for all card-shaped
|
|
421
|
+
* behavior — chrome, lift, drag-promote, compositor discard).
|
|
422
|
+
*
|
|
423
|
+
* Pass `withCard: false` to skip card behavior entirely (bare 3D
|
|
424
|
+
* widget — no chrome, no lift, no discard).
|
|
425
|
+
*
|
|
426
|
+
* Lighting: this helper adds no lights. Declare your own in the `geometry`
|
|
427
|
+
* component (typically a local `pointLight` scoped with `distance`).
|
|
254
428
|
*/
|
|
255
|
-
declare function
|
|
429
|
+
declare function createGeometryCardWidget<T>(opts: CreateGeometryCardWidgetOptions<T>): {
|
|
430
|
+
widget: R3FWidget<T>;
|
|
431
|
+
archetype: Archetype;
|
|
432
|
+
};
|
|
256
433
|
//#endregion
|
|
257
|
-
export { type AABB, Active, type Archetype, type ArchetypeRegistry, type Breakpoint, BreakpointConfigResource, type CSSCursor, CameraResource, Card, CardFrame, type CardFrameProps, type CardPreset, CardPresetsResource, Children, type Command, CommandBuffer, type ComponentInit, type ComponentType, Container, type CreateCardWidgetOptions, type CreateGeometryCardWidgetOptions, CursorHint, type CursorHintData, CursorResource, type CursorResourceData, DEFAULT_GRID_CONFIG, DEFAULT_SELECTION_CONFIG, type DomWidget, type DomWidgetProps, Draggable, Dragging, type EcsStats, type EntityBounds, type EntityId, type EqualSpacingIndicator, type
|
|
434
|
+
export { type AABB, Active, type Archetype, type ArchetypeRegistry, type Breakpoint, BreakpointConfigResource, type CSSCursor, CameraResource, Card, CardChrome, type CardChromeProps, CardFrame, type CardFrameProps, CardOverlapHotPoint, type CardPreset, CardPresetsResource, Children, type Command, CommandBuffer, type ComponentInit, type ComponentType, ConsumeCommand, Container, ContainerCamera, ContainerChildren, type CreateCardWidgetOptions, type CreateGeometryCardWidgetOptions, Culled, CursorHint, type CursorHintData, CursorResource, type CursorResourceData, DEFAULT_GRID_CONFIG, DEFAULT_OVERLAP_GLOW_CONFIG, DEFAULT_SELECTION_CONFIG, DEFAULT_SNAP_GUIDE_CONFIG, type DomWidget, type DomWidgetProps, Draggable, Dragging, type EcsStats, type EntityBounds, type EntityId, type EntitySnapshot, type EqualSpacingIndicator, type FrameCameraState, type FrameChanges, type FrameTimeStats, type GeometryCardRenderProps, type GridConfig, InfiniteCanvas, type InfiniteCanvasHandle, InteractionRole, type InteractionRoleData, type InteractionRoleType, Layer, type LayerData, type LayerName, type LayerOrderData, LayerOrderResource, type LayoutEngine, type LayoutEngineConfig, Locked, type Modifiers, MoveCommand, type NavigationFrame, NavigationStackResource, OverlapCandidate, type OverlapGlowConfig, OverlapTarget, ParentFrame, type PointerDirective, type ProfilerStats, type R3FPhase, type R3FPhaseHistogram, type R3FSample, type R3FStats, type R3FWidget, type R3FWidgetProps, type Rect, Resizable, ResizeCommand, type ResizeHandlePos, type ResolvedWidget, type ResourceType, RootCameraResource, Selectable, Selected, type SelectionBounds, type SelectionConfig, SelectionFrame, SetComponentCommand, type SnapGuide, type SnapGuideConfig, type SnapResult, SnapSource, SnapTarget, type SpawnOptions, type StandardSchemaV1, type TagType, type TickSample, Transform2D, TransformTween, type TweenEasing, type Unsubscribe, type Vec2, ViewportResource, Visible, type VisibleEntity, type WebGLPass, type WebGLStats, Widget, WidgetBreakpoint, WidgetData, type Widget$1 as WidgetDef, type WidgetInteractionHandlers, WidgetProvider, type WidgetRegistry, WidgetResolverProvider, type WidgetSurface, type World, ZIndex, ZOOM_BANDS, ZoomConfigResource, aabbToRect, clamp, createArchetypeRegistry, createCardWidget, createGeometryCardWidget, createLayoutEngine, createWidgetRegistry, intersectsAABB, isFrameAncestorOf, isOutOfBand, isR3FWidget, pointInAABB, rectToAABB, rehydrateEntity, screenToWorld, selectBand, snapshotEntity, useAllEntities, useBreakpoint, useCamera, useChildren, useComponent, useContainerRef, useEntityComponents, useEntityTags, useIsSelected, useLayoutEngine, useQuery, useRegisteredComponents, useRegisteredTags, useResource, useSharedGeometry, useSharedMaterial, useSharedTexture, useTag, useTaggedEntities, useUpdateWidget, useWidgetAnimation, useWidgetData, useWidgetInvalidate, useWidgetPhase, useWidgetResolver, worldToScreen };
|
|
258
435
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/ecs/hierarchy.ts","../src/react/hooks/ecs.ts","../src/react/hooks/widget.ts","../src/react/widgets/overlap-glow.ts","../src/react/InfiniteCanvas.tsx","../src/react/widgets/WidgetProvider.tsx","../src/react/widgets/CardChrome.tsx","../src/react/widgets/card.tsx","../src/r3f/widgets/geometry-card.tsx"],"mappings":"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"}
|