@opsydyn/effect-three-foldkit 0.0.0-stage → 0.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 (96) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/LICENSE +21 -0
  3. package/README.md +99 -2
  4. package/dist/assets.d.ts +53 -0
  5. package/dist/assets.d.ts.map +1 -0
  6. package/dist/dom/animationFrames.d.ts +12 -0
  7. package/dist/dom/animationFrames.d.ts.map +1 -0
  8. package/dist/dom/canvas.d.ts +26 -0
  9. package/dist/dom/canvas.d.ts.map +1 -0
  10. package/dist/dom/latch.d.ts +15 -0
  11. package/dist/dom/latch.d.ts.map +1 -0
  12. package/dist/dom/models.d.ts +10 -0
  13. package/dist/dom/models.d.ts.map +1 -0
  14. package/dist/dom/overlays.d.ts +24 -0
  15. package/dist/dom/overlays.d.ts.map +1 -0
  16. package/dist/dom/pointer.d.ts +49 -0
  17. package/dist/dom/pointer.d.ts.map +1 -0
  18. package/dist/dom/postprocessing.d.ts +22 -0
  19. package/dist/dom/postprocessing.d.ts.map +1 -0
  20. package/dist/dom/property.d.ts +15 -0
  21. package/dist/dom/property.d.ts.map +1 -0
  22. package/dist/dom/reconciled.d.ts +10 -0
  23. package/dist/dom/reconciled.d.ts.map +1 -0
  24. package/dist/dom/renderSettings.d.ts +58 -0
  25. package/dist/dom/renderSettings.d.ts.map +1 -0
  26. package/dist/dom/typedScenes.d.ts +14 -0
  27. package/dist/dom/typedScenes.d.ts.map +1 -0
  28. package/dist/dom/updates.d.ts +8 -0
  29. package/dist/dom/updates.d.ts.map +1 -0
  30. package/dist/dom/viewport.d.ts +40 -0
  31. package/dist/dom/viewport.d.ts.map +1 -0
  32. package/dist/dom/webgl.d.ts +12 -0
  33. package/dist/dom/webgl.d.ts.map +1 -0
  34. package/dist/dom/webgpu.d.ts +24 -0
  35. package/dist/dom/webgpu.d.ts.map +1 -0
  36. package/dist/dom/webgpuPostprocessing.d.ts +4 -0
  37. package/dist/dom/webgpuPostprocessing.d.ts.map +1 -0
  38. package/dist/dom/xr.d.ts +53 -0
  39. package/dist/dom/xr.d.ts.map +1 -0
  40. package/dist/dom/xrGlide.d.ts +49 -0
  41. package/dist/dom/xrGlide.d.ts.map +1 -0
  42. package/dist/dom/xrHub.d.ts +45 -0
  43. package/dist/dom/xrHub.d.ts.map +1 -0
  44. package/dist/dom/xrInputs.d.ts +40 -0
  45. package/dist/dom/xrInputs.d.ts.map +1 -0
  46. package/dist/dom/xrSpaces.d.ts +33 -0
  47. package/dist/dom/xrSpaces.d.ts.map +1 -0
  48. package/dist/dom/xrTarget.d.ts +36 -0
  49. package/dist/dom/xrTarget.d.ts.map +1 -0
  50. package/dist/element.d.ts +771 -0
  51. package/dist/element.d.ts.map +1 -0
  52. package/dist/environment.d.ts +64 -0
  53. package/dist/environment.d.ts.map +1 -0
  54. package/dist/index.d.ts +32 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +2041 -0
  57. package/dist/index.js.map +38 -0
  58. package/dist/mount.d.ts +14 -0
  59. package/dist/mount.d.ts.map +1 -0
  60. package/dist/overlayView.d.ts +23 -0
  61. package/dist/overlayView.d.ts.map +1 -0
  62. package/dist/view.d.ts +179 -0
  63. package/dist/view.d.ts.map +1 -0
  64. package/dist/xr.d.ts +34 -0
  65. package/dist/xr.d.ts.map +1 -0
  66. package/package.json +72 -4
  67. package/src/assets.ts +151 -0
  68. package/src/dom/animationFrames.ts +32 -0
  69. package/src/dom/canvas.ts +54 -0
  70. package/src/dom/latch.ts +36 -0
  71. package/src/dom/models.ts +37 -0
  72. package/src/dom/overlays.ts +63 -0
  73. package/src/dom/pointer.ts +163 -0
  74. package/src/dom/postprocessing.ts +116 -0
  75. package/src/dom/property.ts +43 -0
  76. package/src/dom/reconciled.ts +51 -0
  77. package/src/dom/renderSettings.ts +117 -0
  78. package/src/dom/typedScenes.ts +21 -0
  79. package/src/dom/updates.ts +14 -0
  80. package/src/dom/viewport.ts +97 -0
  81. package/src/dom/webgl.ts +216 -0
  82. package/src/dom/webgpu.ts +205 -0
  83. package/src/dom/webgpuPostprocessing.ts +102 -0
  84. package/src/dom/xr.ts +211 -0
  85. package/src/dom/xrGlide.ts +114 -0
  86. package/src/dom/xrHub.ts +118 -0
  87. package/src/dom/xrInputs.ts +309 -0
  88. package/src/dom/xrSpaces.ts +287 -0
  89. package/src/dom/xrTarget.ts +71 -0
  90. package/src/element.ts +114 -0
  91. package/src/environment.ts +78 -0
  92. package/src/index.ts +71 -0
  93. package/src/mount.ts +305 -0
  94. package/src/overlayView.ts +71 -0
  95. package/src/view.ts +254 -0
  96. package/src/xr.ts +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,qFAAqF;AACrF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAIhD,wEAAwE;AACxE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAE5D,oFAAoF;AACpF,eAAO,MAAM,eAAe;;EAE1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAE1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCvB,CAAC;AAEH,sDAAsD;AACtD,eAAO,MAAM,YAAY;oBAChB,aAAa;0BACP,oBAAoB;0BACpB,oBAAoB;0BACpB,oBAAoB;wBACtB,kBAAkB;2BACf,qBAAqB;0BACtB,oBAAoB;2BACnB,qBAAqB;4BACpB,sBAAsB;oBAC9B,aAAa;mBACd,YAAY;sBACT,gBAAgB;sBAChB,eAAe;0BACX,oBAAoB;wBACtB,iBAAiB;2BACd,qBAAqB;uBACzB,gBAAgB;4BACX,sBAAsB;sBAC5B,gBAAgB;uBACf,iBAAiB;wBAChB,kBAAkB;sBACpB,gBAAgB;uBACf,iBAAiB;uBACjB,iBAAiB;iCACP,mBAAmB;CACwC,CAAC;AAElF,yFAAyF;AACzF,eAAO,MAAM,cAAc;;;QAEV,MAAM;;EACrB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * App-wide state shared by every scene element: one GPU resource store and one
3
+ * animation-frame scheduler. Create it once at the application entry point.
4
+ *
5
+ * @module
6
+ */
7
+ import { type Behaviour, type LabelEngine, type PhysicsEngine, type RendererFactory, type ResourceStore } from '@opsydyn/effect-three';
8
+ import { type AnimationFrameHost } from './dom/animationFrames.ts';
9
+ import { type PixelRatio } from './dom/viewport.ts';
10
+ /** The browser APIs the adapter uses; normally `window`. */
11
+ export type EnvironmentHost = AnimationFrameHost & Pick<Window, 'matchMedia' | 'devicePixelRatio'> & Partial<Pick<Window, 'navigator'>>;
12
+ export type EnvironmentOptions = {
13
+ /** Creates each scene's renderer from its canvas. Defaults to WebGL2. */
14
+ readonly renderer?: (canvas: HTMLCanvasElement) => RendererFactory;
15
+ /** Drawing-buffer pixel ratio: fixed, or `[min, max]` around the device's. Default `[1, 2]`. */
16
+ readonly pixelRatio?: PixelRatio;
17
+ /** Behaviours scenes may name with `behave(name)`, beside the built-in `float`. */
18
+ readonly behaviours?: Readonly<Record<string, Behaviour>>;
19
+ /**
20
+ * The physics engine for scenes with `physics`, or the promise of one: pass
21
+ * `loadRapier()` from `@opsydyn/effect-three-rapier` as it is, and scenes start once it
22
+ * has loaded. Without one, bodies stay where they are described.
23
+ */
24
+ readonly physics?: PhysicsEngine | Promise<PhysicsEngine>;
25
+ /**
26
+ * Draws `label` nodes: pass `troikaLabels()` from `@opsydyn/effect-three-troika`.
27
+ * Without one, labels are empty.
28
+ */
29
+ readonly labels?: LabelEngine;
30
+ };
31
+ /** Creates the shared environment for `host`. Call `dispose` when the app shuts down. */
32
+ export declare const makeEnvironment: (host: EnvironmentHost, options?: EnvironmentOptions) => {
33
+ host: EnvironmentHost;
34
+ store: ResourceStore;
35
+ frames: import("@opsydyn/effect-three").FrameScheduler;
36
+ renderer: (canvas: HTMLCanvasElement) => RendererFactory;
37
+ pixelRatio: PixelRatio;
38
+ behaviours: Readonly<Record<string, Behaviour>>;
39
+ /** The physics engine, once loaded; `undefined` when there is none. */
40
+ physics: Promise<PhysicsEngine | undefined>;
41
+ /** The label engine; `undefined` when there is none. */
42
+ labels: LabelEngine | undefined;
43
+ /** Loads textures and glTF models by URL and lends them to the store. */
44
+ assets: {
45
+ loadTexture: (id: string, url: string) => import("effect/Effect").Effect<string, import("./assets.ts").AssetLoadError, never>;
46
+ loadModel: (id: string, url: string) => import("effect/Effect").Effect<import("./assets.ts").ModelInfo, import("./assets.ts").AssetLoadError, never>;
47
+ loadEnvironment: (id: string, url: string) => import("effect/Effect").Effect<string, import("./assets.ts").AssetLoadError, never>;
48
+ loadFont: (id: string, url: string) => import("effect/Effect").Effect<string, import("./assets.ts").AssetLoadError, never>;
49
+ unload: (id: string) => import("effect/Effect").Effect<void, never, never>;
50
+ dispose: () => void;
51
+ };
52
+ /** Enters and leaves immersive (WebXR) sessions, from Commands. */
53
+ xr: {
54
+ supported: (mode: import("./index.ts").XrMode) => import("effect/Effect").Effect<boolean, never, never>;
55
+ enter: (mode: import("./index.ts").XrMode) => import("effect/Effect").Effect<void, import("./xr.ts").XrUnavailable, never>;
56
+ exit: import("effect/Effect").Effect<void, never, never>;
57
+ };
58
+ /** The page's presentable scenes and its session; scene mounts register here. */
59
+ xrHub: import("./dom/xrHub.ts").XrHub;
60
+ /** Disposes every loaded asset and every GPU resource still held. */
61
+ dispose: () => void;
62
+ };
63
+ export type Environment = ReturnType<typeof makeEnvironment>;
64
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKvE,4DAA4D;AAC5D,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAC9C,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAErC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,eAAe,CAAC;IACnE,gGAAgG;IAChG,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,eAAe,SAAU,eAAe,YAAW,kBAAkB;;;;uBAnBnD,iBAAiB,KAAK,eAAe;;;IA8BhE,uEAAuE;;IAEvE,wDAAwD;;IAExD,yEAAyE;;;;;;;;;IAEzE,mEAAmE;;;;;;IAEnE,iFAAiF;;IAEjF,qEAAqE;;CAMxE,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Foldkit adapter for `@opsydyn/effect-three`.
3
+ *
4
+ * ```ts
5
+ * // entry.ts: once per app
6
+ * const environment = EffectThreeFoldkit.makeEnvironment(window);
7
+ * export const sceneMount = EffectThreeFoldkit.makeSceneMount(environment);
8
+ *
9
+ * // view.ts
10
+ * EffectThreeFoldkit.view(
11
+ * { scene: sceneFor(model), mount: sceneMount, onLifecycle: GotSceneLifecycle, onClick: ClickedNode },
12
+ * h,
13
+ * );
14
+ * ```
15
+ *
16
+ * @module
17
+ */
18
+ export { AssetLoadError, type Assets, makeAssets, type ModelInfo } from './assets.ts';
19
+ export { animationFrameScheduler, type AnimationFrameHost } from './dom/animationFrames.ts';
20
+ export { capturesPointer, claimsContextMenu, type Rect, toNdc, toPointerInput, } from './dom/pointer.ts';
21
+ export { defaultPixelRatio, type PixelRatio, resolvePixelRatio } from './dom/viewport.ts';
22
+ export { webglRendererFactory, type WebGLOptions } from './dom/webgl.ts';
23
+ export { type WebGPUOptions, webgpuRendererFactory } from './dom/webgpu.ts';
24
+ export { domEventName, ReconciledDetail, SceneError, sceneElement, SceneLifecycle, XrSessionDetail, } from './element.ts';
25
+ export { type XrMode } from './dom/xrHub.ts';
26
+ export { type XrControls, XrUnavailable } from './xr.ts';
27
+ export { summarise } from './dom/reconciled.ts';
28
+ export { type Environment, type EnvironmentHost, type EnvironmentOptions, makeEnvironment, } from './environment.ts';
29
+ export { makeSceneMount, type SceneMount } from './mount.ts';
30
+ export { type OverlayView } from './overlayView.ts';
31
+ export { type AutoRotatedDetail, type ButtonDetail, type CollisionDetail, type ContactForceDetail, type DragDetail, type Gesture, type HitDetail, type KeyDetail, type LabelMeasuredDetail, type MeasuredDetail, type MissDetail, type PerformanceDetail, view, type ViewConfig, type WheelDetail, type XrButtonDetail, type XrMeshesDetail, type XrMovedDetail, type XrPlanesDetail, type XrStickDetail, type XrSurfaceDetail, } from './view.ts';
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,cAAc,EAAE,KAAK,MAAM,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,KAAK,IAAI,EACT,KAAK,EACL,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,KAAK,aAAa,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,IAAI,EACJ,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC"}