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.
- package/README.md +1 -1
- package/dist/b3d-hud.d.ts +4 -2
- package/dist/b3d-hud.d.ts.map +1 -1
- package/dist/b3d-hud.js +6 -4
- package/dist/b3d-hud.js.map +1 -1
- package/dist/b3d-svg-plane.d.ts +58 -0
- package/dist/b3d-svg-plane.d.ts.map +1 -1
- package/dist/b3d-svg-plane.js +165 -1
- package/dist/b3d-svg-plane.js.map +1 -1
- package/dist/box.d.ts +185 -0
- package/dist/box.d.ts.map +1 -0
- package/dist/box.js +776 -0
- package/dist/box.js.map +1 -0
- package/dist/flow-layout.d.ts +35 -0
- package/dist/flow-layout.d.ts.map +1 -1
- package/dist/flow-layout.js +78 -1
- package/dist/flow-layout.js.map +1 -1
- package/dist/gamepad-focus.d.ts +49 -0
- package/dist/gamepad-focus.d.ts.map +1 -0
- package/dist/gamepad-focus.js +163 -0
- package/dist/gamepad-focus.js.map +1 -0
- package/dist/icon-data.d.ts.map +1 -1
- package/dist/icon-data.js +3 -1
- package/dist/icon-data.js.map +1 -1
- package/dist/index.d.ts +69 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +76 -4
- package/dist/index.js.map +1 -1
- package/dist/key-layout.d.ts +58 -0
- package/dist/key-layout.d.ts.map +1 -0
- package/dist/key-layout.js +358 -0
- package/dist/key-layout.js.map +1 -0
- package/dist/keyboard.d.ts +101 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +1010 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/selection.d.ts +30 -0
- package/dist/selection.d.ts.map +1 -0
- package/dist/selection.js +144 -0
- package/dist/selection.js.map +1 -0
- package/dist/surface.d.ts +79 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +403 -0
- package/dist/surface.js.map +1 -0
- package/dist/svg-icons.d.ts.map +1 -1
- package/dist/svg-icons.js +12 -6
- package/dist/svg-icons.js.map +1 -1
- package/dist/svg-texture.d.ts.map +1 -1
- package/dist/svg-texture.js +17 -6
- package/dist/svg-texture.js.map +1 -1
- package/dist/table-layout.d.ts +75 -0
- package/dist/table-layout.d.ts.map +1 -0
- package/dist/table-layout.js +159 -0
- package/dist/table-layout.js.map +1 -0
- package/dist/table.d.ts +52 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +463 -0
- package/dist/table.js.map +1 -0
- package/dist/text-edit.d.ts +43 -0
- package/dist/text-edit.d.ts.map +1 -0
- package/dist/text-edit.js +169 -0
- package/dist/text-edit.js.map +1 -0
- package/dist/tosi-b3d.d.ts +9 -5
- package/dist/tosi-b3d.d.ts.map +1 -1
- package/dist/tosi-b3d.js +124 -110
- package/dist/tosi-b3d.js.map +1 -1
- package/dist/widget-box.d.ts +18 -0
- package/dist/widget-box.d.ts.map +1 -0
- package/dist/widget-box.js +152 -0
- package/dist/widget-box.js.map +1 -0
- package/dist/widgets3d.d.ts +44 -0
- package/dist/widgets3d.d.ts.map +1 -1
- package/dist/widgets3d.js +111 -41
- package/dist/widgets3d.js.map +1 -1
- 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;
|
|
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
|
-
|
|
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. */
|
package/dist/b3d-hud.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"b3d-hud.d.ts","sourceRoot":"","sources":["../src/b3d-hud.ts"],"names":[],"mappings":"AA+FA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAML,KAAK,SAAS,EAEd,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAA;AAEd,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAE1C,qBAAa,MAAO,SAAQ,QAAQ;IAClC,MAAM,CAAC,cAAc;;;;MAMpB;IAED,MAAM,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqCpB;IAEO,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAExB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,SAAS,CAA4B;IAK7C,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,YAAY,CAAC,CAIpB;IACD,OAAO,CAAC,eAAe,CAAQ;IAE/B,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,IAAI;IAsBnD;;;;;;OAMG;IACH,aAAa,CACX,MAAM,EAAE,OAAO,CAAC,aAAa,EAC7B,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GACxE,IAAI;IAeP,OAAO,CAAC,kBAAkB;IAuC1B,iFAAiF;IACjF,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKzC
|
|
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
|
-
//
|
|
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 (
|
|
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
|
-
|
|
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.
|
package/dist/b3d-hud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"b3d-hud.js","sourceRoot":"","sources":["../src/b3d-hud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4FE;AACF,sBAAsB;AAEtB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,UAAU,EACV,cAAc,GAMf,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEpD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAE1C,MAAM,OAAO,MAAO,SAAQ,QAAQ;IAClC,MAAM,CAAC,cAAc,GAAG;QACtB,kFAAkF;QAClF,GAAG,EAAE,EAAE;QACP,2EAA2E;QAC3E,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,CAAC;KACZ,CAAA;IAED,MAAM,CAAC,cAAc,GAAG;QACtB,OAAO,EAAE;YACP,8EAA8E;YAC9E,sEAAsE;YACtE,
|
|
1
|
+
{"version":3,"file":"b3d-hud.js","sourceRoot":"","sources":["../src/b3d-hud.ts"],"names":[],"mappings":"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"}
|
package/dist/b3d-svg-plane.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/b3d-svg-plane.js
CHANGED
|
@@ -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
|
-
|
|
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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"}
|