tosijs-3d 0.5.2 → 0.6.0-rc.3

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 (75) hide show
  1. package/README.md +1 -1
  2. package/dist/b3d-hud.d.ts +4 -2
  3. package/dist/b3d-hud.d.ts.map +1 -1
  4. package/dist/b3d-hud.js +6 -4
  5. package/dist/b3d-hud.js.map +1 -1
  6. package/dist/b3d-svg-plane.d.ts +58 -0
  7. package/dist/b3d-svg-plane.d.ts.map +1 -1
  8. package/dist/b3d-svg-plane.js +165 -1
  9. package/dist/b3d-svg-plane.js.map +1 -1
  10. package/dist/box.d.ts +185 -0
  11. package/dist/box.d.ts.map +1 -0
  12. package/dist/box.js +776 -0
  13. package/dist/box.js.map +1 -0
  14. package/dist/flow-layout.d.ts +35 -0
  15. package/dist/flow-layout.d.ts.map +1 -1
  16. package/dist/flow-layout.js +78 -1
  17. package/dist/flow-layout.js.map +1 -1
  18. package/dist/gamepad-focus.d.ts +49 -0
  19. package/dist/gamepad-focus.d.ts.map +1 -0
  20. package/dist/gamepad-focus.js +163 -0
  21. package/dist/gamepad-focus.js.map +1 -0
  22. package/dist/icon-data.d.ts.map +1 -1
  23. package/dist/icon-data.js +3 -1
  24. package/dist/icon-data.js.map +1 -1
  25. package/dist/index.d.ts +69 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +76 -4
  28. package/dist/index.js.map +1 -1
  29. package/dist/key-layout.d.ts +58 -0
  30. package/dist/key-layout.d.ts.map +1 -0
  31. package/dist/key-layout.js +358 -0
  32. package/dist/key-layout.js.map +1 -0
  33. package/dist/keyboard.d.ts +101 -0
  34. package/dist/keyboard.d.ts.map +1 -0
  35. package/dist/keyboard.js +1010 -0
  36. package/dist/keyboard.js.map +1 -0
  37. package/dist/selection.d.ts +30 -0
  38. package/dist/selection.d.ts.map +1 -0
  39. package/dist/selection.js +144 -0
  40. package/dist/selection.js.map +1 -0
  41. package/dist/surface.d.ts +79 -0
  42. package/dist/surface.d.ts.map +1 -0
  43. package/dist/surface.js +403 -0
  44. package/dist/surface.js.map +1 -0
  45. package/dist/svg-icons.d.ts.map +1 -1
  46. package/dist/svg-icons.js +12 -6
  47. package/dist/svg-icons.js.map +1 -1
  48. package/dist/svg-texture.d.ts.map +1 -1
  49. package/dist/svg-texture.js +17 -6
  50. package/dist/svg-texture.js.map +1 -1
  51. package/dist/table-layout.d.ts +75 -0
  52. package/dist/table-layout.d.ts.map +1 -0
  53. package/dist/table-layout.js +159 -0
  54. package/dist/table-layout.js.map +1 -0
  55. package/dist/table.d.ts +52 -0
  56. package/dist/table.d.ts.map +1 -0
  57. package/dist/table.js +463 -0
  58. package/dist/table.js.map +1 -0
  59. package/dist/text-edit.d.ts +43 -0
  60. package/dist/text-edit.d.ts.map +1 -0
  61. package/dist/text-edit.js +169 -0
  62. package/dist/text-edit.js.map +1 -0
  63. package/dist/tosi-b3d.d.ts +9 -5
  64. package/dist/tosi-b3d.d.ts.map +1 -1
  65. package/dist/tosi-b3d.js +124 -110
  66. package/dist/tosi-b3d.js.map +1 -1
  67. package/dist/widget-box.d.ts +18 -0
  68. package/dist/widget-box.d.ts.map +1 -0
  69. package/dist/widget-box.js +152 -0
  70. package/dist/widget-box.js.map +1 -0
  71. package/dist/widgets3d.d.ts +44 -0
  72. package/dist/widgets3d.d.ts.map +1 -1
  73. package/dist/widgets3d.js +111 -41
  74. package/dist/widgets3d.js.map +1 -1
  75. package/package.json +9 -4
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [github](https://github.com/tonioloewald/tosijs-3d/) | [live demo](https://3d.tosijs.net) | [npm](https://www.npmjs.com/package/tosijs-3d)
4
4
 
5
5
  <div style="text-align: center; margin: 20px">
6
- <img style="width: 280px; height: 280px; background: #da1167; border-radius: 40px" alt="tosijs-3d logo" src="https://3d.tosijs.net/favicon.svg">
6
+ <img style="width: 280px; height: 280px;" alt="tosijs-3d logo" src="https://3d.tosijs.net/favicon.svg">
7
7
  </div>
8
8
 
9
9
  Declarative 3D/XR framework built on Babylon.js and tosijs. Compose 3D scenes with web components.
package/dist/b3d-hud.d.ts CHANGED
@@ -71,8 +71,10 @@ export declare class B3dHud extends B3dChild {
71
71
  private _buildInScenePlane;
72
72
  /** Show/hide the in-scene cockpit HUD plane (independent of the DOM overlay). */
73
73
  setInSceneVisible(visible: boolean): void;
74
- /** tosijs Component calls this on resize (it owns the observer + teardown). */
75
- onResize(): void;
74
+ /** tosijs Component calls this on resize (it owns the observer + teardown).
75
+ * `handleResize`, not `onResize` — the `on<Event>` prefix is reserved for the
76
+ * elements factory's event sugar and collides with a component callback. */
77
+ handleResize(): void;
76
78
  private _measure;
77
79
  sceneDispose(): void;
78
80
  /** Fill a meter arc (`speed`/`altitude`/`health`/`energy`), level 0..1. */
@@ -1 +1 @@
1
- {"version":3,"file":"b3d-hud.d.ts","sourceRoot":"","sources":["../src/b3d-hud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"b3d-hud.d.ts","sourceRoot":"","sources":["../src/b3d-hud.ts"],"names":[],"mappings":"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"}
package/dist/b3d-hud.js CHANGED
@@ -109,7 +109,7 @@ export class B3dHud extends B3dChild {
109
109
  ':host': {
110
110
  // Fill the canvas area and centre the square HUD inside it — so the element's
111
111
  // OWN resize (which tosijs Component observes) tracks the canvas, and
112
- // onResize() can re-measure. No hand-rolled ResizeObserver to tear down.
112
+ // handleResize() can re-measure. No hand-rolled ResizeObserver to tear down.
113
113
  position: 'absolute',
114
114
  inset: '0',
115
115
  display: 'flex',
@@ -122,7 +122,7 @@ export class B3dHud extends B3dChild {
122
122
  zIndex: '15',
123
123
  },
124
124
  ':host([hidden])': { display: 'none' },
125
- // --hud-size is set live (onResize) to `size`% of the canvas's smaller side.
125
+ // --hud-size is set live (handleResize) to `size`% of the canvas's smaller side.
126
126
  ':host svg': {
127
127
  width: 'var(--hud-size, 70vmin)',
128
128
  height: 'var(--hud-size, 70vmin)',
@@ -241,8 +241,10 @@ export class B3dHud extends B3dChild {
241
241
  this._inSceneVisible = visible;
242
242
  this._plane?.setEnabled(visible);
243
243
  }
244
- /** tosijs Component calls this on resize (it owns the observer + teardown). */
245
- onResize() {
244
+ /** tosijs Component calls this on resize (it owns the observer + teardown).
245
+ * `handleResize`, not `onResize` — the `on<Event>` prefix is reserved for the
246
+ * elements factory's event sugar and collides with a component callback. */
247
+ handleResize() {
246
248
  this._measure();
247
249
  }
248
250
  // Size the square HUD to `size`% of the canvas's SMALLER dimension.
@@ -1 +1 @@
1
- {"version":3,"file":"b3d-hud.js","sourceRoot":"","sources":["../src/b3d-hud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"b3d-hud.js","sourceRoot":"","sources":["../src/b3d-hud.ts"],"names":[],"mappings":"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"}
@@ -54,4 +54,62 @@ export declare class B3dSvgPlane extends AbstractMesh {
54
54
  private _dispatchSyntheticEvent;
55
55
  }
56
56
  export declare const b3dSvgPlane: import("tosijs").ElementCreator<B3dSvgPlane>;
57
+ /**
58
+ * The common **dual-presentation wiring, packaged**: a plane textured from a
59
+ * live `svg` plus a `sceneCreated` hook that sets up an orbit camera and routes
60
+ * scene picks — mouse AND XR-controller — as uv → viewBox coords →
61
+ * `target.handlePointer(kind, x, y)`.
62
+ *
63
+ * **One consistent gesture contract, every demo** (this used to be bespoke
64
+ * per demo, so lessons didn't transfer):
65
+ *
66
+ * - A down on the plane that the UI **claims** (the `claim` predicate; default:
67
+ * every panel press) detaches the orbit camera — a press on UI is a gesture,
68
+ * not an orbit. Dragging the background always orbits.
69
+ * - A claimed gesture's moves and release are collected on an invisible
70
+ * **catcher quad** via the event's **pick ray** — NOT the visual mesh and NOT
71
+ * `scene.pointerX/pointerY`. The visual mesh may move or rescale under the
72
+ * pointer (a resize grip!), and a gesture must never sample the thing it is
73
+ * changing; screen coordinates don't exist meaningfully for an XR controller
74
+ * ray, which is exactly why bespoke screen-coordinate code worked flat and
75
+ * died in the headset. Coordinates map through the plane's world matrix
76
+ * **captured at the down**, so the whole gesture shares one stable frame.
77
+ * - A release off the plane still ends the gesture (`leave`) — the capture
78
+ * contract flat surfaces get free from `setPointerCapture`.
79
+ *
80
+ * ```js
81
+ * const { plane, sceneCreated } = panelScene({ svg: svgEl, target: mySurface })
82
+ * const scene = b3d({ sceneCreated }, b3dLight({ intensity: 1 }), plane)
83
+ * ```
84
+ *
85
+ * The svg's viewBox is re-read per event, so an svg that resizes (hugging its
86
+ * content) keeps mapping correctly.
87
+ */
88
+ export declare function panelScene(opts: {
89
+ /** The live svg shown flat — the SAME element becomes the plane's texture. */
90
+ svg: SVGSVGElement;
91
+ /** Where events land: a `surface`, `box`, or anything with `handlePointer`. */
92
+ target: {
93
+ handlePointer: (kind: 'down' | 'move' | 'up' | 'leave', x: number, y: number) => void;
94
+ };
95
+ /**
96
+ * Given viewBox coords of a down on the plane: does the UI claim the gesture
97
+ * (camera yields, moves ride the catcher)? Default: every panel press is UI.
98
+ * A resize grip passes its hit-test here so panel-body drags still orbit.
99
+ */
100
+ claim?: (x: number, y: number) => boolean;
101
+ /** World width of the plane; height follows the svg's aspect. Default 2.4. */
102
+ width?: number;
103
+ /** Texture resolution. Default 640. */
104
+ resolution?: number;
105
+ /** Orbit camera placement overrides. */
106
+ camera?: {
107
+ alpha?: number;
108
+ beta?: number;
109
+ radius?: number;
110
+ };
111
+ }): {
112
+ plane: B3dSvgPlane;
113
+ sceneCreated: (el: B3d) => void;
114
+ };
57
115
  //# sourceMappingURL=b3d-svg-plane.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"b3d-svg-plane.d.ts","sourceRoot":"","sources":["../src/b3d-svg-plane.ts"],"names":[],"mappings":"AA6WA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAS,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAErC,qBAAa,WAAY,SAAQ,YAAY;IAC3C,MAAM,CAAC,SAAS;;;;MAAmC;IAEnD,MAAM,CAAC,cAAc;;;;;;;;uBASI,IAAI,GAAG,KAAK;qBACd,IAAI,GAAG,KAAK;;;;;;;;MAClC;IAEO,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,IAAI,GAAG,KAAK,CAAA;IAC3B,WAAW,EAAE,IAAI,GAAG,KAAK,CAAA;IAEjC,kDAAkD;IAClD,UAAU,EAAE,aAAa,GAAG,IAAI,CAAO;IAEvC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,gBAAgB,CAEhB;IAER,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,SAAS,CAAI;IAErB,OAAO,eAAW;IAElB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;IAyC3C,YAAY;IAYZ,MAAM;IAaN,2DAA2D;IAC3D,IAAI,UAAU,IAAI,UAAU,GAAG,IAAI,CAElC;IAED,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,sBAAsB;IA0D9B,OAAO,CAAC,uBAAuB;CA6ChC;AAED,eAAO,MAAM,WAAW,8CAEtB,CAAA"}
1
+ {"version":3,"file":"b3d-svg-plane.d.ts","sourceRoot":"","sources":["../src/b3d-svg-plane.ts"],"names":[],"mappings":"AA6XA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAS,MAAM,aAAa,CAAA;AAIjD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAErC,qBAAa,WAAY,SAAQ,YAAY;IAC3C,MAAM,CAAC,SAAS;;;;MAAmC;IAEnD,MAAM,CAAC,cAAc;;;;;;;;uBASI,IAAI,GAAG,KAAK;qBACd,IAAI,GAAG,KAAK;;;;;;;;MAClC;IAEO,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,IAAI,GAAG,KAAK,CAAA;IAC3B,WAAW,EAAE,IAAI,GAAG,KAAK,CAAA;IAEjC,kDAAkD;IAClD,UAAU,EAAE,aAAa,GAAG,IAAI,CAAO;IAEvC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,gBAAgB,CAEhB;IAER,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,SAAS,CAAI;IAErB,OAAO,eAAW;IAElB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;IAyC3C,YAAY;IAYZ,MAAM;IAaN,2DAA2D;IAC3D,IAAI,UAAU,IAAI,UAAU,GAAG,IAAI,CAElC;IAED,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,sBAAsB;IA0D9B,OAAO,CAAC,uBAAuB;CAsDhC;AAED,eAAO,MAAM,WAAW,8CAEtB,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,8EAA8E;IAC9E,GAAG,EAAE,aAAa,CAAA;IAClB,+EAA+E;IAC/E,MAAM,EAAE;QACN,aAAa,EAAE,CACb,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,EACtC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,KACN,IAAI,CAAA;KACV,CAAA;IACD;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAA;IACzC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wCAAwC;IACxC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5D,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,IAAI,CAAA;CAAE,CA0H1D"}
@@ -360,10 +360,28 @@ or implement your own shape-specific point-in-polygon tests.
360
360
  | `doubleSided` | `'on'` | Render both faces |
361
361
 
362
362
  Set the `svgElement` property to a live SVG element for dynamic mode.
363
+
364
+ ## panelScene — dual-presentation in two lines
365
+
366
+ `panelScene({ svg, target })` packages the common wiring for showing ONE live
367
+ surface flat **and** on a plane: it returns a textured plane plus a
368
+ `sceneCreated` hook that adds an orbit camera and routes scene picks (mouse AND
369
+ XR controller) as uv → viewBox coords → `target.handlePointer(kind, x, y)` —
370
+ with the camera **yielding** during a press on the panel and an off-plane
371
+ release still **ending the gesture** (the capture contracts flat surfaces get
372
+ free from the DOM). The [[box]], [[surface]], [[widget-box]], [[table]] and
373
+ [[keyboard]] docs all use it for their 3D sides:
374
+
375
+ ```js
376
+ const { plane, sceneCreated } = panelScene({ svg: svgEl, target: mySurface })
377
+ const scene = b3d({ sceneCreated }, b3dLight({ intensity: 1 }), plane)
378
+ ```
363
379
  */
364
380
  /*{ "parent": "UI" }*/
365
381
  import * as BABYLON from '@babylonjs/core';
366
382
  import { AbstractMesh, isOff } from './b3d-utils';
383
+ /** The pointerId carried by pick-forwarded events — see the note at the dispatch. */
384
+ const SYNTHETIC_POINTER_ID = 0x53b3;
367
385
  import { SvgTexture } from './svg-texture';
368
386
  export class B3dSvgPlane extends AbstractMesh {
369
387
  static styleSpec = { ':host': { display: 'none' } };
@@ -452,6 +470,10 @@ export class B3dSvgPlane extends AbstractMesh {
452
470
  if (!this._svgTexture)
453
471
  return;
454
472
  const tex = this._svgTexture.texture;
473
+ // The texture's alpha drives the PLANE's alpha — a transparent svg region
474
+ // (outside a panel's rounded corners, say) must be transparent on the mesh,
475
+ // not an opaque black substrate that the corners are drawn over.
476
+ mat.opacityTexture = tex;
455
477
  if (channel === 'emissive') {
456
478
  mat.emissiveTexture = tex;
457
479
  mat.diffuseColor = BABYLON.Color3.Black();
@@ -548,7 +570,16 @@ export class B3dSvgPlane extends AbstractMesh {
548
570
  cancelable: true,
549
571
  clientX,
550
572
  clientY,
551
- pointerId: nativeEvt.pointerId ?? 1,
573
+ /*
574
+ A SYNTHETIC id, deliberately NOT the physical pointer's. Forwarding the
575
+ real id let any listener's `setPointerCapture(e.pointerId)` capture the
576
+ PHYSICAL mouse/ray to the SVG — after which the browser rerouted every
577
+ real move/up away from the canvas, Babylon saw downs with no ups, and
578
+ the whole pointer pipeline wedged (the lost-pointerup saga: stuck keys,
579
+ stale picks one click behind, first-click-dead). A capture on this id
580
+ throws NotFoundError instead — loud, and it can't steal the real stream.
581
+ */
582
+ pointerId: SYNTHETIC_POINTER_ID,
552
583
  pointerType: nativeEvt.pointerType ?? 'mouse',
553
584
  buttons: nativeEvt.buttons,
554
585
  }));
@@ -557,4 +588,137 @@ export class B3dSvgPlane extends AbstractMesh {
557
588
  export const b3dSvgPlane = B3dSvgPlane.elementCreator({
558
589
  tag: 'tosi-b3d-svg-plane',
559
590
  });
591
+ /**
592
+ * The common **dual-presentation wiring, packaged**: a plane textured from a
593
+ * live `svg` plus a `sceneCreated` hook that sets up an orbit camera and routes
594
+ * scene picks — mouse AND XR-controller — as uv → viewBox coords →
595
+ * `target.handlePointer(kind, x, y)`.
596
+ *
597
+ * **One consistent gesture contract, every demo** (this used to be bespoke
598
+ * per demo, so lessons didn't transfer):
599
+ *
600
+ * - A down on the plane that the UI **claims** (the `claim` predicate; default:
601
+ * every panel press) detaches the orbit camera — a press on UI is a gesture,
602
+ * not an orbit. Dragging the background always orbits.
603
+ * - A claimed gesture's moves and release are collected on an invisible
604
+ * **catcher quad** via the event's **pick ray** — NOT the visual mesh and NOT
605
+ * `scene.pointerX/pointerY`. The visual mesh may move or rescale under the
606
+ * pointer (a resize grip!), and a gesture must never sample the thing it is
607
+ * changing; screen coordinates don't exist meaningfully for an XR controller
608
+ * ray, which is exactly why bespoke screen-coordinate code worked flat and
609
+ * died in the headset. Coordinates map through the plane's world matrix
610
+ * **captured at the down**, so the whole gesture shares one stable frame.
611
+ * - A release off the plane still ends the gesture (`leave`) — the capture
612
+ * contract flat surfaces get free from `setPointerCapture`.
613
+ *
614
+ * ```js
615
+ * const { plane, sceneCreated } = panelScene({ svg: svgEl, target: mySurface })
616
+ * const scene = b3d({ sceneCreated }, b3dLight({ intensity: 1 }), plane)
617
+ * ```
618
+ *
619
+ * The svg's viewBox is re-read per event, so an svg that resizes (hugging its
620
+ * content) keeps mapping correctly.
621
+ */
622
+ export function panelScene(opts) {
623
+ const width = opts.width ?? 2.4;
624
+ const vb0 = opts.svg.viewBox?.baseVal;
625
+ const aspect = vb0 && vb0.width > 0 ? vb0.height / vb0.width : 1;
626
+ const planeH = width * aspect;
627
+ const plane = b3dSvgPlane({
628
+ width,
629
+ height: planeH,
630
+ resolution: opts.resolution ?? 640,
631
+ materialChannel: 'emissive',
632
+ pointerEvents: 'off',
633
+ });
634
+ plane.svgElement = opts.svg;
635
+ const viewBox = () => {
636
+ const vb = opts.svg.viewBox?.baseVal;
637
+ return {
638
+ w: vb && vb.width > 0 ? vb.width : 1,
639
+ h: vb && vb.height > 0 ? vb.height : 1,
640
+ };
641
+ };
642
+ const sceneCreated = (el) => {
643
+ const canvas = el.scene.getEngine().getRenderingCanvas();
644
+ const cam = new BABYLON.ArcRotateCamera('panel-cam', opts.camera?.alpha ?? -Math.PI / 2, opts.camera?.beta ?? Math.PI / 2.5, opts.camera?.radius ?? 3.2, BABYLON.Vector3.Zero(), el.scene);
645
+ el.setActiveCamera(cam);
646
+ cam.attachControl(canvas, true);
647
+ // Arrows belong to the UI (D-pad traversal), not the orbit.
648
+ cam.inputs.removeByType('ArcRotateCameraKeyboardMoveInput');
649
+ el.scene.constantlyUpdateMeshUnderPointer = true;
650
+ // The catcher: co-planar with the plane, 3x its size, pickable only while
651
+ // a gesture is live. See the doc comment for why it exists.
652
+ const catcher = BABYLON.MeshBuilder.CreatePlane('panel-catcher', { width: width * 3, height: planeH * 3 }, el.scene);
653
+ catcher.visibility = 0;
654
+ catcher.isPickable = false;
655
+ let gesture = null;
656
+ const T = BABYLON.PointerEventTypes;
657
+ el.scene.onPointerObservable.add((pi) => {
658
+ const kind = pi.type === T.POINTERDOWN
659
+ ? 'down'
660
+ : pi.type === T.POINTERUP
661
+ ? 'up'
662
+ : pi.type === T.POINTERMOVE
663
+ ? 'move'
664
+ : '';
665
+ if (!kind)
666
+ return;
667
+ const pk = pi.pickInfo;
668
+ if (gesture && (kind === 'move' || kind === 'up')) {
669
+ // Ray → catcher → the gesture-start frame. pickInfo.ray is the mouse
670
+ // ray flat and the controller ray in XR — one code path for both.
671
+ const ray = pk?.ray;
672
+ const hit = ray ? ray.intersectsMesh(catcher) : null;
673
+ if (hit && hit.hit && hit.pickedPoint) {
674
+ const local = BABYLON.Vector3.TransformCoordinates(hit.pickedPoint, gesture.inv);
675
+ opts.target.handlePointer(kind, (local.x / width + 0.5) * gesture.vbW, (0.5 - local.y / planeH) * gesture.vbH);
676
+ }
677
+ else if (kind === 'up') {
678
+ opts.target.handlePointer('leave', 0, 0);
679
+ }
680
+ if (kind === 'up') {
681
+ gesture = null;
682
+ catcher.isPickable = false;
683
+ cam.attachControl(canvas, true);
684
+ }
685
+ return;
686
+ }
687
+ const onPlane = !!(pk && pk.hit && pk.pickedMesh === plane.mesh);
688
+ let sx = 0;
689
+ let sy = 0;
690
+ if (onPlane) {
691
+ const uv = pk.getTextureCoordinates();
692
+ const vb = viewBox();
693
+ if (uv) {
694
+ sx = uv.x * vb.w;
695
+ sy = (1 - uv.y) * vb.h;
696
+ }
697
+ }
698
+ if (kind === 'down' && onPlane && (opts.claim?.(sx, sy) ?? true)) {
699
+ const vb = viewBox();
700
+ const mesh = plane.mesh;
701
+ mesh.computeWorldMatrix(true);
702
+ gesture = {
703
+ vbW: vb.w,
704
+ vbH: vb.h,
705
+ inv: mesh.getWorldMatrix().clone().invert(),
706
+ };
707
+ // Park the catcher on the plane's CURRENT pose — the gesture samples
708
+ // this frozen frame even if the target then moves/rescales the mesh.
709
+ catcher.position.copyFrom(mesh.absolutePosition);
710
+ if (mesh.rotationQuaternion)
711
+ catcher.rotationQuaternion = mesh.rotationQuaternion.clone();
712
+ catcher.computeWorldMatrix(true);
713
+ catcher.isPickable = true;
714
+ cam.detachControl();
715
+ }
716
+ if (onPlane)
717
+ opts.target.handlePointer(kind, sx, sy);
718
+ else if (kind === 'move')
719
+ opts.target.handlePointer('leave', 0, 0);
720
+ });
721
+ };
722
+ return { plane, sceneCreated };
723
+ }
560
724
  //# sourceMappingURL=b3d-svg-plane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"b3d-svg-plane.js","sourceRoot":"","sources":["../src/b3d-svg-plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"b3d-svg-plane.js","sourceRoot":"","sources":["../src/b3d-svg-plane.ts"],"names":[],"mappings":"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"}
package/dist/box.d.ts ADDED
@@ -0,0 +1,185 @@
1
+ import { type FlowBox } from './flow-layout';
2
+ import { type FontSpec } from './widgets3d-layout';
3
+ /**
4
+ * A child of a {@link box}. `el` is the SVG element to place (the box wraps it in
5
+ * a positioning `<g>`, so the child's own transform is preserved). `measure` is
6
+ * asked for the child's size at a given content width; `paint` (optional) is
7
+ * called with the resolved width so width-dependent children (wrapped text)
8
+ * re-render on resize.
9
+ */
10
+ /** Interaction flags a child can reflect visually (hover/press/focus). */
11
+ export interface BoxChildState {
12
+ hovered: boolean;
13
+ pressed: boolean;
14
+ focused: boolean;
15
+ }
16
+ export interface BoxChild {
17
+ el: SVGElement;
18
+ kind: 'block' | 'inline';
19
+ measure: (availWidth: number) => {
20
+ width?: number;
21
+ height: number;
22
+ };
23
+ paint?: (width: number) => void;
24
+ /** Reachable by pointer hit-test and focus-traversal (D-pad / Tab). */
25
+ focusable?: boolean;
26
+ /** Called when the child is activated (pointer up-over, or focus + menu/Enter). */
27
+ onActivate?: () => void;
28
+ /** The box calls this when the child's hover/press/focus state changes. */
29
+ setState?: (state: BoxChildState) => void;
30
+ /**
31
+ * Take the pointer **raw**, in child-local coords, instead of the box's
32
+ * press→activate semantics. For controls that need the whole gesture — a slider
33
+ * tracks `move` between `down` and `up`, which `onActivate` can't express.
34
+ *
35
+ * A child that defines this **captures**: once pressed it keeps receiving `move`
36
+ * and `up` even when the pointer leaves its rect, so a drag doesn't die the moment
37
+ * you slip off the track. It also never fires `onActivate` (it owns the gesture),
38
+ * and is implicitly focusable.
39
+ */
40
+ handlePointer?: (kind: PointerKind, x: number, y: number) => void;
41
+ /**
42
+ * Whether child-local (x,y) is on the *interactive control* rather than dead row
43
+ * space. Everything else stays scroll-drag surface — which is what lets you grab
44
+ * "between" two sliders to scroll, important when pointing with a VR ray. Omit to
45
+ * treat the whole rect as the control.
46
+ */
47
+ hitTest?: (x: number, y: number) => boolean;
48
+ /**
49
+ * Inner focus traversal — for a child that manages focus WITHIN itself (a
50
+ * keyboard's keys, a table's rows). While this child holds the box's focus,
51
+ * D-pad moves are delegated here. Return `true` if the move landed on something
52
+ * inside; `false` means focus escaped in that direction and the box moves on to
53
+ * the next child — the same escape contract as `table.focusMove`, which is what
54
+ * keeps a D-pad from being trapped inside a composite control forever.
55
+ *
56
+ * The box also calls this once on ENTRY (with the direction of travel) so the
57
+ * child can seed focus at the matching edge — arriving downward should land on
58
+ * the top row, not wherever focus last was.
59
+ *
60
+ * A child with inner focus draws its own focus indicator; the box hides its
61
+ * whole-child ring (a ring around an entire keyboard says nothing).
62
+ */
63
+ focusMove?: (dx: number, dy: number) => boolean;
64
+ /** Activate the inner-focused item (Enter / A). Pairs with `focusMove`. */
65
+ focusActivate?: () => void;
66
+ /** Drop inner focus — the box's focus left this child. */
67
+ focusClear?: () => void;
68
+ }
69
+ /** Pointer phase fed to {@link Box.handlePointer}. */
70
+ export type PointerKind = 'down' | 'move' | 'up' | 'leave';
71
+ export interface BoxOptions {
72
+ /** Outer width in layout units. */
73
+ width: number;
74
+ /** Fixed outer height → a scroll region if content overflows. Omit to hug content. */
75
+ height?: number;
76
+ /** Uniform inner padding. Default 0. */
77
+ padding?: number;
78
+ /** Gap between rows/inline items. Default 0. */
79
+ gap?: number;
80
+ background?: string;
81
+ border?: string;
82
+ borderWidth?: number;
83
+ radius?: number;
84
+ align?: 'top' | 'middle' | 'bottom';
85
+ }
86
+ export interface Box {
87
+ /** The painted `<g>` — append to the DOM, or serialize for an SvgTexture. */
88
+ el: SVGGElement;
89
+ /** Re-flow at a new width (and optionally height); re-wraps text, re-positions. */
90
+ resize: (width: number, height?: number) => void;
91
+ /** Scroll the content to an absolute offset (clamped to the overflow). */
92
+ scrollTo: (offset: number) => void;
93
+ /** Scroll by a delta (clamped). */
94
+ scrollBy: (delta: number) => void;
95
+ /** Current outer width. */
96
+ readonly width: number;
97
+ /** Laid-out content height (may exceed the viewport). */
98
+ contentHeight: number;
99
+ /** Visible height (the scroll viewport). */
100
+ viewportHeight: number;
101
+ /**
102
+ * A child's rect in the box's OWN local coords (padding-offset, pre-scroll), or
103
+ * `null`. Used to anchor a cascade submenu to a menu item.
104
+ */
105
+ childRect: (i: number) => FlowBox | null;
106
+ /**
107
+ * Feed a pointer event in box-local coords (mouse, touch, or a VR ray's
108
+ * texture-UV → box coords). `down` presses the hit child; `up` over the same
109
+ * child activates it; a pressed child captures until `up`.
110
+ */
111
+ handlePointer: (kind: PointerKind, x: number, y: number) => void;
112
+ /** Move focus to the nearest focusable child in a cardinal direction (D-pad). */
113
+ focusMove: (dx: number, dy: number) => void;
114
+ /** Activate the focused child (menu button / Enter). */
115
+ focusActivate: () => void;
116
+ /** Clear focus (B / back — a hook the popup layer will use). */
117
+ focusBack: () => void;
118
+ /** The focused child's index, or -1. */
119
+ focusIndex: () => number;
120
+ }
121
+ export declare function box(opts: BoxOptions, ...children: BoxChild[]): Box;
122
+ /**
123
+ * A **text block**: wraps `text` to the box width with the real glyph measurer,
124
+ * painting one `<tspan>` per line. Height tracks the wrapped line count, so it
125
+ * re-flows taller when the box narrows.
126
+ */
127
+ export declare function textBlock(text: string, opts?: {
128
+ font?: FontSpec;
129
+ color?: string;
130
+ lineHeight?: number;
131
+ }): BoxChild;
132
+ /** An **inline icon** — an `iconGlyph` sized `size×size`, tinted `color`. */
133
+ /**
134
+ * Convert a client (mouse/touch) point into an SVG element's own user space.
135
+ *
136
+ * **Use this instead of doing the arithmetic off `getBoundingClientRect`.** The
137
+ * obvious version —
138
+ *
139
+ * ```js
140
+ * const r = svgEl.getBoundingClientRect()
141
+ * const x = ((e.clientX - r.left) / r.width) * VIEWBOX_W // WRONG
142
+ * ```
143
+ *
144
+ * — assumes the viewBox is stretched to exactly fill the element. With
145
+ * `preserveAspectRatio` (the default, `xMidYMid meet`) the content is **letterboxed**:
146
+ * scaled uniformly and centred, with slack on one axis. The linear map is then off by
147
+ * that slack, and the error grows as the container's aspect ratio diverges from the
148
+ * viewBox's — so it looks fine at the authored size and drifts badly once the view is
149
+ * resized or maximized. The symptom is maddening rather than obvious: clicks land on
150
+ * the wrong row, and presses on chrome fall through onto the content beneath.
151
+ *
152
+ * `getScreenCTM()` already encodes the viewBox, the aspect-ratio fitting and any
153
+ * ancestor transform, so inverting it is correct by construction at any size.
154
+ */
155
+ export declare function svgPoint(el: SVGGraphicsElement, clientX: number, clientY: number): {
156
+ x: number;
157
+ y: number;
158
+ };
159
+ export declare function inlineIcon(name: string, opts?: {
160
+ size?: number;
161
+ color?: string;
162
+ }): BoxChild;
163
+ /** Drop any SVG element in as a full-width **block** of known height. */
164
+ export declare function blockItem(el: SVGElement, height: number): BoxChild;
165
+ /** Drop any SVG element in as an **inline** item of known size. */
166
+ export declare function inlineItem(el: SVGElement, width: number, height: number): BoxChild;
167
+ /**
168
+ * A **button** — a focusable, inline pill (rounded rect + centred label) that
169
+ * fires `onActivate` on pointer up-over or focus + activate. Width hugs the label;
170
+ * it flows and wraps like any inline item.
171
+ */
172
+ export declare function button(label: string, opts?: {
173
+ onActivate?: () => void;
174
+ font?: FontSpec;
175
+ color?: string;
176
+ background?: string;
177
+ hoverBackground?: string;
178
+ pressBackground?: string;
179
+ paddingX?: number;
180
+ height?: number;
181
+ /** Full-width stacked row (menu item) instead of a hugging inline pill. */
182
+ block?: boolean;
183
+ align?: 'left' | 'center';
184
+ }): BoxChild;
185
+ //# sourceMappingURL=box.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../src/box.ts"],"names":[],"mappings":"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"}