@geometra/renderer-three 0.1.3 → 1.3.1

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 (39) hide show
  1. package/dist/host-css-coerce.d.ts +39 -0
  2. package/dist/host-css-coerce.d.ts.map +1 -0
  3. package/dist/host-css-coerce.js +69 -0
  4. package/dist/host-css-coerce.js.map +1 -0
  5. package/dist/host-layout-plain.d.ts +164 -0
  6. package/dist/host-layout-plain.d.ts.map +1 -0
  7. package/dist/host-layout-plain.js +255 -0
  8. package/dist/host-layout-plain.js.map +1 -0
  9. package/dist/index.d.ts +43 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +42 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/layout-sync.d.ts +51 -0
  14. package/dist/layout-sync.d.ts.map +1 -0
  15. package/dist/layout-sync.js +59 -0
  16. package/dist/layout-sync.js.map +1 -0
  17. package/dist/scene3d-manager.d.ts +29 -0
  18. package/dist/scene3d-manager.d.ts.map +1 -0
  19. package/dist/scene3d-manager.js +339 -0
  20. package/dist/scene3d-manager.js.map +1 -0
  21. package/dist/split-host.d.ts +58 -17
  22. package/dist/split-host.d.ts.map +1 -1
  23. package/dist/split-host.js +105 -46
  24. package/dist/split-host.js.map +1 -1
  25. package/dist/stacked-host.d.ts +109 -0
  26. package/dist/stacked-host.d.ts.map +1 -0
  27. package/dist/stacked-host.js +218 -0
  28. package/dist/stacked-host.js.map +1 -0
  29. package/dist/three-scene-basics.d.ts +338 -0
  30. package/dist/three-scene-basics.d.ts.map +1 -0
  31. package/dist/three-scene-basics.js +435 -0
  32. package/dist/three-scene-basics.js.map +1 -0
  33. package/dist/utils.d.ts +165 -1
  34. package/dist/utils.d.ts.map +1 -1
  35. package/dist/utils.js +219 -3
  36. package/dist/utils.js.map +1 -1
  37. package/package.json +15 -16
  38. package/LICENSE +0 -21
  39. package/README.md +0 -81
@@ -0,0 +1,39 @@
1
+ /** Corner anchor for the Geometra HUD overlay (same literals as {@link createThreeGeometraStackedHost}). */
2
+ export type GeometraHudPlacement = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
3
+ /**
4
+ * Normalize HUD corner placement from runtime strings (e.g. agent JSON or untyped config).
5
+ * Leading/trailing whitespace is trimmed and the four known literals are matched **case-insensitively**
6
+ * so payloads stay stable across generators. Unknown or empty values use `fallback` so the overlay
7
+ * keeps a valid `position: absolute` inset.
8
+ */
9
+ export declare function coerceGeometraHudPlacement(value: string | undefined, fallback: GeometraHudPlacement): GeometraHudPlacement;
10
+ /**
11
+ * CSS `pointer-events` for stacked HUD / overlay wrappers: trimmed non-empty strings pass through;
12
+ * otherwise `fallback` (avoids blank or invalid values from untyped config or agent JSON).
13
+ *
14
+ * {@link createThreeGeometraStackedHost} uses this for {@link ThreeGeometraStackedHostOptions.geometraHudPointerEvents}.
15
+ * Use next to {@link coerceHostStackingZIndexCss} when you build a custom stacked layout.
16
+ */
17
+ export declare function coerceGeometraHudPointerEvents(value: string | undefined | null, fallback?: string): string;
18
+ /**
19
+ * Finite, non-negative CSS px for host panel/HUD sizing; invalid values use `fallback`
20
+ * (avoids `NaNpx` / negative sizes in inline styles).
21
+ *
22
+ * Same helper {@link createThreeGeometraSplitHost} and {@link createThreeGeometraStackedHost} use for
23
+ * `geometraWidth`, HUD width/height, and margin. Use when building a custom hybrid layout next to
24
+ * {@link createGeometraHostLayoutSyncRaf} so numeric options stay consistent with those hosts.
25
+ *
26
+ * @param value - Requested size in CSS pixels; non-finite, negative, or non-number values are rejected.
27
+ * @param fallback - Default used when `value` is invalid (match the host default you document, e.g. 420).
28
+ * @returns Either `value` (when valid) or `fallback`.
29
+ */
30
+ export declare function coerceHostNonNegativeCssPx(value: number, fallback: number): number;
31
+ /**
32
+ * CSS `z-index` string for stacked HUD / overlay wrappers: finite numbers and non-blank strings pass
33
+ * through; otherwise `fallback` (avoids `NaN` / `Infinity` in inline styles).
34
+ *
35
+ * {@link createThreeGeometraStackedHost} uses this for {@link ThreeGeometraStackedHostOptions.geometraHudZIndex}.
36
+ * Use in custom stacking layouts next to {@link coerceHostNonNegativeCssPx} for consistent behavior.
37
+ */
38
+ export declare function coerceHostStackingZIndexCss(value: string | number, fallback: number): string;
39
+ //# sourceMappingURL=host-css-coerce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-css-coerce.d.ts","sourceRoot":"","sources":["../src/host-css-coerce.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAA;AAE5F;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,EAAE,oBAAoB,GAC7B,oBAAoB,CAYtB;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAChC,QAAQ,SAAS,GAChB,MAAM,CAMR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS5F"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Normalize HUD corner placement from runtime strings (e.g. agent JSON or untyped config).
3
+ * Leading/trailing whitespace is trimmed and the four known literals are matched **case-insensitively**
4
+ * so payloads stay stable across generators. Unknown or empty values use `fallback` so the overlay
5
+ * keeps a valid `position: absolute` inset.
6
+ */
7
+ export function coerceGeometraHudPlacement(value, fallback) {
8
+ if (typeof value !== 'string')
9
+ return fallback;
10
+ const key = value.trim().toLowerCase();
11
+ switch (key) {
12
+ case 'bottom-right':
13
+ case 'bottom-left':
14
+ case 'top-right':
15
+ case 'top-left':
16
+ return key;
17
+ default:
18
+ return fallback;
19
+ }
20
+ }
21
+ /**
22
+ * CSS `pointer-events` for stacked HUD / overlay wrappers: trimmed non-empty strings pass through;
23
+ * otherwise `fallback` (avoids blank or invalid values from untyped config or agent JSON).
24
+ *
25
+ * {@link createThreeGeometraStackedHost} uses this for {@link ThreeGeometraStackedHostOptions.geometraHudPointerEvents}.
26
+ * Use next to {@link coerceHostStackingZIndexCss} when you build a custom stacked layout.
27
+ */
28
+ export function coerceGeometraHudPointerEvents(value, fallback = 'auto') {
29
+ if (typeof value === 'string') {
30
+ const t = value.trim();
31
+ if (t.length > 0)
32
+ return t;
33
+ }
34
+ return fallback;
35
+ }
36
+ /**
37
+ * Finite, non-negative CSS px for host panel/HUD sizing; invalid values use `fallback`
38
+ * (avoids `NaNpx` / negative sizes in inline styles).
39
+ *
40
+ * Same helper {@link createThreeGeometraSplitHost} and {@link createThreeGeometraStackedHost} use for
41
+ * `geometraWidth`, HUD width/height, and margin. Use when building a custom hybrid layout next to
42
+ * {@link createGeometraHostLayoutSyncRaf} so numeric options stay consistent with those hosts.
43
+ *
44
+ * @param value - Requested size in CSS pixels; non-finite, negative, or non-number values are rejected.
45
+ * @param fallback - Default used when `value` is invalid (match the host default you document, e.g. 420).
46
+ * @returns Either `value` (when valid) or `fallback`.
47
+ */
48
+ export function coerceHostNonNegativeCssPx(value, fallback) {
49
+ return typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : fallback;
50
+ }
51
+ /**
52
+ * CSS `z-index` string for stacked HUD / overlay wrappers: finite numbers and non-blank strings pass
53
+ * through; otherwise `fallback` (avoids `NaN` / `Infinity` in inline styles).
54
+ *
55
+ * {@link createThreeGeometraStackedHost} uses this for {@link ThreeGeometraStackedHostOptions.geometraHudZIndex}.
56
+ * Use in custom stacking layouts next to {@link coerceHostNonNegativeCssPx} for consistent behavior.
57
+ */
58
+ export function coerceHostStackingZIndexCss(value, fallback) {
59
+ if (typeof value === 'number' && Number.isFinite(value)) {
60
+ return String(value);
61
+ }
62
+ if (typeof value === 'string') {
63
+ const t = value.trim();
64
+ if (t.length > 0)
65
+ return t;
66
+ }
67
+ return String(fallback);
68
+ }
69
+ //# sourceMappingURL=host-css-coerce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-css-coerce.js","sourceRoot":"","sources":["../src/host-css-coerce.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAyB,EACzB,QAA8B;IAE9B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACtC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,cAAc,CAAC;QACpB,KAAK,aAAa,CAAC;QACnB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,GAAG,CAAA;QACZ;YACE,OAAO,QAAQ,CAAA;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAAgC,EAChC,QAAQ,GAAG,MAAM;IAEjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAa,EAAE,QAAgB;IACxE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC7F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAsB,EAAE,QAAgB;IAClF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,164 @@
1
+ import { type GeometraHudPlacement } from './host-css-coerce.js';
2
+ import { type GeometraThreeSceneBasicsOptions, type PlainGeometraThreeHostSnapshot } from './three-scene-basics.js';
3
+ /** Resolved Geometra column layout for {@link createThreeGeometraSplitHost} after coercion (JSON-friendly). */
4
+ export interface PlainGeometraSplitHostLayoutOptions {
5
+ geometraWidth: number;
6
+ geometraOnLeft: boolean;
7
+ }
8
+ export interface ToPlainGeometraSplitHostLayoutOptionsInput {
9
+ geometraWidth?: number;
10
+ geometraOnLeft?: boolean;
11
+ }
12
+ /**
13
+ * Resolved split-host layout fields for logs, tests, or agent-side JSON without constructing the DOM host.
14
+ * Uses the same coercion as {@link createThreeGeometraSplitHost}.
15
+ */
16
+ export declare function toPlainGeometraSplitHostLayoutOptions(options?: ToPlainGeometraSplitHostLayoutOptionsInput): PlainGeometraSplitHostLayoutOptions;
17
+ /** Resolved stacked HUD layout for {@link createThreeGeometraStackedHost} after coercion (JSON-friendly). */
18
+ export interface PlainGeometraStackedHostLayoutOptions {
19
+ geometraHudWidth: number;
20
+ geometraHudHeight: number;
21
+ geometraHudPlacement: GeometraHudPlacement;
22
+ geometraHudMargin: number;
23
+ geometraHudPointerEvents: string;
24
+ /** Coerced CSS `z-index` string (same value applied to the HUD wrapper in the stacked host). */
25
+ geometraHudZIndex: string;
26
+ }
27
+ export interface ToPlainGeometraStackedHostLayoutOptionsInput {
28
+ geometraHudWidth?: number;
29
+ geometraHudHeight?: number;
30
+ /** Runtime strings (e.g. from JSON) are normalized like {@link createThreeGeometraStackedHost}. */
31
+ geometraHudPlacement?: GeometraHudPlacement | string;
32
+ geometraHudMargin?: number;
33
+ geometraHudPointerEvents?: string;
34
+ geometraHudZIndex?: string | number;
35
+ }
36
+ /**
37
+ * Resolved stacked HUD layout fields for logs, tests, or agent-side JSON without constructing the DOM host.
38
+ * Uses the same coercion as {@link createThreeGeometraStackedHost}.
39
+ */
40
+ export declare function toPlainGeometraStackedHostLayoutOptions(options?: ToPlainGeometraStackedHostLayoutOptionsInput): PlainGeometraStackedHostLayoutOptions;
41
+ /**
42
+ * Axis-aligned HUD rectangle in the stacked host root’s coordinate system (origin top-left), matching
43
+ * the inset rules used by {@link createThreeGeometraStackedHost} (`right`/`bottom`/`left`/`top` on the
44
+ * absolutely positioned HUD wrapper).
45
+ *
46
+ * Root width and height are normalized with {@link normalizeGeometraLayoutPixels} per axis so they stay
47
+ * aligned with {@link PlainGeometraThreeViewSizingState.layoutWidth} / `layoutHeight` for the same CSS
48
+ * inputs. `width` and `height` are taken from {@link PlainGeometraStackedHostLayoutOptions} as-is.
49
+ *
50
+ * Use for custom overlay geometry, agent hit targets, or stacked layouts built outside this package
51
+ * without calling `getBoundingClientRect`.
52
+ */
53
+ export interface PlainGeometraStackedHudRect {
54
+ left: number;
55
+ top: number;
56
+ width: number;
57
+ height: number;
58
+ }
59
+ /** Fields read by {@link toPlainGeometraStackedHudRect} (satisfied by {@link PlainGeometraStackedHostLayoutOptions} and stacked composite snapshots). */
60
+ export type GeometraStackedHudRectLayoutInput = Pick<PlainGeometraStackedHostLayoutOptions, 'geometraHudWidth' | 'geometraHudHeight' | 'geometraHudPlacement' | 'geometraHudMargin'>;
61
+ /**
62
+ * Compute {@link PlainGeometraStackedHudRect} from resolved stacked layout and root CSS size.
63
+ *
64
+ * @param layout - From {@link toPlainGeometraStackedHostLayoutOptions}, or any object that includes the
65
+ * HUD width/height/placement/margin fields (for example {@link toPlainGeometraThreeStackedHostSnapshot}).
66
+ */
67
+ export declare function toPlainGeometraStackedHudRect(layout: GeometraStackedHudRectLayoutInput, rootCssWidth: number, rootCssHeight: number): PlainGeometraStackedHudRect;
68
+ /** Literal tag on composite plain snapshots so JSON consumers can tell hybrid layout without inferring fields. */
69
+ export type GeometraHybridHostKind = 'split' | 'stacked';
70
+ /** Every {@link GeometraHybridHostKind} value (stable iteration, prompts, or defensive checks). */
71
+ export declare const GEOMETRA_HYBRID_HOST_KINDS: readonly GeometraHybridHostKind[];
72
+ /**
73
+ * Narrow `unknown` to {@link GeometraHybridHostKind} when parsing composite snapshot JSON from logs or agents.
74
+ */
75
+ export declare function isGeometraHybridHostKind(value: unknown): value is GeometraHybridHostKind;
76
+ /**
77
+ * Narrow `unknown` to {@link GeometraHybridHostKind} using the same trim + case-insensitive literals as
78
+ * {@link coerceGeometraHybridHostKind} and {@link isPlainGeometraThreeSplitHostSnapshot} /
79
+ * {@link isPlainGeometraThreeStackedHostSnapshot}. Use when agent or log JSON may carry whitespace or mixed case;
80
+ * prefer {@link isGeometraHybridHostKind} when the value is already normalized.
81
+ */
82
+ export declare function isPlainGeometraHybridHostKind(value: unknown): value is GeometraHybridHostKind;
83
+ /**
84
+ * Normalize {@link GeometraHybridHostKind} from runtime values (e.g. agent JSON or untyped config).
85
+ * Literal `'split'` and `'stacked'` pass through. Strings are trimmed and matched **case-insensitively**;
86
+ * unknown or empty strings use `fallback` (same normalization idea as {@link coerceGeometraHudPlacement}).
87
+ *
88
+ * For narrowing without coercion, use {@link isGeometraHybridHostKind} for exact literals or
89
+ * {@link isPlainGeometraHybridHostKind} when payloads may use whitespace or mixed case.
90
+ */
91
+ export declare function coerceGeometraHybridHostKind(value: unknown, fallback: GeometraHybridHostKind): GeometraHybridHostKind;
92
+ /**
93
+ * Narrow `unknown` (e.g. `JSON.parse`) to {@link PlainGeometraSplitHostLayoutOptions} — the layout-only
94
+ * fields from {@link toPlainGeometraSplitHostLayoutOptions} without viewport or scene sizing. Extra keys
95
+ * are allowed. Composite {@link PlainGeometraThreeSplitHostSnapshot} values satisfy this guard as well.
96
+ */
97
+ export declare function isPlainGeometraSplitHostLayoutOptions(value: unknown): value is PlainGeometraSplitHostLayoutOptions;
98
+ /**
99
+ * Narrow `unknown` (e.g. `JSON.parse`) to {@link PlainGeometraStackedHostLayoutOptions} — the HUD layout
100
+ * fields from {@link toPlainGeometraStackedHostLayoutOptions} without viewport or scene. Extra keys are
101
+ * allowed. `geometraHudPlacement` must be exactly one of the four corner literals (same rule as
102
+ * {@link isPlainGeometraThreeStackedHostSnapshot}; normalize loose strings with {@link coerceGeometraHudPlacement}
103
+ * before asserting). Composite {@link PlainGeometraThreeStackedHostSnapshot} values satisfy this guard too.
104
+ */
105
+ export declare function isPlainGeometraStackedHostLayoutOptions(value: unknown): value is PlainGeometraStackedHostLayoutOptions;
106
+ /**
107
+ * Narrow `unknown` (e.g. `JSON.parse`) to {@link PlainGeometraThreeSplitHostSnapshot} when the object
108
+ * matches the shape produced by {@link toPlainGeometraThreeSplitHostSnapshot} /
109
+ * {@link toPlainGeometraThreeSplitHostSnapshotHeadless}. `geometraHybridHostKind` accepts the same trim +
110
+ * case-insensitive literals as {@link coerceGeometraHybridHostKind} (not only exact `'split'`).
111
+ * `geometraWidth` is finite and **≥ 0**, same as
112
+ * {@link coerceHostNonNegativeCssPx}. Complements {@link isGeometraHybridHostKind} for composite agent or log payloads.
113
+ */
114
+ export declare function isPlainGeometraThreeSplitHostSnapshot(value: unknown): value is PlainGeometraThreeSplitHostSnapshot;
115
+ /**
116
+ * Same idea as {@link isPlainGeometraThreeSplitHostSnapshot} for {@link PlainGeometraThreeStackedHostSnapshot}
117
+ * / {@link toPlainGeometraThreeStackedHostSnapshot} / {@link toPlainGeometraThreeStackedHostSnapshotHeadless}.
118
+ * `geometraHybridHostKind` accepts the same trim + case-insensitive literals as {@link coerceGeometraHybridHostKind}.
119
+ * HUD width, height, and margin are finite and **≥ 0**, same as {@link coerceHostNonNegativeCssPx}.
120
+ */
121
+ export declare function isPlainGeometraThreeStackedHostSnapshot(value: unknown): value is PlainGeometraThreeStackedHostSnapshot;
122
+ /**
123
+ * Split-host layout fields plus {@link PlainGeometraThreeHostSnapshot} in one JSON-friendly object —
124
+ * same coercion as {@link toPlainGeometraSplitHostLayoutOptions} and {@link toPlainGeometraThreeHostSnapshot}.
125
+ *
126
+ * Use for logs, tests, or agent payloads that describe column chrome and Three viewport/scene together.
127
+ * The `geometraHybridHostKind` field is always `'split'` on values from {@link toPlainGeometraThreeSplitHostSnapshot} /
128
+ * {@link toPlainGeometraThreeSplitHostSnapshotHeadless}.
129
+ */
130
+ export type PlainGeometraThreeSplitHostSnapshot = PlainGeometraSplitHostLayoutOptions & PlainGeometraThreeHostSnapshot & {
131
+ geometraHybridHostKind: 'split';
132
+ };
133
+ /**
134
+ * Stacked-host HUD layout plus {@link PlainGeometraThreeHostSnapshot} (full-viewport Three sizing, not HUD box size).
135
+ *
136
+ * Same coercion as {@link toPlainGeometraStackedHostLayoutOptions} and {@link toPlainGeometraThreeHostSnapshot}.
137
+ * The `geometraHybridHostKind` field is always `'stacked'` on values from {@link toPlainGeometraThreeStackedHostSnapshot} /
138
+ * {@link toPlainGeometraThreeStackedHostSnapshotHeadless}.
139
+ */
140
+ export type PlainGeometraThreeStackedHostSnapshot = PlainGeometraStackedHostLayoutOptions & PlainGeometraThreeHostSnapshot & {
141
+ geometraHybridHostKind: 'stacked';
142
+ };
143
+ /**
144
+ * Merge split layout and host viewport/scene plain fields for stable JSON.
145
+ *
146
+ * @see PlainGeometraThreeSplitHostSnapshot
147
+ */
148
+ export declare function toPlainGeometraThreeSplitHostSnapshot(layoutOptions: ToPlainGeometraSplitHostLayoutOptionsInput | undefined, cssWidth: number, cssHeight: number, rawDevicePixelRatio: number, maxDevicePixelRatio?: number, sceneBasicsOptions?: GeometraThreeSceneBasicsOptions): PlainGeometraThreeSplitHostSnapshot;
149
+ /**
150
+ * Same as {@link toPlainGeometraThreeSplitHostSnapshot} with raw device pixel ratio **1** —
151
+ * parity with {@link toPlainGeometraThreeHostSnapshotHeadless} for headless or agent payloads without a `window`.
152
+ */
153
+ export declare function toPlainGeometraThreeSplitHostSnapshotHeadless(layoutOptions: ToPlainGeometraSplitHostLayoutOptionsInput | undefined, cssWidth: number, cssHeight: number, maxDevicePixelRatio?: number, sceneBasicsOptions?: GeometraThreeSceneBasicsOptions): PlainGeometraThreeSplitHostSnapshot;
154
+ /**
155
+ * Merge stacked HUD layout and host viewport/scene plain fields for stable JSON.
156
+ *
157
+ * @see PlainGeometraThreeStackedHostSnapshot
158
+ */
159
+ export declare function toPlainGeometraThreeStackedHostSnapshot(layoutOptions: ToPlainGeometraStackedHostLayoutOptionsInput | undefined, cssWidth: number, cssHeight: number, rawDevicePixelRatio: number, maxDevicePixelRatio?: number, sceneBasicsOptions?: GeometraThreeSceneBasicsOptions): PlainGeometraThreeStackedHostSnapshot;
160
+ /**
161
+ * Same as {@link toPlainGeometraThreeStackedHostSnapshot} with raw device pixel ratio **1**.
162
+ */
163
+ export declare function toPlainGeometraThreeStackedHostSnapshotHeadless(layoutOptions: ToPlainGeometraStackedHostLayoutOptionsInput | undefined, cssWidth: number, cssHeight: number, maxDevicePixelRatio?: number, sceneBasicsOptions?: GeometraThreeSceneBasicsOptions): PlainGeometraThreeStackedHostSnapshot;
164
+ //# sourceMappingURL=host-layout-plain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-layout-plain.d.ts","sourceRoot":"","sources":["../src/host-layout-plain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,255 @@
1
+ import { GEOMETRA_SPLIT_HOST_LAYOUT_DEFAULTS } from './split-host.js';
2
+ import { GEOMETRA_STACKED_HOST_LAYOUT_DEFAULTS } from './stacked-host.js';
3
+ import { coerceGeometraHudPlacement, coerceGeometraHudPointerEvents, coerceHostNonNegativeCssPx, coerceHostStackingZIndexCss, } from './host-css-coerce.js';
4
+ import { isPlainGeometraThreeHostSnapshot, toPlainGeometraThreeHostSnapshot, toPlainGeometraThreeHostSnapshotHeadless, } from './three-scene-basics.js';
5
+ import { normalizeGeometraLayoutPixels } from './utils.js';
6
+ /**
7
+ * Resolved split-host layout fields for logs, tests, or agent-side JSON without constructing the DOM host.
8
+ * Uses the same coercion as {@link createThreeGeometraSplitHost}.
9
+ */
10
+ export function toPlainGeometraSplitHostLayoutOptions(options = {}) {
11
+ const d = GEOMETRA_SPLIT_HOST_LAYOUT_DEFAULTS;
12
+ const geometraWidth = coerceHostNonNegativeCssPx(options.geometraWidth ?? d.geometraWidth, d.geometraWidth);
13
+ return {
14
+ geometraWidth,
15
+ geometraOnLeft: options.geometraOnLeft ?? false,
16
+ };
17
+ }
18
+ /**
19
+ * Resolved stacked HUD layout fields for logs, tests, or agent-side JSON without constructing the DOM host.
20
+ * Uses the same coercion as {@link createThreeGeometraStackedHost}.
21
+ */
22
+ export function toPlainGeometraStackedHostLayoutOptions(options = {}) {
23
+ const d = GEOMETRA_STACKED_HOST_LAYOUT_DEFAULTS;
24
+ const geometraHudWidth = coerceHostNonNegativeCssPx(options.geometraHudWidth ?? d.geometraHudWidth, d.geometraHudWidth);
25
+ const geometraHudHeight = coerceHostNonNegativeCssPx(options.geometraHudHeight ?? d.geometraHudHeight, d.geometraHudHeight);
26
+ const geometraHudMargin = coerceHostNonNegativeCssPx(options.geometraHudMargin ?? d.geometraHudMargin, d.geometraHudMargin);
27
+ const geometraHudPlacementOpt = options.geometraHudPlacement ?? d.geometraHudPlacement;
28
+ const geometraHudPlacement = coerceGeometraHudPlacement(geometraHudPlacementOpt, d.geometraHudPlacement);
29
+ const geometraHudPointerEvents = coerceGeometraHudPointerEvents(options.geometraHudPointerEvents, 'auto');
30
+ const geometraHudZIndex = coerceHostStackingZIndexCss(options.geometraHudZIndex ?? 1, 1);
31
+ return {
32
+ geometraHudWidth,
33
+ geometraHudHeight,
34
+ geometraHudPlacement,
35
+ geometraHudMargin,
36
+ geometraHudPointerEvents,
37
+ geometraHudZIndex,
38
+ };
39
+ }
40
+ /**
41
+ * Compute {@link PlainGeometraStackedHudRect} from resolved stacked layout and root CSS size.
42
+ *
43
+ * @param layout - From {@link toPlainGeometraStackedHostLayoutOptions}, or any object that includes the
44
+ * HUD width/height/placement/margin fields (for example {@link toPlainGeometraThreeStackedHostSnapshot}).
45
+ */
46
+ export function toPlainGeometraStackedHudRect(layout, rootCssWidth, rootCssHeight) {
47
+ const rw = normalizeGeometraLayoutPixels(rootCssWidth);
48
+ const rh = normalizeGeometraLayoutPixels(rootCssHeight);
49
+ const { geometraHudWidth: w, geometraHudHeight: h, geometraHudPlacement: p, geometraHudMargin: m } = layout;
50
+ switch (p) {
51
+ case 'bottom-right':
52
+ return { left: rw - w - m, top: rh - h - m, width: w, height: h };
53
+ case 'bottom-left':
54
+ return { left: m, top: rh - h - m, width: w, height: h };
55
+ case 'top-right':
56
+ return { left: rw - w - m, top: m, width: w, height: h };
57
+ case 'top-left':
58
+ return { left: m, top: m, width: w, height: h };
59
+ }
60
+ }
61
+ /** Every {@link GeometraHybridHostKind} value (stable iteration, prompts, or defensive checks). */
62
+ export const GEOMETRA_HYBRID_HOST_KINDS = ['split', 'stacked'];
63
+ /**
64
+ * Parse a {@link GeometraHybridHostKind} from loose input (trim + case-insensitive literals) without a fallback.
65
+ * Used by {@link coerceGeometraHybridHostKind} and composite {@link isPlainGeometraThreeSplitHostSnapshot} /
66
+ * {@link isPlainGeometraThreeStackedHostSnapshot} guards so agent JSON matches coercion rules.
67
+ */
68
+ function parseGeometraHybridHostKindLiteral(value) {
69
+ if (value === 'split' || value === 'stacked')
70
+ return value;
71
+ if (typeof value !== 'string')
72
+ return undefined;
73
+ const key = value.trim().toLowerCase();
74
+ if (key === 'split' || key === 'stacked')
75
+ return key;
76
+ return undefined;
77
+ }
78
+ /**
79
+ * Narrow `unknown` to {@link GeometraHybridHostKind} when parsing composite snapshot JSON from logs or agents.
80
+ */
81
+ export function isGeometraHybridHostKind(value) {
82
+ return value === 'split' || value === 'stacked';
83
+ }
84
+ /**
85
+ * Narrow `unknown` to {@link GeometraHybridHostKind} using the same trim + case-insensitive literals as
86
+ * {@link coerceGeometraHybridHostKind} and {@link isPlainGeometraThreeSplitHostSnapshot} /
87
+ * {@link isPlainGeometraThreeStackedHostSnapshot}. Use when agent or log JSON may carry whitespace or mixed case;
88
+ * prefer {@link isGeometraHybridHostKind} when the value is already normalized.
89
+ */
90
+ export function isPlainGeometraHybridHostKind(value) {
91
+ return parseGeometraHybridHostKindLiteral(value) !== undefined;
92
+ }
93
+ /**
94
+ * Normalize {@link GeometraHybridHostKind} from runtime values (e.g. agent JSON or untyped config).
95
+ * Literal `'split'` and `'stacked'` pass through. Strings are trimmed and matched **case-insensitively**;
96
+ * unknown or empty strings use `fallback` (same normalization idea as {@link coerceGeometraHudPlacement}).
97
+ *
98
+ * For narrowing without coercion, use {@link isGeometraHybridHostKind} for exact literals or
99
+ * {@link isPlainGeometraHybridHostKind} when payloads may use whitespace or mixed case.
100
+ */
101
+ export function coerceGeometraHybridHostKind(value, fallback) {
102
+ return parseGeometraHybridHostKindLiteral(value) ?? fallback;
103
+ }
104
+ const GEOMETRA_HUD_PLACEMENT_LITERALS = new Set([
105
+ 'bottom-right',
106
+ 'bottom-left',
107
+ 'top-right',
108
+ 'top-left',
109
+ ]);
110
+ /**
111
+ * Narrow `unknown` (e.g. `JSON.parse`) to {@link PlainGeometraSplitHostLayoutOptions} — the layout-only
112
+ * fields from {@link toPlainGeometraSplitHostLayoutOptions} without viewport or scene sizing. Extra keys
113
+ * are allowed. Composite {@link PlainGeometraThreeSplitHostSnapshot} values satisfy this guard as well.
114
+ */
115
+ export function isPlainGeometraSplitHostLayoutOptions(value) {
116
+ if (value === null || typeof value !== 'object')
117
+ return false;
118
+ const o = value;
119
+ if (typeof o.geometraOnLeft !== 'boolean')
120
+ return false;
121
+ if (typeof o.geometraWidth !== 'number' || !Number.isFinite(o.geometraWidth) || o.geometraWidth < 0) {
122
+ return false;
123
+ }
124
+ return true;
125
+ }
126
+ /**
127
+ * Narrow `unknown` (e.g. `JSON.parse`) to {@link PlainGeometraStackedHostLayoutOptions} — the HUD layout
128
+ * fields from {@link toPlainGeometraStackedHostLayoutOptions} without viewport or scene. Extra keys are
129
+ * allowed. `geometraHudPlacement` must be exactly one of the four corner literals (same rule as
130
+ * {@link isPlainGeometraThreeStackedHostSnapshot}; normalize loose strings with {@link coerceGeometraHudPlacement}
131
+ * before asserting). Composite {@link PlainGeometraThreeStackedHostSnapshot} values satisfy this guard too.
132
+ */
133
+ export function isPlainGeometraStackedHostLayoutOptions(value) {
134
+ if (value === null || typeof value !== 'object')
135
+ return false;
136
+ const o = value;
137
+ if (typeof o.geometraHudWidth !== 'number' ||
138
+ !Number.isFinite(o.geometraHudWidth) ||
139
+ o.geometraHudWidth < 0 ||
140
+ typeof o.geometraHudHeight !== 'number' ||
141
+ !Number.isFinite(o.geometraHudHeight) ||
142
+ o.geometraHudHeight < 0 ||
143
+ typeof o.geometraHudMargin !== 'number' ||
144
+ !Number.isFinite(o.geometraHudMargin) ||
145
+ o.geometraHudMargin < 0) {
146
+ return false;
147
+ }
148
+ if (typeof o.geometraHudPlacement !== 'string' || !GEOMETRA_HUD_PLACEMENT_LITERALS.has(o.geometraHudPlacement)) {
149
+ return false;
150
+ }
151
+ if (typeof o.geometraHudPointerEvents !== 'string')
152
+ return false;
153
+ if (typeof o.geometraHudZIndex !== 'string')
154
+ return false;
155
+ return true;
156
+ }
157
+ /**
158
+ * Narrow `unknown` (e.g. `JSON.parse`) to {@link PlainGeometraThreeSplitHostSnapshot} when the object
159
+ * matches the shape produced by {@link toPlainGeometraThreeSplitHostSnapshot} /
160
+ * {@link toPlainGeometraThreeSplitHostSnapshotHeadless}. `geometraHybridHostKind` accepts the same trim +
161
+ * case-insensitive literals as {@link coerceGeometraHybridHostKind} (not only exact `'split'`).
162
+ * `geometraWidth` is finite and **≥ 0**, same as
163
+ * {@link coerceHostNonNegativeCssPx}. Complements {@link isGeometraHybridHostKind} for composite agent or log payloads.
164
+ */
165
+ export function isPlainGeometraThreeSplitHostSnapshot(value) {
166
+ if (value === null || typeof value !== 'object')
167
+ return false;
168
+ const o = value;
169
+ if (parseGeometraHybridHostKindLiteral(o.geometraHybridHostKind) !== 'split')
170
+ return false;
171
+ if (typeof o.geometraOnLeft !== 'boolean')
172
+ return false;
173
+ if (typeof o.geometraWidth !== 'number' || !Number.isFinite(o.geometraWidth) || o.geometraWidth < 0) {
174
+ return false;
175
+ }
176
+ return isPlainGeometraThreeHostSnapshot(value);
177
+ }
178
+ /**
179
+ * Same idea as {@link isPlainGeometraThreeSplitHostSnapshot} for {@link PlainGeometraThreeStackedHostSnapshot}
180
+ * / {@link toPlainGeometraThreeStackedHostSnapshot} / {@link toPlainGeometraThreeStackedHostSnapshotHeadless}.
181
+ * `geometraHybridHostKind` accepts the same trim + case-insensitive literals as {@link coerceGeometraHybridHostKind}.
182
+ * HUD width, height, and margin are finite and **≥ 0**, same as {@link coerceHostNonNegativeCssPx}.
183
+ */
184
+ export function isPlainGeometraThreeStackedHostSnapshot(value) {
185
+ if (value === null || typeof value !== 'object')
186
+ return false;
187
+ const o = value;
188
+ if (parseGeometraHybridHostKindLiteral(o.geometraHybridHostKind) !== 'stacked')
189
+ return false;
190
+ if (typeof o.geometraHudWidth !== 'number' ||
191
+ !Number.isFinite(o.geometraHudWidth) ||
192
+ o.geometraHudWidth < 0 ||
193
+ typeof o.geometraHudHeight !== 'number' ||
194
+ !Number.isFinite(o.geometraHudHeight) ||
195
+ o.geometraHudHeight < 0 ||
196
+ typeof o.geometraHudMargin !== 'number' ||
197
+ !Number.isFinite(o.geometraHudMargin) ||
198
+ o.geometraHudMargin < 0) {
199
+ return false;
200
+ }
201
+ if (typeof o.geometraHudPlacement !== 'string' || !GEOMETRA_HUD_PLACEMENT_LITERALS.has(o.geometraHudPlacement)) {
202
+ return false;
203
+ }
204
+ if (typeof o.geometraHudPointerEvents !== 'string')
205
+ return false;
206
+ if (typeof o.geometraHudZIndex !== 'string')
207
+ return false;
208
+ return isPlainGeometraThreeHostSnapshot(value);
209
+ }
210
+ /**
211
+ * Merge split layout and host viewport/scene plain fields for stable JSON.
212
+ *
213
+ * @see PlainGeometraThreeSplitHostSnapshot
214
+ */
215
+ export function toPlainGeometraThreeSplitHostSnapshot(layoutOptions = {}, cssWidth, cssHeight, rawDevicePixelRatio, maxDevicePixelRatio, sceneBasicsOptions = {}) {
216
+ return {
217
+ geometraHybridHostKind: 'split',
218
+ ...toPlainGeometraSplitHostLayoutOptions(layoutOptions),
219
+ ...toPlainGeometraThreeHostSnapshot(cssWidth, cssHeight, rawDevicePixelRatio, maxDevicePixelRatio, sceneBasicsOptions),
220
+ };
221
+ }
222
+ /**
223
+ * Same as {@link toPlainGeometraThreeSplitHostSnapshot} with raw device pixel ratio **1** —
224
+ * parity with {@link toPlainGeometraThreeHostSnapshotHeadless} for headless or agent payloads without a `window`.
225
+ */
226
+ export function toPlainGeometraThreeSplitHostSnapshotHeadless(layoutOptions = {}, cssWidth, cssHeight, maxDevicePixelRatio, sceneBasicsOptions = {}) {
227
+ return {
228
+ geometraHybridHostKind: 'split',
229
+ ...toPlainGeometraSplitHostLayoutOptions(layoutOptions),
230
+ ...toPlainGeometraThreeHostSnapshotHeadless(cssWidth, cssHeight, maxDevicePixelRatio, sceneBasicsOptions),
231
+ };
232
+ }
233
+ /**
234
+ * Merge stacked HUD layout and host viewport/scene plain fields for stable JSON.
235
+ *
236
+ * @see PlainGeometraThreeStackedHostSnapshot
237
+ */
238
+ export function toPlainGeometraThreeStackedHostSnapshot(layoutOptions = {}, cssWidth, cssHeight, rawDevicePixelRatio, maxDevicePixelRatio, sceneBasicsOptions = {}) {
239
+ return {
240
+ geometraHybridHostKind: 'stacked',
241
+ ...toPlainGeometraStackedHostLayoutOptions(layoutOptions),
242
+ ...toPlainGeometraThreeHostSnapshot(cssWidth, cssHeight, rawDevicePixelRatio, maxDevicePixelRatio, sceneBasicsOptions),
243
+ };
244
+ }
245
+ /**
246
+ * Same as {@link toPlainGeometraThreeStackedHostSnapshot} with raw device pixel ratio **1**.
247
+ */
248
+ export function toPlainGeometraThreeStackedHostSnapshotHeadless(layoutOptions = {}, cssWidth, cssHeight, maxDevicePixelRatio, sceneBasicsOptions = {}) {
249
+ return {
250
+ geometraHybridHostKind: 'stacked',
251
+ ...toPlainGeometraStackedHostLayoutOptions(layoutOptions),
252
+ ...toPlainGeometraThreeHostSnapshotHeadless(cssWidth, cssHeight, maxDevicePixelRatio, sceneBasicsOptions),
253
+ };
254
+ }
255
+ //# sourceMappingURL=host-layout-plain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-layout-plain.js","sourceRoot":"","sources":["../src/host-layout-plain.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,44 @@
1
- export { createThreeGeometraSplitHost, type ThreeGeometraSplitHostHandle, type ThreeGeometraSplitHostOptions, type ThreeFrameContext, type ThreeRuntimeContext, } from './split-host.js';
2
- export { setWebGLDrawingBufferSize } from './utils.js';
1
+ /**
2
+ * `@geometra/renderer-three` split/stacked Three.js + Geometra canvas hosts, WebGL sizing helpers
3
+ * ({@link resizeGeometraThreePerspectiveView}, {@link toPlainGeometraThreeViewSizingState}, {@link isPlainGeometraThreeViewSizingState}, {@link resizeGeometraThreeDrawingBufferView} / {@link resizeGeometraThreeDrawingBufferViewHeadless}, DPR capping, {@link GEOMETRA_HEADLESS_RAW_DEVICE_PIXEL_RATIO}, {@link resolveHeadlessHostDevicePixelRatio}, {@link createGeometraThreePerspectiveResizeHandlerHeadless}), shared scene defaults
4
+ * ({@link createGeometraThreeSceneBasics}, {@link resolveGeometraThreeSceneBasicsOptions}, {@link toPlainGeometraThreeSceneBasicsOptions},
5
+ * {@link createGeometraThreeSceneBasicsFromPlain},
6
+ * {@link createGeometraThreeWebGLWithSceneBasics}, {@link createGeometraThreeWebGLWithSceneBasicsFromPlain},
7
+ * {@link resizeGeometraThreeWebGLWithSceneBasicsView}, {@link resizeGeometraThreeWebGLWithSceneBasicsViewHeadless},
8
+ * {@link resizeGeometraThreeWebGLWithSceneBasicsViewFromPlainViewSizing},
9
+ * {@link toPlainGeometraThreeViewSizingStateHeadless},
10
+ * {@link renderGeometraThreeWebGLWithSceneBasicsFrame},
11
+ * {@link tickGeometraThreeWebGLWithSceneBasicsFrame} (`onFrame` may return `false` to skip `render` and make the tick return `false`; {@link disposeGeometraThreeWebGLWithSceneBasics} inside `onFrame` skips `render` too, like host {@link ThreeRuntimeContext.destroy}; if `onFrame` throws, the error propagates and `render` is not called, matching split/stacked {@link ThreeGeometraSplitHostOptions.onThreeFrame} ordering), {@link resizeTickGeometraThreeWebGLWithSceneBasics} (resize + tick with explicit raw DPR), {@link resizeTickGeometraThreeWebGLWithSceneBasicsFromPlainViewSizing} (resize + tick from plain {@link PlainGeometraThreeViewSizingState}), {@link resizeTickGeometraThreeWebGLWithSceneBasicsFromPlainHostSnapshot} (same from full {@link PlainGeometraThreeHostSnapshot} / composite JSON), {@link resizeTickGeometraThreeWebGLWithSceneBasicsHeadless} (same with raw DPR **1**), {@link disposeGeometraThreeWebGLWithSceneBasics} (optional `clock` stops timing after dispose),
12
+ * {@link toPlainGeometraThreeHostSnapshot}, {@link toPlainGeometraThreeHostSnapshotHeadless},
13
+ * {@link toPlainGeometraThreeHostSnapshotFromViewSizing}, {@link mergePlainGeometraThreeHostSnapshot},
14
+ * {@link toPlainGeometraSplitHostLayoutOptions} / {@link toPlainGeometraStackedHostLayoutOptions},
15
+ * {@link toPlainGeometraThreeSplitHostSnapshot} / {@link toPlainGeometraThreeStackedHostSnapshot} (and headless variants)
16
+ * for JSON-stable split/stacked layout plus viewport/scene in one object ({@link isGeometraHybridHostKind}, {@link coerceGeometraHybridHostKind}, {@link GEOMETRA_HYBRID_HOST_KINDS},
17
+ * {@link isPlainGeometraThreeHostSnapshot}, {@link isPlainGeometraThreeSceneBasicsOptions}, {@link isPlainGeometraSplitHostLayoutOptions}, {@link isPlainGeometraStackedHostLayoutOptions},
18
+ * {@link isPlainGeometraThreeSplitHostSnapshot}, {@link isPlainGeometraThreeStackedHostSnapshot}, {@link isPlainGeometraHybridHostKind}),
19
+ * {@link toPlainGeometraStackedHudRect} for stacked HUD box math (same insets as {@link createThreeGeometraStackedHost}), and
20
+ * {@link createGeometraHostLayoutSyncRaf} for custom hybrid layouts, {@link coerceHostStackingZIndexCss},
21
+ * {@link coerceGeometraHudPointerEvents}, and {@link coerceGeometraHudPlacement} for stacked-overlay stacking and
22
+ * HUD corner rules, and {@link GEOMETRA_SPLIT_HOST_LAYOUT_DEFAULTS} /
23
+ * {@link GEOMETRA_STACKED_HOST_LAYOUT_DEFAULTS} for host layout defaults (custom layouts, logs, agent payloads).
24
+ */
25
+ export { createThreeGeometraSplitHost, GEOMETRA_SPLIT_HOST_LAYOUT_DEFAULTS, type GeometraHostBrowserCanvasClientOptions, type ThreeGeometraSplitHostHandle, type ThreeGeometraSplitHostOptions, type ThreeFrameContext, type ThreeRuntimeContext, } from './split-host.js';
26
+ export { createThreeGeometraStackedHost, GEOMETRA_STACKED_HOST_LAYOUT_DEFAULTS, type ThreeGeometraStackedHostHandle, type ThreeGeometraStackedHostOptions, } from './stacked-host.js';
27
+ export { GEOMETRA_HEADLESS_RAW_DEVICE_PIXEL_RATIO, createGeometraThreePerspectiveResizeHandler, createGeometraThreePerspectiveResizeHandlerHeadless, geometraHostPerspectiveAspectFromCss, isPlainGeometraThreeViewSizingState, normalizeGeometraLayoutPixels, resizeGeometraThreeDrawingBufferView, resizeGeometraThreeDrawingBufferViewHeadless, resizeGeometraThreePerspectiveView, resolveHeadlessHostDevicePixelRatio, resolveHostDevicePixelRatio, setWebGLDrawingBufferSize, syncGeometraThreePerspectiveFromBuffer, toPlainGeometraThreeViewSizingState, toPlainGeometraThreeViewSizingStateHeadless, type PlainGeometraThreeViewSizingState, } from './utils.js';
28
+ export { GEOMETRA_HOST_WEBGL_RENDERER_OPTIONS, GEOMETRA_THREE_HOST_SCENE_DEFAULTS, createGeometraHostWebGLRendererParams, createGeometraThreeSceneBasics, createGeometraThreeSceneBasicsFromPlain, resolveGeometraThreeSceneBasicsOptions, toPlainGeometraThreeSceneBasicsOptions, toPlainGeometraThreeHostSnapshot, toPlainGeometraThreeHostSnapshotHeadless, toPlainGeometraThreeHostSnapshotFromViewSizing, mergePlainGeometraThreeHostSnapshot, createGeometraThreeWebGLRenderer, createGeometraThreeWebGLWithSceneBasics, createGeometraThreeWebGLWithSceneBasicsFromPlain, disposeGeometraThreeWebGLWithSceneBasics, isPlainGeometraThreeHostSnapshot, isPlainGeometraThreeSceneBasicsOptions, renderGeometraThreeWebGLWithSceneBasicsFrame, tickGeometraThreeWebGLWithSceneBasicsFrame, resizeGeometraThreeWebGLWithSceneBasicsView, resizeGeometraThreeWebGLWithSceneBasicsViewHeadless, resizeGeometraThreeWebGLWithSceneBasicsViewFromPlainViewSizing, resizeTickGeometraThreeWebGLWithSceneBasics, resizeTickGeometraThreeWebGLWithSceneBasicsFromPlainViewSizing, resizeTickGeometraThreeWebGLWithSceneBasicsFromPlainHostSnapshot, resizeTickGeometraThreeWebGLWithSceneBasicsHeadless, type GeometraThreeSceneBasics, type GeometraThreeSceneBasicsOptions, type PlainGeometraThreeSceneBasicsOptions, type PlainGeometraThreeHostSnapshot, type GeometraThreeWebGLWithSceneBasics, type GeometraThreeWebGLWithSceneBasicsTickContext, } from './three-scene-basics.js';
29
+ export { createGeometraHostLayoutSyncRaf, type GeometraHostLayoutSyncRaf, type GeometraHostLayoutSyncRafOptions, } from './layout-sync.js';
30
+ export { coerceGeometraHudPlacement, coerceGeometraHudPointerEvents, coerceHostNonNegativeCssPx, coerceHostStackingZIndexCss, } from './host-css-coerce.js';
31
+ export type { GeometraHudPlacement } from './host-css-coerce.js';
32
+ export { GEOMETRA_HYBRID_HOST_KINDS, coerceGeometraHybridHostKind, isGeometraHybridHostKind, isPlainGeometraHybridHostKind, isPlainGeometraSplitHostLayoutOptions, isPlainGeometraStackedHostLayoutOptions, isPlainGeometraThreeSplitHostSnapshot, isPlainGeometraThreeStackedHostSnapshot, toPlainGeometraSplitHostLayoutOptions, toPlainGeometraStackedHostLayoutOptions, toPlainGeometraThreeSplitHostSnapshot, toPlainGeometraThreeSplitHostSnapshotHeadless, toPlainGeometraThreeStackedHostSnapshot, toPlainGeometraThreeStackedHostSnapshotHeadless, toPlainGeometraStackedHudRect, type GeometraHybridHostKind, type GeometraStackedHudRectLayoutInput, type PlainGeometraStackedHudRect, type PlainGeometraSplitHostLayoutOptions, type PlainGeometraStackedHostLayoutOptions, type PlainGeometraThreeSplitHostSnapshot, type PlainGeometraThreeStackedHostSnapshot, type ToPlainGeometraSplitHostLayoutOptionsInput, type ToPlainGeometraStackedHostLayoutOptionsInput, } from './host-layout-plain.js';
33
+ /**
34
+ * WebSocket **data channel** id for tracker snapshot JSON on the GEOM socket (re-exported from
35
+ * `@geometra/client`). Use in `onData` handlers passed through {@link createThreeGeometraSplitHost} /
36
+ * {@link createThreeGeometraStackedHost} so comparisons stay aligned with the thin client and agent
37
+ * payloads without importing `@geometra/client` only for this string.
38
+ *
39
+ * The runtime value is **`geom.tracker.snapshot`**; `npm run release:gate` asserts it still matches
40
+ * the installed `@geometra/client` package.
41
+ */
42
+ export { GEOM_DATA_CHANNEL_TRACKER_SNAPSHOT } from '@geometra/client';
43
+ export { Scene3dManager } from './scene3d-manager.js';
3
44
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EACL,4BAA4B,EAC5B,mCAAmC,EACnC,KAAK,sCAAsC,EAC3C,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,8BAA8B,EAC9B,qCAAqC,EACrC,KAAK,8BAA8B,EACnC,KAAK,+BAA+B,GACrC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,wCAAwC,EACxC,2CAA2C,EAC3C,mDAAmD,EACnD,oCAAoC,EACpC,mCAAmC,EACnC,6BAA6B,EAC7B,oCAAoC,EACpC,4CAA4C,EAC5C,kCAAkC,EAClC,mCAAmC,EACnC,2BAA2B,EAC3B,yBAAyB,EACzB,sCAAsC,EACtC,mCAAmC,EACnC,2CAA2C,EAC3C,KAAK,iCAAiC,GACvC,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,oCAAoC,EACpC,kCAAkC,EAClC,qCAAqC,EACrC,8BAA8B,EAC9B,uCAAuC,EACvC,sCAAsC,EACtC,sCAAsC,EACtC,gCAAgC,EAChC,wCAAwC,EACxC,8CAA8C,EAC9C,mCAAmC,EACnC,gCAAgC,EAChC,uCAAuC,EACvC,gDAAgD,EAChD,wCAAwC,EACxC,gCAAgC,EAChC,sCAAsC,EACtC,4CAA4C,EAC5C,0CAA0C,EAC1C,2CAA2C,EAC3C,mDAAmD,EACnD,8DAA8D,EAC9D,2CAA2C,EAC3C,8DAA8D,EAC9D,gEAAgE,EAChE,mDAAmD,EACnD,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EACzC,KAAK,8BAA8B,EACnC,KAAK,iCAAiC,EACtC,KAAK,4CAA4C,GAClD,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,+BAA+B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,GACtC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,6BAA6B,EAC7B,qCAAqC,EACrC,uCAAuC,EACvC,qCAAqC,EACrC,uCAAuC,EACvC,qCAAqC,EACrC,uCAAuC,EACvC,qCAAqC,EACrC,6CAA6C,EAC7C,uCAAuC,EACvC,+CAA+C,EAC/C,6BAA6B,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,KAAK,2BAA2B,EAChC,KAAK,mCAAmC,EACxC,KAAK,qCAAqC,EAC1C,KAAK,mCAAmC,EACxC,KAAK,qCAAqC,EAC1C,KAAK,0CAA0C,EAC/C,KAAK,4CAA4C,GAClD,MAAM,wBAAwB,CAAA;AAE/B;;;;;;;;GAQG;AACH,OAAO,EAAE,kCAAkC,EAAE,MAAM,kBAAkB,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}