@fundamental-engine/dom 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/browser-host.d.ts.map +1 -1
  2. package/dist/browser-host.js +4 -0
  3. package/dist/browser-host.js.map +1 -1
  4. package/dist/container-host.d.ts +12 -0
  5. package/dist/container-host.d.ts.map +1 -0
  6. package/dist/container-host.js +60 -0
  7. package/dist/container-host.js.map +1 -0
  8. package/dist/feedback.d.ts +21 -0
  9. package/dist/feedback.d.ts.map +1 -1
  10. package/dist/feedback.js +18 -0
  11. package/dist/feedback.js.map +1 -1
  12. package/dist/index.d.ts +4 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +4 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/lint.d.ts +55 -1
  17. package/dist/lint.d.ts.map +1 -1
  18. package/dist/lint.js +185 -1
  19. package/dist/lint.js.map +1 -1
  20. package/dist/perf.d.ts +31 -4
  21. package/dist/perf.d.ts.map +1 -1
  22. package/dist/perf.js +57 -4
  23. package/dist/perf.js.map +1 -1
  24. package/dist/register-properties.d.ts +25 -0
  25. package/dist/register-properties.d.ts.map +1 -0
  26. package/dist/register-properties.js +48 -0
  27. package/dist/register-properties.js.map +1 -0
  28. package/dist/text-bodies.d.ts +16 -5
  29. package/dist/text-bodies.d.ts.map +1 -1
  30. package/dist/text-bodies.js +37 -6
  31. package/dist/text-bodies.js.map +1 -1
  32. package/dist/worker/offthread-bridge.d.ts +17 -0
  33. package/dist/worker/offthread-bridge.d.ts.map +1 -0
  34. package/dist/worker/offthread-bridge.js +47 -0
  35. package/dist/worker/offthread-bridge.js.map +1 -0
  36. package/dist/worker/render-worker.d.ts +9 -0
  37. package/dist/worker/render-worker.d.ts.map +1 -0
  38. package/dist/worker/render-worker.js +43 -0
  39. package/dist/worker/render-worker.js.map +1 -0
  40. package/dist/x-ray.d.ts +14 -0
  41. package/dist/x-ray.d.ts.map +1 -0
  42. package/dist/x-ray.js +66 -0
  43. package/dist/x-ray.js.map +1 -0
  44. package/package.json +2 -2
package/dist/x-ray.js ADDED
@@ -0,0 +1,66 @@
1
+ export function mountXRay(field, container, opts = {}) {
2
+ const hotkey = opts.hotkey ?? '?';
3
+ const pos = opts.position ?? 'bottom-right';
4
+ let panel = null;
5
+ let rafId = null;
6
+ let cursorX = 0;
7
+ let cursorY = 0;
8
+ function positionStyle() {
9
+ const [v, h] = pos.split('-');
10
+ return `position:fixed;${v}:16px;${h}:16px;z-index:99999;`;
11
+ }
12
+ function tick() {
13
+ if (!panel)
14
+ return;
15
+ const n = field.particleCount();
16
+ const sample = field.sample?.(cursorX, cursorY);
17
+ const energy = field.energy?.();
18
+ panel.innerHTML = `
19
+ <div style="font:11px/1.4 monospace;color:#e2e8f0;padding:12px 14px;min-width:220px">
20
+ <div style="color:#a0c4ff;font-weight:700;margin-bottom:8px;letter-spacing:.04em">⊕ FIELD X-RAY</div>
21
+ <div>particles <b style="color:#ffd166">${n}</b></div>
22
+ ${energy ? `<div>kinetic <b style="color:#ffd166">${energy.kinetic.toFixed(3)}</b> thermal <b style="color:#ffd166">${energy.thermal.toFixed(3)}</b></div>` : ''}
23
+ ${sample ? `<div>force @ cursor fx <b style="color:#06d6a0">${sample.x.toFixed(3)}</b> fy <b style="color:#06d6a0">${sample.y.toFixed(3)}</b></div>` : ''}
24
+ <div style="margin-top:6px;color:#718096;font-size:10px">press ${hotkey} to close · move cursor for force probe</div>
25
+ </div>
26
+ `;
27
+ rafId = requestAnimationFrame(tick);
28
+ }
29
+ function open() {
30
+ if (panel)
31
+ return;
32
+ panel = document.createElement('div');
33
+ panel.setAttribute('data-field-xray', '');
34
+ panel.style.cssText = positionStyle() + 'background:rgba(10,15,28,.88);border:1px solid rgba(160,196,255,.18);border-radius:10px;backdrop-filter:blur(12px);box-shadow:0 8px 32px rgba(0,0,0,.5);';
35
+ document.body.appendChild(panel);
36
+ tick();
37
+ }
38
+ function close() {
39
+ if (rafId != null) {
40
+ cancelAnimationFrame(rafId);
41
+ rafId = null;
42
+ }
43
+ panel?.remove();
44
+ panel = null;
45
+ }
46
+ function onKey(e) {
47
+ const key = e.key;
48
+ if (key === hotkey) {
49
+ panel ? close() : open();
50
+ }
51
+ if (key === 'Escape')
52
+ close();
53
+ }
54
+ function onMove(e) {
55
+ cursorX = e.clientX;
56
+ cursorY = e.clientY;
57
+ }
58
+ container.addEventListener('keydown', onKey);
59
+ container.addEventListener('mousemove', onMove);
60
+ return () => {
61
+ close();
62
+ container.removeEventListener('keydown', onKey);
63
+ container.removeEventListener('mousemove', onMove);
64
+ };
65
+ }
66
+ //# sourceMappingURL=x-ray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x-ray.js","sourceRoot":"","sources":["../src/x-ray.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-engine/dom",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "The platform-adjacent layer for Fundamental — native-first registries for measurement, semantic state, feedback, relationships, visual-semantic bindings, and overlays. The browser primitives Fundamental wishes existed, built on the ones it has.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -46,7 +46,7 @@
46
46
  "access": "public"
47
47
  },
48
48
  "dependencies": {
49
- "@fundamental-engine/core": "0.7.0"
49
+ "@fundamental-engine/core": "0.9.0"
50
50
  },
51
51
  "devDependencies": {
52
52
  "typescript": "^5.9.3"