@fundamental-engine/vanilla 0.4.0 → 0.5.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.
package/dist/field.d.ts CHANGED
@@ -16,7 +16,7 @@
16
16
  * // field.scan(); field.destroy();
17
17
  * ```
18
18
  */
19
- import { type AtomPayload, type FieldHandle, type FieldOptions, type ThreadLink, type FlowOptions } from '@fundamental-engine/core';
19
+ import { type AgentHandle, type AgentSpec, type AtomPayload, type FieldHandle, type FieldOptions, type ThreadLink, type FlowOptions, type ScalarGrid, type FieldEventType, type FieldEventMap, type BodySpec, type BodyHandle, type FieldChannelHandle } from '@fundamental-engine/core';
20
20
  export interface FieldFieldInit extends FieldOptions {
21
21
  /** drive a `<canvas>` you own; when omitted, a managed full-viewport canvas is created
22
22
  * (and removed again by `destroy()`). */
@@ -47,6 +47,8 @@ export declare class FieldField implements FieldHandle {
47
47
  setCausality(on: boolean): void;
48
48
  /** toggle the density heatmap layer (field-systems H1) live. */
49
49
  setHeatmap(on: boolean): void;
50
+ /** lower/raise the backing-store DPR ceiling at runtime (the dominant fill-rate lever). */
51
+ setDprCap(cap: number): void;
50
52
  /** switch the underlay render mode (§20.6) live. */
51
53
  setRender(mode: Parameters<FieldHandle['setRender']>[0]): void;
52
54
  /** render a field-structure visualization on the overlay surface (in front of content). */
@@ -60,12 +62,22 @@ export declare class FieldField implements FieldHandle {
60
62
  /** remove the flow focus. */
61
63
  clearFlow(): void;
62
64
  seed(atoms: readonly AtomPayload[]): void;
65
+ /** add an engine-stepped agent (a mesh-bound participant the integrator moves). */
66
+ addAgent(spec: AgentSpec): AgentHandle;
67
+ /** add a programmatic body (no DOM) from a spec — carries data + per-body feedback; survives rescan. */
68
+ addBody(spec: BodySpec): BodyHandle;
69
+ /** register a named external scalar field channel the engine samples on its read path. */
70
+ addField(name: string, sampler: (x: number, y: number) => number): FieldChannelHandle;
71
+ /** sample a registered field channel at (x, y); 0 for an unknown channel. */
72
+ sampleField(name: string, x: number, y: number): number;
63
73
  atomAt(x: number, y: number): AtomPayload | null;
64
74
  focusAt(x: number, y: number): AtomPayload | null;
65
75
  clearFocus(): void;
66
76
  particleCount(): number;
67
77
  /** copy live particle state into `out` (stride 5: x, y, z, heat, size); returns the count written. */
68
78
  readParticles(out: Float32Array): number;
79
+ /** copy each live particle's stable id into a Uint32Array, parallel to readParticles. */
80
+ readParticleIds(out: Uint32Array): number;
69
81
  energy(): {
70
82
  kinetic: number;
71
83
  thermal: number;
@@ -77,6 +89,17 @@ export declare class FieldField implements FieldHandle {
77
89
  x: number;
78
90
  y: number;
79
91
  };
92
+ /** sample the smooth density scalar ∈ [0,1] at `(x, y)` (needs `heatmap: true`); 0 when off. */
93
+ sampleScalar(x: number, y: number): number;
94
+ /** sample the density gradient ∇ at `(x, y)` — up-density direction (needs `heatmap: true`); `{0,0}` when off. */
95
+ sampleGradient(x: number, y: number): {
96
+ x: number;
97
+ y: number;
98
+ };
99
+ /** open a named host-authorable scalar grid (deposit/sample/gradient/decay) — a scent/wear/goal field. */
100
+ grid(name: string): ScalarGrid;
101
+ /** subscribe to a discrete field event (absorb/release/settle); returns an unsubscribe fn. */
102
+ on<K extends FieldEventType>(type: K, cb: (e: FieldEventMap[K]) => void): () => void;
80
103
  scrollV(): number;
81
104
  setVisible(on: boolean): void;
82
105
  setBackground(mode: Parameters<FieldHandle['setBackground']>[0]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"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"}
package/dist/field.js CHANGED
@@ -64,6 +64,10 @@ export class FieldField {
64
64
  setHeatmap(on) {
65
65
  this.field.setHeatmap(on);
66
66
  }
67
+ /** lower/raise the backing-store DPR ceiling at runtime (the dominant fill-rate lever). */
68
+ setDprCap(cap) {
69
+ this.field.setDprCap(cap);
70
+ }
67
71
  /** switch the underlay render mode (§20.6) live. */
68
72
  setRender(mode) {
69
73
  this.field.setRender(mode);
@@ -91,6 +95,22 @@ export class FieldField {
91
95
  seed(atoms) {
92
96
  this.field.seed(atoms);
93
97
  }
98
+ /** add an engine-stepped agent (a mesh-bound participant the integrator moves). */
99
+ addAgent(spec) {
100
+ return this.field.addAgent(spec);
101
+ }
102
+ /** add a programmatic body (no DOM) from a spec — carries data + per-body feedback; survives rescan. */
103
+ addBody(spec) {
104
+ return this.field.addBody(spec);
105
+ }
106
+ /** register a named external scalar field channel the engine samples on its read path. */
107
+ addField(name, sampler) {
108
+ return this.field.addField(name, sampler);
109
+ }
110
+ /** sample a registered field channel at (x, y); 0 for an unknown channel. */
111
+ sampleField(name, x, y) {
112
+ return this.field.sampleField(name, x, y);
113
+ }
94
114
  atomAt(x, y) {
95
115
  return this.field.atomAt(x, y);
96
116
  }
@@ -107,6 +127,10 @@ export class FieldField {
107
127
  readParticles(out) {
108
128
  return this.field.readParticles(out);
109
129
  }
130
+ /** copy each live particle's stable id into a Uint32Array, parallel to readParticles. */
131
+ readParticleIds(out) {
132
+ return this.field.readParticleIds(out);
133
+ }
110
134
  energy() {
111
135
  return this.field.energy();
112
136
  }
@@ -114,6 +138,22 @@ export class FieldField {
114
138
  sample(x, y) {
115
139
  return this.field.sample(x, y);
116
140
  }
141
+ /** sample the smooth density scalar ∈ [0,1] at `(x, y)` (needs `heatmap: true`); 0 when off. */
142
+ sampleScalar(x, y) {
143
+ return this.field.sampleScalar(x, y);
144
+ }
145
+ /** sample the density gradient ∇ at `(x, y)` — up-density direction (needs `heatmap: true`); `{0,0}` when off. */
146
+ sampleGradient(x, y) {
147
+ return this.field.sampleGradient(x, y);
148
+ }
149
+ /** open a named host-authorable scalar grid (deposit/sample/gradient/decay) — a scent/wear/goal field. */
150
+ grid(name) {
151
+ return this.field.grid(name);
152
+ }
153
+ /** subscribe to a discrete field event (absorb/release/settle); returns an unsubscribe fn. */
154
+ on(type, cb) {
155
+ return this.field.on(type, cb);
156
+ }
117
157
  scrollV() {
118
158
  return this.field.scrollV();
119
159
  }
package/dist/field.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../src/field.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export type { FieldFieldInit } from './field.ts';
14
14
  export { mountField, makeFieldCanvas } from './mount.ts';
15
15
  export type { MountOptions } from './mount.ts';
16
16
  export { createBrowserField as createField, browserHost } from '@fundamental-engine/platform';
17
- export type { FieldHandle, FieldOptions, ThreadLink, Particle, Body, Force, Formation, Vec2, } from '@fundamental-engine/core';
17
+ export type { FieldHandle, FieldOptions, ThreadLink, Particle, Body, Force, Formation, Vec2, AgentSpec, AgentHandle, AtomPayload, FeedbackSink, FeedbackChannels, } from '@fundamental-engine/core';
18
+ export { cssFeedbackSink } from '@fundamental-engine/core';
18
19
  export { FORCES, FORMATIONS, CONDITIONS, PALETTE } from '@fundamental-engine/core';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,OAAO,EAAE,kBAAkB,IAAI,WAAW,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC9F,YAAY,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,SAAS,EACT,IAAI,GACL,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,OAAO,EAAE,kBAAkB,IAAI,WAAW,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC9F,YAAY,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,SAAS,EACT,IAAI,EACJ,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI3D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -15,6 +15,8 @@ export { mountField, makeFieldCanvas } from "./mount.js";
15
15
  // `createBrowserField` = `createField` + `browserHost()`; re-exported here as `createField` so the
16
16
  // framework-free door stays a one-liner. `browserHost` is re-exported for custom wiring.
17
17
  export { createBrowserField as createField, browserHost } from '@fundamental-engine/platform';
18
+ // the feedback CSS adapter, for a host that wants the default DOM write path explicitly.
19
+ export { cssFeedbackSink } from '@fundamental-engine/core';
18
20
  // The catalog data a vanilla UI commonly reads — the force list, formations, `data-when`
19
21
  // gates, and the palette — so a force picker or legend needs no second install.
20
22
  export { FORCES, FORMATIONS, CONDITIONS, PALETTE } from '@fundamental-engine/core';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGzD,+FAA+F;AAC/F,mGAAmG;AACnG,yFAAyF;AACzF,OAAO,EAAE,kBAAkB,IAAI,WAAW,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAY9F,yFAAyF;AACzF,gFAAgF;AAChF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGzD,+FAA+F;AAC/F,mGAAmG;AACnG,yFAAyF;AACzF,OAAO,EAAE,kBAAkB,IAAI,WAAW,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAgB9F,yFAAyF;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,yFAAyF;AACzF,gFAAgF;AAChF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/mount.js CHANGED
@@ -18,7 +18,7 @@ import { createBrowserField } from '@fundamental-engine/platform';
18
18
  */
19
19
  export function assertBrowser() {
20
20
  if (typeof document === 'undefined' || typeof window === 'undefined') {
21
- throw new Error('field-ui: the field runs in the browser only. Create it on the client (inside ' +
21
+ throw new Error('Fundamental: the field runs in the browser only. Create it on the client (inside ' +
22
22
  'useEffect / onMount / a "client only" boundary), not during server-side rendering.');
23
23
  }
24
24
  }
package/dist/mount.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAuC,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAOlE;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,gFAAgF;YAC9E,oFAAoF,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAAsB,QAAQ,CAAC,IAAI;IACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,8BAA8B;IAC1E,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,2CAA2C;IACpF,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,UAAU,CAAC,OAAqB,EAAE;IAChD,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpD,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE,GAAG,EAAE;YACZ,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAuC,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAOlE;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,mFAAmF;YACjF,oFAAoF,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAAsB,QAAQ,CAAC,IAAI;IACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,8BAA8B;IAC1E,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,2CAA2C;IACpF,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,UAAU,CAAC,OAAqB,EAAE;IAChD,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpD,OAAO;QACL,GAAG,KAAK;QACR,OAAO,EAAE,GAAG,EAAE;YACZ,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-engine/vanilla",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "Framework-free TypeScript wrapper for Fundamental — the reciprocal DOM-physics field as a typed FieldField class + mountField(), with no custom-element registration and no framework dependency.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -47,8 +47,8 @@
47
47
  "access": "public"
48
48
  },
49
49
  "dependencies": {
50
- "@fundamental-engine/platform": "0.4.0",
51
- "@fundamental-engine/core": "0.4.0"
50
+ "@fundamental-engine/core": "0.5.1",
51
+ "@fundamental-engine/platform": "0.5.1"
52
52
  },
53
53
  "devDependencies": {
54
54
  "typescript": "^5.9.3"