@jamesyong42/infinite-canvas 1.0.0 → 1.2.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.
Files changed (54) hide show
  1. package/README.md +170 -9
  2. package/dist/SelectionRenderer-CR2PBQwx.d.cts +105 -0
  3. package/dist/SelectionRenderer-CR2PBQwx.d.cts.map +1 -0
  4. package/dist/SelectionRenderer-DlsBstAq.d.mts +105 -0
  5. package/dist/SelectionRenderer-DlsBstAq.d.mts.map +1 -0
  6. package/dist/WebGLWidgetLayer-BBMuwzHq.cjs +3560 -0
  7. package/dist/WebGLWidgetLayer-BBMuwzHq.cjs.map +1 -0
  8. package/dist/WebGLWidgetLayer-C3p1tnpm.mjs +3375 -0
  9. package/dist/WebGLWidgetLayer-C3p1tnpm.mjs.map +1 -0
  10. package/dist/advanced.cjs +110 -165
  11. package/dist/advanced.cjs.map +1 -1
  12. package/dist/advanced.d.cts +58 -40
  13. package/dist/advanced.d.cts.map +1 -0
  14. package/dist/advanced.d.mts +99 -0
  15. package/dist/advanced.d.mts.map +1 -0
  16. package/dist/advanced.mjs +105 -0
  17. package/dist/advanced.mjs.map +1 -0
  18. package/dist/devtools.cjs +654 -0
  19. package/dist/devtools.cjs.map +1 -0
  20. package/dist/devtools.d.cts +23 -0
  21. package/dist/devtools.d.cts.map +1 -0
  22. package/dist/devtools.d.mts +23 -0
  23. package/dist/devtools.d.mts.map +1 -0
  24. package/dist/devtools.mjs +652 -0
  25. package/dist/devtools.mjs.map +1 -0
  26. package/dist/engine-BfbvWXSk.d.mts +982 -0
  27. package/dist/engine-BfbvWXSk.d.mts.map +1 -0
  28. package/dist/engine-CCjuFMC-.d.cts +982 -0
  29. package/dist/engine-CCjuFMC-.d.cts.map +1 -0
  30. package/dist/hooks-BwY7rRHg.mjs +425 -0
  31. package/dist/hooks-BwY7rRHg.mjs.map +1 -0
  32. package/dist/hooks-DHShH86C.cjs +707 -0
  33. package/dist/hooks-DHShH86C.cjs.map +1 -0
  34. package/dist/index.cjs +909 -803
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.cts +199 -67
  37. package/dist/index.d.cts.map +1 -0
  38. package/dist/index.d.mts +258 -0
  39. package/dist/index.d.mts.map +1 -0
  40. package/dist/index.mjs +855 -0
  41. package/dist/index.mjs.map +1 -0
  42. package/package.json +47 -15
  43. package/dist/SelectionRenderer-CeWSNZT8.d.cts +0 -891
  44. package/dist/SelectionRenderer-CeWSNZT8.d.ts +0 -891
  45. package/dist/advanced.d.ts +0 -81
  46. package/dist/advanced.js +0 -124
  47. package/dist/advanced.js.map +0 -1
  48. package/dist/chunk-VSHXWTJH.cjs +0 -3228
  49. package/dist/chunk-VSHXWTJH.cjs.map +0 -1
  50. package/dist/chunk-Z6JQQOWL.js +0 -3142
  51. package/dist/chunk-Z6JQQOWL.js.map +0 -1
  52. package/dist/index.d.ts +0 -126
  53. package/dist/index.js +0 -602
  54. package/dist/index.js.map +0 -1
@@ -0,0 +1,707 @@
1
+ require("./WebGLWidgetLayer-BBMuwzHq.cjs");
2
+ let _jamesyong42_reactive_ecs = require("@jamesyong42/reactive-ecs");
3
+ let react = require("react");
4
+ //#region src/components.ts
5
+ /** Position, size, and rotation of an entity in local coordinates (world units). */
6
+ const Transform2D = (0, _jamesyong42_reactive_ecs.defineComponent)("Transform2D", {
7
+ x: 0,
8
+ y: 0,
9
+ width: 100,
10
+ height: 100,
11
+ rotation: 0
12
+ });
13
+ /** Computed world-space bounding box. Read-only -- updated by the transform propagation system. */
14
+ const WorldBounds = (0, _jamesyong42_reactive_ecs.defineComponent)("WorldBounds", {
15
+ worldX: 0,
16
+ worldY: 0,
17
+ worldWidth: 0,
18
+ worldHeight: 0
19
+ });
20
+ /** Rendering and hit-test ordering. Higher values render on top. */
21
+ const ZIndex = (0, _jamesyong42_reactive_ecs.defineComponent)("ZIndex", { value: 0 });
22
+ /** Parent entity reference. Used for nested containers and handle sync. */
23
+ const Parent = (0, _jamesyong42_reactive_ecs.defineComponent)("Parent", { id: 0 });
24
+ /** Child entity IDs. Used for nested containers and handle sync. */
25
+ const Children = (0, _jamesyong42_reactive_ecs.defineComponent)("Children", { ids: [] });
26
+ /** Marks an entity as a renderable widget with a type identifier and rendering surface. */
27
+ const Widget = (0, _jamesyong42_reactive_ecs.defineComponent)("Widget", {
28
+ surface: "dom",
29
+ type: ""
30
+ });
31
+ /** Arbitrary application data attached to a widget entity. Access via useWidgetData(). */
32
+ const WidgetData = (0, _jamesyong42_reactive_ecs.defineComponent)("WidgetData", { data: {} });
33
+ /** Computed responsive breakpoint based on screen-space size. Read-only. */
34
+ const WidgetBreakpoint = (0, _jamesyong42_reactive_ecs.defineComponent)("WidgetBreakpoint", {
35
+ current: "normal",
36
+ screenWidth: 0,
37
+ screenHeight: 0
38
+ });
39
+ /**
40
+ * Marks an entity as an iOS-style card with a fixed preset size.
41
+ * The `cardSystem` reconciles `Transform2D.width/height` from the preset
42
+ * each tick, so cards cannot be resized freely — change `preset` instead.
43
+ */
44
+ const Card = (0, _jamesyong42_reactive_ecs.defineComponent)("Card", { preset: "small" });
45
+ /** Marks an entity as an enterable container (double-click/double-tap to enter). */
46
+ const Container = (0, _jamesyong42_reactive_ecs.defineComponent)("Container", { enterable: true });
47
+ /**
48
+ * Rectangular interactable region anchored relative to the parent entity's WorldBounds.
49
+ * Anchor values are in 0..1 space: 0 = parent min edge, 1 = parent max edge.
50
+ * Widget bodies do NOT need Hitbox — their WorldBounds is already their hit area.
51
+ * Hitbox is only for sub-entities (handles, ports) whose position is parent-relative.
52
+ */
53
+ const Hitbox = (0, _jamesyong42_reactive_ecs.defineComponent)("Hitbox", {
54
+ anchorX: 0,
55
+ anchorY: 0,
56
+ width: 0,
57
+ height: 0
58
+ });
59
+ /**
60
+ * Declares what happens when this entity is hit, plus its hit-test priority.
61
+ * Canonical layers: 0=canvas, 5=widget body, 10=edge handles, 15=corner handles, 20=reserved.
62
+ */
63
+ const InteractionRole = (0, _jamesyong42_reactive_ecs.defineComponent)("InteractionRole", {
64
+ layer: 0,
65
+ role: { type: "canvas" }
66
+ });
67
+ /**
68
+ * Component on the parent entity listing the EntityIds of its spawned handle children.
69
+ * Enables O(1) cascade destroy without a reverse-index scan of Parent components.
70
+ */
71
+ const HandleSet = (0, _jamesyong42_reactive_ecs.defineComponent)("HandleSet", { ids: [] });
72
+ /** Declares the cursor this entity requests when hovered and when active. */
73
+ const CursorHint = (0, _jamesyong42_reactive_ecs.defineComponent)("CursorHint", {
74
+ hover: "default",
75
+ active: "default"
76
+ });
77
+ /** Marks an entity as selectable by click or marquee. */
78
+ const Selectable = (0, _jamesyong42_reactive_ecs.defineTag)("Selectable");
79
+ /** Marks an entity as draggable via pointer interaction. */
80
+ const Draggable = (0, _jamesyong42_reactive_ecs.defineTag)("Draggable");
81
+ /** Marks an entity as resizable via edge/corner handles. */
82
+ const Resizable = (0, _jamesyong42_reactive_ecs.defineTag)("Resizable");
83
+ /** Prevents an entity from being moved or resized. */
84
+ const Locked = (0, _jamesyong42_reactive_ecs.defineTag)("Locked");
85
+ /** Indicates the entity is currently selected. */
86
+ const Selected = (0, _jamesyong42_reactive_ecs.defineTag)("Selected");
87
+ /**
88
+ * Indicates the entity is currently being dragged by the user.
89
+ * Added after the drag dead-zone is crossed; removed on pointer up/cancel.
90
+ * Renderers read this to apply transient drag affordances (e.g. scale/shadow lift).
91
+ */
92
+ const Dragging = (0, _jamesyong42_reactive_ecs.defineTag)("Dragging");
93
+ /**
94
+ * Entities with this tag get the engine-drawn selection + hover outline frame.
95
+ * Granted automatically to Selectable entities unless explicitly disabled via
96
+ * `Archetype.interactive.selectionFrame: false`. Widgets that render their own
97
+ * selected/hover chrome (e.g. iOS-style cards) opt out.
98
+ */
99
+ const SelectionFrame = (0, _jamesyong42_reactive_ecs.defineTag)("SelectionFrame");
100
+ /** Indicates the entity is currently being interacted with (drag, resize). */
101
+ const Active = (0, _jamesyong42_reactive_ecs.defineTag)("Active");
102
+ /** Indicates the entity is within the visible viewport. Set by the cull system. */
103
+ const Visible = (0, _jamesyong42_reactive_ecs.defineTag)("Visible");
104
+ //#endregion
105
+ //#region src/resources.ts
106
+ /**
107
+ * Output sink for the cursor system. Written by cursorSystem each tick;
108
+ * read by the RAF loop to apply style.cursor on the root container div.
109
+ */
110
+ const CursorResource = (0, _jamesyong42_reactive_ecs.defineResource)("Cursor", { cursor: "default" });
111
+ /** Camera state: world-space position (x, y) and zoom level. Updated by pan/zoom gestures. */
112
+ const CameraResource = (0, _jamesyong42_reactive_ecs.defineResource)("Camera", {
113
+ x: 0,
114
+ y: 0,
115
+ zoom: 1
116
+ });
117
+ /** Viewport dimensions in CSS pixels and device pixel ratio. Updated on resize. */
118
+ const ViewportResource = (0, _jamesyong42_reactive_ecs.defineResource)("Viewport", {
119
+ width: 0,
120
+ height: 0,
121
+ dpr: 1
122
+ });
123
+ /** Minimum and maximum zoom levels. */
124
+ const ZoomConfigResource = (0, _jamesyong42_reactive_ecs.defineResource)("ZoomConfig", {
125
+ min: .1,
126
+ max: 5
127
+ });
128
+ /** Screen-space pixel thresholds for responsive breakpoints (micro/compact/normal/expanded/detailed). */
129
+ const BreakpointConfigResource = (0, _jamesyong42_reactive_ecs.defineResource)("BreakpointConfig", {
130
+ micro: 40,
131
+ compact: 120,
132
+ normal: 500,
133
+ expanded: 1200
134
+ });
135
+ /** Navigation stack for hierarchical container traversal. */
136
+ const NavigationStackResource = (0, _jamesyong42_reactive_ecs.defineResource)("NavigationStack", {
137
+ frames: [{
138
+ containerId: null,
139
+ camera: {
140
+ x: 0,
141
+ y: 0,
142
+ zoom: 1
143
+ }
144
+ }],
145
+ changed: false
146
+ });
147
+ /**
148
+ * iOS-style card preset size map. Lookup happens by `Card.preset`; the
149
+ * `cardSystem` stamps `Transform2D.width/height` from the resolved size.
150
+ *
151
+ * Defaults mirror iOS widget conventions — 155×155 tile + 19px gap.
152
+ * Override at `createLayoutEngine({ cardPresets })` for tablet-scale or
153
+ * custom design systems.
154
+ */
155
+ const CardPresetsResource = (0, _jamesyong42_reactive_ecs.defineResource)("CardPresets", {
156
+ presets: {
157
+ small: {
158
+ width: 155,
159
+ height: 155
160
+ },
161
+ medium: {
162
+ width: 329,
163
+ height: 155
164
+ },
165
+ large: {
166
+ width: 329,
167
+ height: 345
168
+ },
169
+ xl: {
170
+ width: 329,
171
+ height: 535
172
+ }
173
+ },
174
+ /** Gap between adjacent tiles (future tile-snap system reads this). */
175
+ gap: 19
176
+ });
177
+ //#endregion
178
+ //#region src/react/context.ts
179
+ const EngineContext = (0, react.createContext)(null);
180
+ const EngineProvider = EngineContext.Provider;
181
+ const ContainerRefContext = (0, react.createContext)(null);
182
+ const ContainerRefProvider = ContainerRefContext.Provider;
183
+ function useContainerRef() {
184
+ return (0, react.useContext)(ContainerRefContext);
185
+ }
186
+ /**
187
+ * Returns the LayoutEngine instance from the nearest InfiniteCanvas context.
188
+ * Throws if used outside an InfiniteCanvas provider.
189
+ */
190
+ function useLayoutEngine() {
191
+ const engine = (0, react.useContext)(EngineContext);
192
+ if (!engine) throw new Error("useLayoutEngine must be used within an <InfiniteCanvas>");
193
+ return engine;
194
+ }
195
+ const WidgetResolverContext = (0, react.createContext)(null);
196
+ const WidgetResolverProvider = WidgetResolverContext.Provider;
197
+ function useWidgetResolver() {
198
+ return (0, react.useContext)(WidgetResolverContext);
199
+ }
200
+ //#endregion
201
+ //#region src/react/hooks.ts
202
+ function shallowEqual(a, b) {
203
+ const keysA = Object.keys(a);
204
+ const keysB = Object.keys(b);
205
+ if (keysA.length !== keysB.length) return false;
206
+ for (const key of keysA) if (a[key] !== b[key]) return false;
207
+ return true;
208
+ }
209
+ /**
210
+ * Reactively reads an ECS component from an entity.
211
+ * Returns undefined if the entity doesn't have the component. Re-renders when the component changes.
212
+ */
213
+ function useComponent(entity, type) {
214
+ const engine = useLayoutEngine();
215
+ const [value, setValue] = (0, react.useState)(() => engine.get(entity, type));
216
+ (0, react.useEffect)(() => {
217
+ const current = engine.get(entity, type);
218
+ setValue(current === void 0 ? void 0 : { ...current });
219
+ return engine.world.onComponentChanged(type, (_id, _prev, next) => {
220
+ setValue(next === void 0 ? void 0 : { ...next });
221
+ }, entity);
222
+ }, [
223
+ engine,
224
+ entity,
225
+ type
226
+ ]);
227
+ return value;
228
+ }
229
+ /**
230
+ * Reactively checks whether an entity has a tag.
231
+ * Re-renders when the tag is added or removed.
232
+ */
233
+ function useTag(entity, type) {
234
+ const engine = useLayoutEngine();
235
+ const [has, setHas] = (0, react.useState)(() => engine.world.hasTag(entity, type));
236
+ (0, react.useEffect)(() => {
237
+ setHas(engine.world.hasTag(entity, type));
238
+ const unsub1 = engine.world.onTagAdded(type, () => setHas(true), entity);
239
+ const unsub2 = engine.world.onTagRemoved(type, () => setHas(false), entity);
240
+ return () => {
241
+ unsub1();
242
+ unsub2();
243
+ };
244
+ }, [
245
+ engine,
246
+ entity,
247
+ type
248
+ ]);
249
+ return has;
250
+ }
251
+ /**
252
+ * Reactively reads an ECS resource (singleton data).
253
+ * Re-renders when any field of the resource changes (shallow comparison).
254
+ */
255
+ function useResource(type) {
256
+ const engine = useLayoutEngine();
257
+ const [value, setValue] = (0, react.useState)(() => ({ ...engine.world.getResource(type) }));
258
+ const prevRef = (0, react.useRef)(void 0);
259
+ (0, react.useEffect)(() => {
260
+ const current = engine.world.getResource(type);
261
+ if (current !== void 0) {
262
+ prevRef.current = current;
263
+ setValue({ ...current });
264
+ }
265
+ return engine.onFrame(() => {
266
+ const current = engine.world.getResource(type);
267
+ if (prevRef.current === void 0 || !shallowEqual(current, prevRef.current)) {
268
+ prevRef.current = current;
269
+ setValue({ ...current });
270
+ }
271
+ });
272
+ }, [engine, type]);
273
+ return value;
274
+ }
275
+ /**
276
+ * Returns entity IDs matching all specified component/tag types.
277
+ * Re-renders when the result set changes.
278
+ */
279
+ function useQuery(...types) {
280
+ const engine = useLayoutEngine();
281
+ const typesRef = (0, react.useRef)(types);
282
+ typesRef.current = types;
283
+ const typesKey = types.map((t) => t.name).join("\0");
284
+ const [result, setResult] = (0, react.useState)(() => engine.world.query(...types));
285
+ (0, react.useEffect)(() => {
286
+ setResult(engine.world.query(...typesRef.current));
287
+ return engine.onFrame(() => {
288
+ const next = engine.world.query(...typesRef.current);
289
+ setResult((prev) => {
290
+ if (prev.length !== next.length) return next;
291
+ for (let i = 0; i < prev.length; i++) if (prev[i] !== next[i]) return next;
292
+ return prev;
293
+ });
294
+ });
295
+ }, [engine, typesKey]);
296
+ return result;
297
+ }
298
+ /**
299
+ * Returns all entity IDs that have the specified tag.
300
+ * Re-renders when entities are tagged or untagged.
301
+ */
302
+ function useTaggedEntities(type) {
303
+ const engine = useLayoutEngine();
304
+ const [result, setResult] = (0, react.useState)(() => engine.world.queryTagged(type));
305
+ (0, react.useEffect)(() => {
306
+ setResult([...engine.world.queryTagged(type)]);
307
+ const update = () => setResult([...engine.world.queryTagged(type)]);
308
+ const unsub1 = engine.world.onTagAdded(type, update);
309
+ const unsub2 = engine.world.onTagRemoved(type, update);
310
+ return () => {
311
+ unsub1();
312
+ unsub2();
313
+ };
314
+ }, [engine, type]);
315
+ return result;
316
+ }
317
+ /**
318
+ * Returns the current camera state {x, y, zoom}.
319
+ * Shorthand for useResource(CameraResource).
320
+ */
321
+ function useCamera() {
322
+ const cam = useResource(CameraResource);
323
+ return {
324
+ x: cam?.x ?? 0,
325
+ y: cam?.y ?? 0,
326
+ zoom: cam?.zoom ?? 1
327
+ };
328
+ }
329
+ function sameIdList(a, b) {
330
+ if (a.length !== b.length) return false;
331
+ for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;
332
+ return true;
333
+ }
334
+ function sameTypeList(a, b) {
335
+ if (a.length !== b.length) return false;
336
+ for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;
337
+ return true;
338
+ }
339
+ /**
340
+ * Reactively returns the IDs of every live entity in the world.
341
+ * Updates on entity create and destroy.
342
+ */
343
+ function useAllEntities() {
344
+ const engine = useLayoutEngine();
345
+ const [entities, setEntities] = (0, react.useState)(() => engine.world.getAllEntities());
346
+ (0, react.useEffect)(() => {
347
+ const refresh = () => {
348
+ const next = engine.world.getAllEntities();
349
+ setEntities((prev) => sameIdList(prev, next) ? prev : next);
350
+ };
351
+ refresh();
352
+ const unsub1 = engine.world.onEntityCreated(refresh);
353
+ const unsub2 = engine.world.onEntityDestroyed(refresh);
354
+ return () => {
355
+ unsub1();
356
+ unsub2();
357
+ };
358
+ }, [engine]);
359
+ return entities;
360
+ }
361
+ /**
362
+ * Reactively returns the ComponentTypes currently attached to an entity.
363
+ * Polls per frame (engine only ticks when dirty), but never re-renders unless the set changes.
364
+ */
365
+ function useEntityComponents(entity) {
366
+ const engine = useLayoutEngine();
367
+ const [types, setTypes] = (0, react.useState)(() => engine.world.getComponentsOf(entity));
368
+ (0, react.useEffect)(() => {
369
+ setTypes(engine.world.getComponentsOf(entity));
370
+ return engine.onFrame(() => {
371
+ const next = engine.world.getComponentsOf(entity);
372
+ setTypes((prev) => sameTypeList(prev, next) ? prev : next);
373
+ });
374
+ }, [engine, entity]);
375
+ return types;
376
+ }
377
+ /**
378
+ * Reactively returns the TagTypes currently attached to an entity.
379
+ */
380
+ function useEntityTags(entity) {
381
+ const engine = useLayoutEngine();
382
+ const [types, setTypes] = (0, react.useState)(() => engine.world.getTagsOf(entity));
383
+ (0, react.useEffect)(() => {
384
+ setTypes(engine.world.getTagsOf(entity));
385
+ return engine.onFrame(() => {
386
+ const next = engine.world.getTagsOf(entity);
387
+ setTypes((prev) => sameTypeList(prev, next) ? prev : next);
388
+ });
389
+ }, [engine, entity]);
390
+ return types;
391
+ }
392
+ /**
393
+ * Reactively returns every ComponentType the world has observed.
394
+ * Grows over time as new component types are first used.
395
+ */
396
+ function useRegisteredComponents() {
397
+ const engine = useLayoutEngine();
398
+ const [types, setTypes] = (0, react.useState)(() => engine.world.getRegisteredComponents());
399
+ (0, react.useEffect)(() => {
400
+ setTypes(engine.world.getRegisteredComponents());
401
+ return engine.onFrame(() => {
402
+ const next = engine.world.getRegisteredComponents();
403
+ setTypes((prev) => sameTypeList(prev, next) ? prev : next);
404
+ });
405
+ }, [engine]);
406
+ return types;
407
+ }
408
+ /**
409
+ * Reactively returns every TagType the world has observed.
410
+ */
411
+ function useRegisteredTags() {
412
+ const engine = useLayoutEngine();
413
+ const [types, setTypes] = (0, react.useState)(() => engine.world.getRegisteredTags());
414
+ (0, react.useEffect)(() => {
415
+ setTypes(engine.world.getRegisteredTags());
416
+ return engine.onFrame(() => {
417
+ const next = engine.world.getRegisteredTags();
418
+ setTypes((prev) => sameTypeList(prev, next) ? prev : next);
419
+ });
420
+ }, [engine]);
421
+ return types;
422
+ }
423
+ //#endregion
424
+ Object.defineProperty(exports, "Active", {
425
+ enumerable: true,
426
+ get: function() {
427
+ return Active;
428
+ }
429
+ });
430
+ Object.defineProperty(exports, "BreakpointConfigResource", {
431
+ enumerable: true,
432
+ get: function() {
433
+ return BreakpointConfigResource;
434
+ }
435
+ });
436
+ Object.defineProperty(exports, "CameraResource", {
437
+ enumerable: true,
438
+ get: function() {
439
+ return CameraResource;
440
+ }
441
+ });
442
+ Object.defineProperty(exports, "Card", {
443
+ enumerable: true,
444
+ get: function() {
445
+ return Card;
446
+ }
447
+ });
448
+ Object.defineProperty(exports, "CardPresetsResource", {
449
+ enumerable: true,
450
+ get: function() {
451
+ return CardPresetsResource;
452
+ }
453
+ });
454
+ Object.defineProperty(exports, "Children", {
455
+ enumerable: true,
456
+ get: function() {
457
+ return Children;
458
+ }
459
+ });
460
+ Object.defineProperty(exports, "Container", {
461
+ enumerable: true,
462
+ get: function() {
463
+ return Container;
464
+ }
465
+ });
466
+ Object.defineProperty(exports, "ContainerRefProvider", {
467
+ enumerable: true,
468
+ get: function() {
469
+ return ContainerRefProvider;
470
+ }
471
+ });
472
+ Object.defineProperty(exports, "CursorHint", {
473
+ enumerable: true,
474
+ get: function() {
475
+ return CursorHint;
476
+ }
477
+ });
478
+ Object.defineProperty(exports, "CursorResource", {
479
+ enumerable: true,
480
+ get: function() {
481
+ return CursorResource;
482
+ }
483
+ });
484
+ Object.defineProperty(exports, "Draggable", {
485
+ enumerable: true,
486
+ get: function() {
487
+ return Draggable;
488
+ }
489
+ });
490
+ Object.defineProperty(exports, "Dragging", {
491
+ enumerable: true,
492
+ get: function() {
493
+ return Dragging;
494
+ }
495
+ });
496
+ Object.defineProperty(exports, "EngineProvider", {
497
+ enumerable: true,
498
+ get: function() {
499
+ return EngineProvider;
500
+ }
501
+ });
502
+ Object.defineProperty(exports, "HandleSet", {
503
+ enumerable: true,
504
+ get: function() {
505
+ return HandleSet;
506
+ }
507
+ });
508
+ Object.defineProperty(exports, "Hitbox", {
509
+ enumerable: true,
510
+ get: function() {
511
+ return Hitbox;
512
+ }
513
+ });
514
+ Object.defineProperty(exports, "InteractionRole", {
515
+ enumerable: true,
516
+ get: function() {
517
+ return InteractionRole;
518
+ }
519
+ });
520
+ Object.defineProperty(exports, "Locked", {
521
+ enumerable: true,
522
+ get: function() {
523
+ return Locked;
524
+ }
525
+ });
526
+ Object.defineProperty(exports, "NavigationStackResource", {
527
+ enumerable: true,
528
+ get: function() {
529
+ return NavigationStackResource;
530
+ }
531
+ });
532
+ Object.defineProperty(exports, "Parent", {
533
+ enumerable: true,
534
+ get: function() {
535
+ return Parent;
536
+ }
537
+ });
538
+ Object.defineProperty(exports, "Resizable", {
539
+ enumerable: true,
540
+ get: function() {
541
+ return Resizable;
542
+ }
543
+ });
544
+ Object.defineProperty(exports, "Selectable", {
545
+ enumerable: true,
546
+ get: function() {
547
+ return Selectable;
548
+ }
549
+ });
550
+ Object.defineProperty(exports, "Selected", {
551
+ enumerable: true,
552
+ get: function() {
553
+ return Selected;
554
+ }
555
+ });
556
+ Object.defineProperty(exports, "SelectionFrame", {
557
+ enumerable: true,
558
+ get: function() {
559
+ return SelectionFrame;
560
+ }
561
+ });
562
+ Object.defineProperty(exports, "Transform2D", {
563
+ enumerable: true,
564
+ get: function() {
565
+ return Transform2D;
566
+ }
567
+ });
568
+ Object.defineProperty(exports, "ViewportResource", {
569
+ enumerable: true,
570
+ get: function() {
571
+ return ViewportResource;
572
+ }
573
+ });
574
+ Object.defineProperty(exports, "Visible", {
575
+ enumerable: true,
576
+ get: function() {
577
+ return Visible;
578
+ }
579
+ });
580
+ Object.defineProperty(exports, "Widget", {
581
+ enumerable: true,
582
+ get: function() {
583
+ return Widget;
584
+ }
585
+ });
586
+ Object.defineProperty(exports, "WidgetBreakpoint", {
587
+ enumerable: true,
588
+ get: function() {
589
+ return WidgetBreakpoint;
590
+ }
591
+ });
592
+ Object.defineProperty(exports, "WidgetData", {
593
+ enumerable: true,
594
+ get: function() {
595
+ return WidgetData;
596
+ }
597
+ });
598
+ Object.defineProperty(exports, "WidgetResolverProvider", {
599
+ enumerable: true,
600
+ get: function() {
601
+ return WidgetResolverProvider;
602
+ }
603
+ });
604
+ Object.defineProperty(exports, "WorldBounds", {
605
+ enumerable: true,
606
+ get: function() {
607
+ return WorldBounds;
608
+ }
609
+ });
610
+ Object.defineProperty(exports, "ZIndex", {
611
+ enumerable: true,
612
+ get: function() {
613
+ return ZIndex;
614
+ }
615
+ });
616
+ Object.defineProperty(exports, "ZoomConfigResource", {
617
+ enumerable: true,
618
+ get: function() {
619
+ return ZoomConfigResource;
620
+ }
621
+ });
622
+ Object.defineProperty(exports, "useAllEntities", {
623
+ enumerable: true,
624
+ get: function() {
625
+ return useAllEntities;
626
+ }
627
+ });
628
+ Object.defineProperty(exports, "useCamera", {
629
+ enumerable: true,
630
+ get: function() {
631
+ return useCamera;
632
+ }
633
+ });
634
+ Object.defineProperty(exports, "useComponent", {
635
+ enumerable: true,
636
+ get: function() {
637
+ return useComponent;
638
+ }
639
+ });
640
+ Object.defineProperty(exports, "useContainerRef", {
641
+ enumerable: true,
642
+ get: function() {
643
+ return useContainerRef;
644
+ }
645
+ });
646
+ Object.defineProperty(exports, "useEntityComponents", {
647
+ enumerable: true,
648
+ get: function() {
649
+ return useEntityComponents;
650
+ }
651
+ });
652
+ Object.defineProperty(exports, "useEntityTags", {
653
+ enumerable: true,
654
+ get: function() {
655
+ return useEntityTags;
656
+ }
657
+ });
658
+ Object.defineProperty(exports, "useLayoutEngine", {
659
+ enumerable: true,
660
+ get: function() {
661
+ return useLayoutEngine;
662
+ }
663
+ });
664
+ Object.defineProperty(exports, "useQuery", {
665
+ enumerable: true,
666
+ get: function() {
667
+ return useQuery;
668
+ }
669
+ });
670
+ Object.defineProperty(exports, "useRegisteredComponents", {
671
+ enumerable: true,
672
+ get: function() {
673
+ return useRegisteredComponents;
674
+ }
675
+ });
676
+ Object.defineProperty(exports, "useRegisteredTags", {
677
+ enumerable: true,
678
+ get: function() {
679
+ return useRegisteredTags;
680
+ }
681
+ });
682
+ Object.defineProperty(exports, "useResource", {
683
+ enumerable: true,
684
+ get: function() {
685
+ return useResource;
686
+ }
687
+ });
688
+ Object.defineProperty(exports, "useTag", {
689
+ enumerable: true,
690
+ get: function() {
691
+ return useTag;
692
+ }
693
+ });
694
+ Object.defineProperty(exports, "useTaggedEntities", {
695
+ enumerable: true,
696
+ get: function() {
697
+ return useTaggedEntities;
698
+ }
699
+ });
700
+ Object.defineProperty(exports, "useWidgetResolver", {
701
+ enumerable: true,
702
+ get: function() {
703
+ return useWidgetResolver;
704
+ }
705
+ });
706
+
707
+ //# sourceMappingURL=hooks-DHShH86C.cjs.map